From 7956259ebb349cabf9a4aeea7e90c723211dd4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 21 Feb 2023 00:38:43 +0000 Subject: [PATCH 001/168] Support for generics (#1802) ***NO_CI*** --- src/CLR/Core/Execution.cpp | 6 +++++- src/CLR/Core/Hardware/Hardware.vcxproj | 2 +- src/CLR/Core/Hardware/Hardware_stub.vcxproj | 2 +- src/CLR/Core/Interpreter.cpp | 14 ++++++++------ .../InterruptHandler/InterruptHandler.vcxproj | 2 +- src/CLR/Core/TypeSystem.cpp | 18 +++++++++++++++++- src/CLR/Include/nanoCLR_Runtime.h | 2 +- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 14 +++++++++++--- targets/win32/nanoCLR.sln | 2 ++ 9 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index bb6b2c9e40..a0adc9144b 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -1799,7 +1799,11 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( while (true) { dt = CLR_UncompressElementType(sig); - + if (dt == + DATATYPE_VOID) // there should never have been a local variable of type void, unless it's generic type + { + dt = DATATYPE_OBJECT; + } switch (dt) { case DATATYPE_TYPE_PINNED: diff --git a/src/CLR/Core/Hardware/Hardware.vcxproj b/src/CLR/Core/Hardware/Hardware.vcxproj index 53c8814917..40bd3dfbc9 100644 --- a/src/CLR/Core/Hardware/Hardware.vcxproj +++ b/src/CLR/Core/Hardware/Hardware.vcxproj @@ -25,7 +25,7 @@ {5D50772E-DAC8-407D-972F-37DEB4450B72} Win32Proj Hardware - 10.0 + 10.0.18362.0 diff --git a/src/CLR/Core/Hardware/Hardware_stub.vcxproj b/src/CLR/Core/Hardware/Hardware_stub.vcxproj index dd4a7a2f3b..7e0766b8da 100644 --- a/src/CLR/Core/Hardware/Hardware_stub.vcxproj +++ b/src/CLR/Core/Hardware/Hardware_stub.vcxproj @@ -25,7 +25,7 @@ {31253D7F-147E-49A3-BC0D-E0ADE6CF040B} Win32Proj Hardware_stub - 10.0 + 10.0.18362.0 diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index ee6d267962..3bc154d678 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -2265,7 +2265,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_TypeDef_Instance type; CLR_RT_TypeDef_Index cls; - if (type.ResolveToken(arg, assm) == false) + if (type.ResolveToken(arg, assm, evalPos) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); @@ -2287,6 +2287,8 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_ProtectFromGC gc(safeSource); NANOCLR_CHECK_HRESULT(evalPos[0].LoadFromReference(safeSource)); + + NANOCLR_CHECK_HRESULT(evalPos[0].LoadFromReference(safeSource)); } goto Execute_LoadAndPromote; @@ -2697,7 +2699,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) FETCH_ARG_COMPRESSED_TYPETOKEN(arg, ip); CLR_RT_TypeDef_Instance typeInst; - if (typeInst.ResolveToken(arg, assm) == false) + if (typeInst.ResolveToken(arg, assm, evalPos) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); UPDATESTACK(stack, evalPos); @@ -2726,7 +2728,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // castclass typeTok. CLR_RT_TypeDef_Instance typeInst; - if (typeInst.ResolveToken(arg, assm) == false) + if (typeInst.ResolveToken(arg, assm, evalPos) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); UPDATESTACK(stack, evalPos); @@ -2877,7 +2879,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_TypeDef_Instance type; CLR_RT_TypeDef_Index cls; - if (!type.ResolveToken(arg, assm)) + if (!type.ResolveToken(arg, assm, evalPos)) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); @@ -3078,7 +3080,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) case TBL_TypeDef: { CLR_RT_TypeDef_Instance cls; - if (cls.ResolveToken(arg, assm) == false) + if (cls.ResolveToken(arg, assm, evalPos) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); evalPos[0].SetReflection(cls); @@ -3335,7 +3337,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) FETCH_ARG_COMPRESSED_TYPETOKEN(arg, ip); CLR_RT_TypeDef_Instance clsInst; - if (clsInst.ResolveToken(arg, assm) == false) + if (clsInst.ResolveToken(arg, assm, evalPos) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_INT32 len; diff --git a/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj b/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj index 8338d193d7..9820651de6 100644 --- a/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj +++ b/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj @@ -25,7 +25,7 @@ {D32EE397-7E49-452D-AC95-AFCB3C962E3D} Win32Proj InterruptHandler - 10.0 + 10.0.18362.0 diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index eccf4fe42f..8469f21dd5 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -694,7 +694,9 @@ void CLR_RT_TypeDef_Instance::Clear() m_target = NULL; } -bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) +// if type token is not generic, we are going to resolve from the assembly else from the heapblock that may contains +// generic parameter +bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_HeapBlock *sampleData) { NATIVE_PROFILE_CLR_CORE(); if (assm) @@ -717,6 +719,20 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) return true; default: + // handle generic type from provided data + if (sampleData != NULL) + { + CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetTypeDef(Type()); + } + else + { + m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; + m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); + } + return true; // the remaining data types aren't to be handled break; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 3086011eb8..0e04bb4995 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1898,7 +1898,7 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index void Clear(); - bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); + bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_HeapBlock *sampleData = NULL); //--// diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index dbf044777f..008acd5393 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -763,6 +763,7 @@ struct CLR_RT_HeapBlock { return (CLR_DataType)m_id.type.dataType; } + CLR_UINT8 DataFlags() const { return m_id.type.flags; @@ -1002,12 +1003,17 @@ struct CLR_RT_HeapBlock { CLR_RT_HeapBlock *obj; + // If already a ref type, dereference it + if (dst.DataType() == DATATYPE_BYREF) + { + obj = dst.Dereference(); + } // // ValueTypes are implemented as pointers to objects, // so getting a reference to a ValueType has to be treated like getting a reference to object, not to its // holder! // - if (dst.IsAValueType()) + else if (dst.IsAValueType()) { obj = dst.Dereference(); } @@ -1242,8 +1248,10 @@ struct CLR_RT_HeapBlock this->m_data = value.m_data; - if (this->DataType() > DATATYPE_LAST_PRIMITIVE_TO_PRESERVE) - this->m_id = value.m_id; + if (DataType() > DATATYPE_LAST_PRIMITIVE_TO_PRESERVE) + { + this->m_id = value.m_id; // FIX: handle generic type + } } void AssignPreserveTypeCheckPinned(const CLR_RT_HeapBlock &value) diff --git a/targets/win32/nanoCLR.sln b/targets/win32/nanoCLR.sln index 1d37ccbd37..10246db97a 100644 --- a/targets/win32/nanoCLR.sln +++ b/targets/win32/nanoCLR.sln @@ -76,6 +76,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Gpio", "..\.. EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Runtime.Serialization", "..\..\src\System.Runtime.Serialization\System.Runtime.Serialization.vcxproj", "{C9264D0A-AC25-46B0-BD08-4A3252427F19}" EndProject +Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.System.Threading", "..\..\..\..\nanoframework\lib-nanoFramework.System.Threading\nanoFramework.System.Threading\nanoFramework.System.Threading.nfproj", "{A8146E83-014A-4570-A2F9-8B8BE68CFD7B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU From 7dbe14f3026b5dffbc7025243ec4a2233436c562 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Tue, 29 Dec 2020 12:41:00 +0000 Subject: [PATCH 002/168] Add generic related flags to methoddef flags --- src/CLR/Include/nanoCLR_Types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index 284dea020d..a833605d67 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -1198,6 +1198,9 @@ struct CLR_RECORD_METHODDEF static const CLR_UINT32 MD_DelegateBeginInvoke = 0x00040000; static const CLR_UINT32 MD_DelegateEndInvoke = 0x00080000; + static const CLR_UINT32 MD_ContainsGenericParameter = 0x00100000; + static const CLR_UINT32 MD_HasGenericParameter = 0x00200000; + static const CLR_UINT32 MD_Synchronized = 0x01000000; static const CLR_UINT32 MD_GloballySynchronized = 0x02000000; static const CLR_UINT32 MD_Patched = 0x04000000; From 46c1b6257e51f53b012f59771dbc43c5ede42a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Feb 2023 10:51:15 +0000 Subject: [PATCH 003/168] Add test app for generics --- .../TestApplication/NF.TestApplication.nfproj | 42 ++++++ .../win32/netnf/TestApplication/Program.cs | 127 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 33 +++++ .../netnf/TestApplication/TestApplication.sln | 25 ++++ .../netnf/TestApplication/packages.config | 5 + 5 files changed, 232 insertions(+) create mode 100644 targets/win32/netnf/TestApplication/NF.TestApplication.nfproj create mode 100644 targets/win32/netnf/TestApplication/Program.cs create mode 100644 targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs create mode 100644 targets/win32/netnf/TestApplication/TestApplication.sln create mode 100644 targets/win32/netnf/TestApplication/packages.config diff --git a/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj b/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj new file mode 100644 index 0000000000..e8ffb2c55d --- /dev/null +++ b/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj @@ -0,0 +1,42 @@ + + + + $(MSBuildExtensionsPath)\nanoFramework\v1.0\ + + + + Debug + AnyCPU + {11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 247f9798-e240-4d5b-956d-35e5ead21ce2 + Exe + Properties + 512 + TestApplication + TestApplication + v1.0 + TestApplication + + + + + + + + + packages\nanoFramework.CoreLibrary.1.14.2\lib\mscorlib.dll + + + packages\nanoFramework.System.Threading.1.1.19\lib\System.Threading.dll + + + + + + + + + + + + \ No newline at end of file diff --git a/targets/win32/netnf/TestApplication/Program.cs b/targets/win32/netnf/TestApplication/Program.cs new file mode 100644 index 0000000000..c71380c295 --- /dev/null +++ b/targets/win32/netnf/TestApplication/Program.cs @@ -0,0 +1,127 @@ +using System; +using System.Diagnostics; +using System.Threading; + +namespace NF.TestApplication_NEW +{ + public class Program + { + public interface TInt + { + void Do1(); + void Do2(); + } + + public static void StaticGenericDo(T1 val, T2 val2) where T1:TInt where T2 : TInt + { + Debug.WriteLine("Doing things"); + val.Do1(); + val.Do2(); + val2.Do1(); + val2.Do2(); + } + + public class IntDo : TInt + { + public void Do1() + { + Debug.WriteLine("Int::Do1"); + } + + public void Do2() + { + Debug.WriteLine("Int::Do2"); + } + } + + public class StringDo : TInt + { + public void Do1() + { + Debug.WriteLine("String::Do1"); + } + + public void Do2() + { + Debug.WriteLine("String::Do1"); + } + } + + static Task B() + { + Debug.WriteLine("B"); + return new Task(() => + { + Debug.WriteLine("B:Task"); + for (int i = 0; i < 10000; i++) + { + } + Debug.WriteLine("B:Done"); + }); + } + + static Task C() + { + Debug.WriteLine("C"); + var task = new Task(() => + { + Debug.WriteLine("C:Long Task"); + for (int i = 0; i < 1000000; i++) + { + } + Debug.WriteLine("C:Done"); + return 1; + }); + //Debug.WriteLine("C:End"); + //var task = Task.FromResult(1); + Debug.WriteLine("C:Ret"); + return task; + } + + static async void AsyncTest() + { + //await B(); + //await B(); + Debug.WriteLine("XXX"); + var t = C(); + Debug.WriteLine("Got C"); + var c = await t; + Debug.WriteLine($"Result {c}"); + } + + + class GenericClass + { + public void InstanceGenericDo(T t) + { + T t2 = t; + Debug.WriteLine($"TClassDo {t2}"); + } + + public void InstanceGenericDo2(T t, T2 t2) + { + T _t = t; + Debug.WriteLine($"TClassDo {_t} {t2}"); + } + } + + public static void Main() + { + Debug.WriteLine("Hello"); + var m = new GenericClass(); + m.InstanceGenericDo(1); + m.InstanceGenericDo2(1, "OK"); + var m2 = new GenericClass(); + m2.InstanceGenericDo("OK"); + m2.InstanceGenericDo2("OK", "Now"); + StaticGenericDo(new IntDo(), new StringDo()); + StaticGenericDo(new StringDo(), new IntDo()); + Debug.WriteLine("World"); + AsyncTest(); + while (true) + { + Thread.Sleep(1000); + } + } + } +} diff --git a/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs b/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..262254df74 --- /dev/null +++ b/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CSharp.BlankApplication")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CSharp.BlankApplication")] +[assembly: AssemblyCopyright("Copyright © ")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/targets/win32/netnf/TestApplication/TestApplication.sln b/targets/win32/netnf/TestApplication/TestApplication.sln new file mode 100644 index 0000000000..7f7c627f1e --- /dev/null +++ b/targets/win32/netnf/TestApplication/TestApplication.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2003 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "NF.TestApplication", "NF.TestApplication.nfproj", "{247F9798-E240-4D5B-956D-35E5EAD21CE2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {62117BDC-3FD8-42D4-9171-A4B4F12F46BB} + EndGlobalSection +EndGlobal diff --git a/targets/win32/netnf/TestApplication/packages.config b/targets/win32/netnf/TestApplication/packages.config new file mode 100644 index 0000000000..cf3f8184b3 --- /dev/null +++ b/targets/win32/netnf/TestApplication/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From aec989ccc7c9282c6eccd9758a541d365aac5526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Feb 2023 10:51:31 +0000 Subject: [PATCH 004/168] Fix VCX projects --- src/CLR/Core/Hardware/Hardware.vcxproj | 2 +- src/CLR/Core/Hardware/Hardware_stub.vcxproj | 2 +- src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/Hardware/Hardware.vcxproj b/src/CLR/Core/Hardware/Hardware.vcxproj index 40bd3dfbc9..53c8814917 100644 --- a/src/CLR/Core/Hardware/Hardware.vcxproj +++ b/src/CLR/Core/Hardware/Hardware.vcxproj @@ -25,7 +25,7 @@ {5D50772E-DAC8-407D-972F-37DEB4450B72} Win32Proj Hardware - 10.0.18362.0 + 10.0 diff --git a/src/CLR/Core/Hardware/Hardware_stub.vcxproj b/src/CLR/Core/Hardware/Hardware_stub.vcxproj index 7e0766b8da..dd4a7a2f3b 100644 --- a/src/CLR/Core/Hardware/Hardware_stub.vcxproj +++ b/src/CLR/Core/Hardware/Hardware_stub.vcxproj @@ -25,7 +25,7 @@ {31253D7F-147E-49A3-BC0D-E0ADE6CF040B} Win32Proj Hardware_stub - 10.0.18362.0 + 10.0 diff --git a/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj b/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj index 9820651de6..8338d193d7 100644 --- a/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj +++ b/src/CLR/Core/InterruptHandler/InterruptHandler.vcxproj @@ -25,7 +25,7 @@ {D32EE397-7E49-452D-AC95-AFCB3C962E3D} Win32Proj InterruptHandler - 10.0.18362.0 + 10.0 From a4b7b2978285a8937ba0a9e6366bcf2889640814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 27 Feb 2023 16:57:51 +0000 Subject: [PATCH 005/168] Migrate test app to VS2022 --- targets/win32/netnf/TestApplication/TestApplication.sln | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/win32/netnf/TestApplication/TestApplication.sln b/targets/win32/netnf/TestApplication/TestApplication.sln index 7f7c627f1e..85e8689ea3 100644 --- a/targets/win32/netnf/TestApplication/TestApplication.sln +++ b/targets/win32/netnf/TestApplication/TestApplication.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2003 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33213.308 MinimumVisualStudioVersion = 10.0.40219.1 Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "NF.TestApplication", "NF.TestApplication.nfproj", "{247F9798-E240-4D5B-956D-35E5EAD21CE2}" EndProject From 9633a89e6a0fd5178e6ece6e613266375c5b564d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Feb 2023 19:40:55 +0000 Subject: [PATCH 006/168] WIP resuming generics implementation on CLR --- CMake/Modules/FindNF_CoreCLR.cmake | 1 + src/CLR/CorLib/corlib_native.h | 8 +- .../CorLib/corlib_native_System_AppDomain.cpp | 12 +- .../CorLib/corlib_native_System_DateTime.cpp | 2 +- .../CorLib/corlib_native_System_Exception.cpp | 2 +- .../CorLib/corlib_native_System_Number.cpp | 36 +- .../CorLib/corlib_native_System_Object.cpp | 45 +- ...rlib_native_System_Reflection_Assembly.cpp | 36 +- ...tive_System_Reflection_ConstructorInfo.cpp | 32 +- ...lib_native_System_Reflection_FieldInfo.cpp | 4 +- ...ib_native_System_Reflection_MethodBase.cpp | 16 +- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 4 +- .../corlib_native_System_RuntimeType.cpp | 10 +- ...untime_CompilerServices_RuntimeHelpers.cpp | 4 +- ...ib_native_System_Threading_Interlocked.cpp | 49 +- .../CorLib/corlib_native_System_TimeSpan.cpp | 2 +- src/CLR/CorLib/corlib_native_System_Type.cpp | 58 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 56 +- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 4 +- src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp | 47 +- .../Core/CLR_RT_HeapBlock_GenericInstance.cpp | 80 + src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp | 8 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 124 +- src/CLR/Core/Cache.cpp | 53 +- src/CLR/Core/Core.vcxproj | 1 + src/CLR/Core/Core.vcxproj.filters | 3 + src/CLR/Core/Execution.cpp | 341 ++- src/CLR/Core/GarbageCollector.cpp | 8 +- src/CLR/Core/Interpreter.cpp | 97 +- .../NativeEventDispatcher.cpp | 2 +- .../Core/Serialization/BinaryFormatter.cpp | 149 +- .../Serialization/BinaryFormatter_stub.cpp | 18 +- src/CLR/Core/StringTable.cpp | 4 +- src/CLR/Core/Thread.cpp | 140 +- src/CLR/Core/TypeSystem.cpp | 2631 ++++++++++++----- src/CLR/Core/TypeSystemLookup.cpp | 116 +- src/CLR/Core/Various.cpp | 1 - src/CLR/Core/corhdr_private.h | 83 +- src/CLR/Debugger/Debugger.cpp | 191 +- src/CLR/Diagnostics/Diagnostics_stub.cpp | 3 +- src/CLR/Diagnostics/Info.cpp | 93 +- src/CLR/Diagnostics/Profiler.cpp | 622 ++-- src/CLR/Include/nanoCLR_Checks.h | 45 +- src/CLR/Include/nanoCLR_Debugging.h | 22 +- src/CLR/Include/nanoCLR_Interop.h | 2 +- src/CLR/Include/nanoCLR_Profiling.h | 108 +- src/CLR/Include/nanoCLR_Runtime.h | 636 ++-- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 56 +- .../Include/nanoCLR_Runtime__Serialization.h | 10 +- src/CLR/Include/nanoCLR_Types.h | 791 +++-- 50 files changed, 4611 insertions(+), 2255 deletions(-) create mode 100644 src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp diff --git a/CMake/Modules/FindNF_CoreCLR.cmake b/CMake/Modules/FindNF_CoreCLR.cmake index 16ee80a699..0021d6648e 100644 --- a/CMake/Modules/FindNF_CoreCLR.cmake +++ b/CMake/Modules/FindNF_CoreCLR.cmake @@ -48,6 +48,7 @@ set(NF_CoreCLR_SRCS CLR_RT_HeapBlock_Delegate.cpp CLR_RT_HeapBlock_Delegate_List.cpp CLR_RT_HeapBlock_Finalizer.cpp + CLR_RT_HeapBlock_GenericInstance.cpp CLR_RT_HeapBlock_Lock.cpp CLR_RT_HeapBlock_LockRequest.cpp CLR_RT_HeapBlock_Node.cpp diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index 6de45a15b2..d5ae059679 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -676,16 +676,16 @@ struct Library_corlib_native_System_Number static bool ValidateFormatChar(char *formatChar, bool isInteger); static bool GetFormatSpec(char *format, bool isInteger, char *formatChar, int *precision); static int DoPrintfOnDataType(char *buffer, char *formatStr, CLR_RT_HeapBlock *value); - static bool IsSignedIntegerDataType(CLR_DataType dataType); - static bool IsUnsignedIntegerDataType(CLR_DataType dataType); - static bool IsIntegerDataType(CLR_DataType dataType); + static bool IsSignedIntegerDataType(NanoCLRDataType dataType); + static bool IsUnsignedIntegerDataType(NanoCLRDataType dataType); + static bool IsIntegerDataType(NanoCLRDataType dataType); static int GetStrLen(char *buffer); static int GetDotIndex(char *buffer, int bufferContentLength); static void RoundUpNumStr(char *buffer, int *bufferContentLength); static int ReplaceNegativeSign(char *buffer, int bufferContentLength, char *negativeSign); static int ReplaceDecimalSeparator(char *buffer, int bufferContentLength, char *decimalSeparator); static int InsertGroupSeparators(char *buffer, int bufferContentLength, int groupSize, char *groupSep); - static const char *GetPrintfLengthModifier(CLR_DataType dataType); + static const char *GetPrintfLengthModifier(NanoCLRDataType dataType); static int Format_G( char *buffer, CLR_RT_HeapBlock *value, diff --git a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp index 5510462787..1464125153 100644 --- a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp +++ b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp @@ -37,7 +37,7 @@ HRESULT Library_corlib_native_System_AppDomain:: CLR_RT_AppDomain *appDomainSav; CLR_RT_AppDomain *appDomain; CLR_RT_Assembly *assembly; - CLR_RT_Assembly_Index idx; + CLR_RT_Assembly_Index index; bool fVersion; CLR_INT16 maj, min, build, rev; const char *szAssembly; @@ -81,12 +81,12 @@ HRESULT Library_corlib_native_System_AppDomain:: CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - idx.Set(assembly->m_idx); + index.Set(assembly->m_index); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = top.Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); } NANOCLR_CLEANUP(); @@ -272,14 +272,14 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe else { CLR_RT_HeapBlock *hbObj; - CLR_RT_Assembly_Index idx; - idx.Set(pASSM->m_idx); + CLR_RT_Assembly_Index index; + index.Set(pASSM->m_index); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = pArray->Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); pArray++; } diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 2399e39773..665f7de388 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -219,7 +219,7 @@ CLR_INT64* Library_corlib_native_System_DateTime::GetValuePtr( CLR_RT_HeapBlock& { NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock* obj = &ref; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); if(dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF) { diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index 4cc1caff22..bb2841964e 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -77,7 +77,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S strName = &buf[0]; iName = MAXSTRLEN(buf) - 2; - NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.BuildMethodName(pStackTrace->m_md, strName, iName)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.BuildMethodName(pStackTrace->m_md, NULL, strName, iName)); memcpy(strName, "\r\n\0", 3); diff --git a/src/CLR/CorLib/corlib_native_System_Number.cpp b/src/CLR/CorLib/corlib_native_System_Number.cpp index 7f18a4d786..a58bfe180e 100644 --- a/src/CLR/CorLib/corlib_native_System_Number.cpp +++ b/src/CLR/CorLib/corlib_native_System_Number.cpp @@ -95,7 +95,7 @@ int Library_corlib_native_System_Number::DoPrintfOnDataType(char *buffer, char * { int ret = -1; - CLR_DataType dataType = value->DataType(); + NanoCLRDataType dataType = value->DataType(); switch (dataType) { @@ -141,33 +141,31 @@ int Library_corlib_native_System_Number::DoPrintfOnDataType(char *buffer, char * return ret; } -const char *Library_corlib_native_System_Number::GetPrintfLengthModifier(CLR_DataType dataType) +const char *Library_corlib_native_System_Number::GetPrintfLengthModifier(NanoCLRDataType dataType) { - const char *ret = (dataType == DATATYPE_I1 || dataType == DATATYPE_U1) - ? "hh" - : (dataType == DATATYPE_I2 || dataType == DATATYPE_U2) - ? "h" - : (dataType == DATATYPE_I4 || dataType == DATATYPE_U4) - ? "" - : (dataType == DATATYPE_I8 || dataType == DATATYPE_U8) ? "ll" : ""; + const char *ret = (dataType == DATATYPE_I1 || dataType == DATATYPE_U1) ? "hh" + : (dataType == DATATYPE_I2 || dataType == DATATYPE_U2) ? "h" + : (dataType == DATATYPE_I4 || dataType == DATATYPE_U4) ? "" + : (dataType == DATATYPE_I8 || dataType == DATATYPE_U8) ? "ll" + : ""; return ret; } -bool Library_corlib_native_System_Number::IsSignedIntegerDataType(CLR_DataType dataType) +bool Library_corlib_native_System_Number::IsSignedIntegerDataType(NanoCLRDataType dataType) { bool ret = (dataType == DATATYPE_I1 || dataType == DATATYPE_I2 || dataType == DATATYPE_I4 || dataType == DATATYPE_I8); return ret; } -bool Library_corlib_native_System_Number::IsUnsignedIntegerDataType(CLR_DataType dataType) +bool Library_corlib_native_System_Number::IsUnsignedIntegerDataType(NanoCLRDataType dataType) { bool ret = (dataType == DATATYPE_U1 || dataType == DATATYPE_U2 || dataType == DATATYPE_U4 || dataType == DATATYPE_U8); return ret; } -bool Library_corlib_native_System_Number::IsIntegerDataType(CLR_DataType dataType) +bool Library_corlib_native_System_Number::IsIntegerDataType(NanoCLRDataType dataType) { bool ret = IsSignedIntegerDataType(dataType) || IsUnsignedIntegerDataType(dataType); return ret; @@ -338,7 +336,7 @@ int Library_corlib_native_System_Number::Format_G( { int ret = -1; - CLR_DataType dataType = value->DataType(); + NanoCLRDataType dataType = value->DataType(); bool isIntegerDataType = IsIntegerDataType(dataType); @@ -392,7 +390,9 @@ int Library_corlib_native_System_Number::Format_G( "%%%s%s%c", (isIntegerDataType) ? "" : nonIntegerPrecStr, (isIntegerDataType) ? GetPrintfLengthModifier(dataType) : "", - (!isIntegerDataType) ? 'f' : (IsSignedIntegerDataType(dataType)) ? 'd' : 'u'); + (!isIntegerDataType) ? 'f' + : (IsSignedIntegerDataType(dataType)) ? 'd' + : 'u'); ret = DoPrintfOnDataType(buffer, formatStr, value); if (ret > 0) @@ -501,7 +501,7 @@ int Library_corlib_native_System_Number::Format_D( { int ret = -1; - CLR_DataType dataType = value->DataType(); + NanoCLRDataType dataType = value->DataType(); if (precision == -1) { @@ -576,7 +576,7 @@ int Library_corlib_native_System_Number::Format_F( // NF at the moment } - CLR_DataType dataType = value->DataType(); + NanoCLRDataType dataType = value->DataType(); bool isIntegerDataType = IsIntegerDataType(dataType); @@ -587,7 +587,9 @@ int Library_corlib_native_System_Number::Format_F( "%%0.%d%s%c", precision, (isIntegerDataType) ? GetPrintfLengthModifier(dataType) : "", - (!isIntegerDataType) ? 'f' : (IsSignedIntegerDataType(dataType)) ? 'd' : 'u'); + (!isIntegerDataType) ? 'f' + : (IsSignedIntegerDataType(dataType)) ? 'd' + : 'u'); ret = DoPrintfOnDataType(buffer, formatStr, value); if (ret > 0) diff --git a/src/CLR/CorLib/corlib_native_System_Object.cpp b/src/CLR/CorLib/corlib_native_System_Object.cpp index b20abd98e9..8a55e7a721 100644 --- a/src/CLR/CorLib/corlib_native_System_Object.cpp +++ b/src/CLR/CorLib/corlib_native_System_Object.cpp @@ -5,64 +5,63 @@ // #include "CorLib.h" - //--// -HRESULT Library_corlib_native_System_Object::Equals___BOOLEAN__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Object::Equals___BOOLEAN__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_Boolean( CLR_RT_HeapBlock::ObjectsEqual( stack.Arg0(), stack.Arg1(), true ) ); + stack.SetResult_Boolean(CLR_RT_HeapBlock::ObjectsEqual(stack.Arg0(), stack.Arg1(), true)); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_Object::GetHashCode___I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Object::GetHashCode___I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_I4( CLR_RT_HeapBlock::GetHashCode( stack.This(), true, 0 ) ); + stack.SetResult_I4(CLR_RT_HeapBlock::GetHashCode(stack.This(), true, 0)); NANOCLR_NOCLEANUP_NOLABEL(); } #if (NANOCLR_REFLECTION == TRUE) -HRESULT Library_corlib_native_System_Object::GetType___SystemType( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Object::GetType___SystemType(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDescriptor desc; - CLR_RT_ReflectionDef_Index idx; - CLR_RT_HeapBlock& arg0 = stack.Arg0(); - CLR_RT_HeapBlock* pObj; + CLR_RT_ReflectionDef_Index index; + CLR_RT_HeapBlock &arg0 = stack.Arg0(); + CLR_RT_HeapBlock *pObj; - NANOCLR_CHECK_HRESULT(desc.InitializeFromObject( arg0 )); + NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(arg0)); pObj = arg0.Dereference(); - if(pObj && arg0.DataType() == DATATYPE_REFLECTION) + if (pObj && arg0.DataType() == DATATYPE_REFLECTION) { - idx.m_kind = REFLECTION_TYPE; - idx.m_levels = 0; - idx.m_data.m_type.m_data = desc.m_handlerCls.m_data; + index.m_kind = REFLECTION_TYPE; + index.m_levels = 0; + index.m_data.m_type.m_data = desc.m_handlerCls.m_data; } else { - idx = desc.m_reflex; + index = desc.m_reflex; } { - CLR_RT_HeapBlock& top = stack.PushValue(); - CLR_RT_HeapBlock* hbObj; + CLR_RT_HeapBlock &top = stack.PushValue(); + CLR_RT_HeapBlock *hbObj; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); - + hbObj = top.Dereference(); - hbObj->SetReflection( idx ); + hbObj->SetReflection(index); } NANOCLR_NOCLEANUP(); @@ -70,22 +69,22 @@ HRESULT Library_corlib_native_System_Object::GetType___SystemType( CLR_RT_StackF #endif // NANOCLR_REFLECTION -HRESULT Library_corlib_native_System_Object::MemberwiseClone___OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Object::MemberwiseClone___OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(g_CLR_RT_ExecutionEngine.CloneObject( stack.PushValueAndClear(), stack.Arg0() )); + NANOCLR_SET_AND_LEAVE(g_CLR_RT_ExecutionEngine.CloneObject(stack.PushValueAndClear(), stack.Arg0())); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Object::ReferenceEquals___STATIC__BOOLEAN__OBJECT__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Object::ReferenceEquals___STATIC__BOOLEAN__OBJECT__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_Boolean( CLR_RT_HeapBlock::ObjectsEqual( stack.Arg0(), stack.Arg1(), true ) ); + stack.SetResult_Boolean(CLR_RT_HeapBlock::ObjectsEqual(stack.Arg0(), stack.Arg1(), true)); NANOCLR_NOCLEANUP_NOLABEL(); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 14fd5a0e43..0f7321508f 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -27,9 +27,8 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } - snprintf( + sprintf( buffer, - ARRAYSIZE(buffer), "%s, Version=%d.%d.%d.%d", assm->m_szName, header->version.iMajorVersion, @@ -98,14 +97,14 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys for (CLR_UINT32 i = 0; i < num; i++, pArray++) { - CLR_RT_TypeDef_Index idx; - idx.Set(pASSM->m_idx, i); + CLR_RT_TypeDef_Index index; + index.Set(pASSM->m_index, i); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_TypeStatic)); hbObj = pArray->Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); } } } @@ -165,9 +164,10 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam { CLR_RT_HeapBlock *pArray = (CLR_RT_HeapBlock *)result.Array()->GetFirstElement(); - for (int idxResourceFile = 0; idxResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; idxResourceFile++) + for (int indexResourceFile = 0; indexResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; + indexResourceFile++) { - const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(idxResourceFile); + const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(indexResourceFile); NANOCLR_CHECK_HRESULT( CLR_RT_HeapBlock_String::CreateInstance(*pArray, pAssm->GetString(resourceFile->name))); @@ -194,13 +194,13 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetExecutingAssembly__ NANOCLR_SET_AND_LEAVE(S_OK); { - CLR_RT_Assembly_Index idx; - idx.Set(caller->MethodCall().m_assm->m_idx); + CLR_RT_Assembly_Index index; + index.Set(caller->MethodCall().m_assm->m_index); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = top.Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); } NANOCLR_NOCLEANUP(); @@ -219,7 +219,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: CLR_RT_HeapBlock *hbObj; CLR_RT_Assembly *assembly; const char *szAssembly; - CLR_RT_Assembly_Index idx; + CLR_RT_Assembly_Index index; bool fVersion; CLR_INT16 maj, min, build, rev; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); @@ -258,12 +258,12 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: #if defined(NANOCLR_APPDOMAINS) NANOCLR_CHECK_HRESULT(appDomain->LoadAssembly(assembly)); #endif - idx.Set(assembly->m_idx); + index.Set(assembly->m_index); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = top.Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); NANOCLR_CLEANUP(); @@ -306,14 +306,6 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR { if (header->GoodAssembly()) { - // - // Sorry, you'll have to reboot to load this assembly. - // - if (header->flags & CLR_RECORD_ASSEMBLY::c_Flags_NeedReboot) - { - NANOCLR_SET_AND_LEAVE(CLR_E_BUSY); - } - NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); assm->m_pFile = array; @@ -324,7 +316,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.PrepareForExecution()); CLR_RT_MethodDef_Index idx; - idx.Set(assm->m_idx, 0); + idx.Set(assm->m_index, 0); if (assm->FindNextStaticConstructor(idx)) { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp index 3e38c856e9..32b1c52014 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp @@ -5,8 +5,8 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::GetCustomAttributes___SZARRAY_OBJECT__BOOLEAN( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::GetCustomAttributes___SZARRAY_OBJECT__BOOLEAN( + CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); @@ -15,31 +15,33 @@ HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::GetCustomAttrib NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT__SZARRAY_OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT__SZARRAY_OBJECT( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* thisRef = stack.ThisRef().Dereference(); - CLR_RT_MethodDef_Instance md; - CLR_RT_HeapBlock_Array* pArray = stack.Arg1().DereferenceArray(); - CLR_RT_HeapBlock* args = NULL; - int numArgs = 0; + CLR_RT_HeapBlock *thisRef = stack.ThisRef().Dereference(); + CLR_RT_MethodDef_Instance md; + CLR_RT_HeapBlock_Array *pArray = stack.Arg1().DereferenceArray(); + CLR_RT_HeapBlock *args = NULL; + int ArgumentsCount = 0; - if(md.InitializeFromIndex( thisRef->ReflectionDataConst().m_data.m_method ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); + if (md.InitializeFromIndex(thisRef->ReflectionDataConst().m_data.m_method) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); - if(stack.m_customState == 0) + if (stack.m_customState == 0) { stack.m_customState = 1; - if(pArray) + if (pArray) { - args = (CLR_RT_HeapBlock*)pArray->GetFirstElement(); - numArgs = pArray->m_numOfElements; + args = (CLR_RT_HeapBlock *)pArray->GetFirstElement(); + ArgumentsCount = pArray->m_numOfElements; } - NANOCLR_CHECK_HRESULT(stack.MakeCall( md, NULL, args, numArgs )); - } + NANOCLR_CHECK_HRESULT(stack.MakeCall(md, NULL, args, ArgumentsCount)); + } NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index e63233358c..0f5595eb31 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -27,7 +27,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJE fd = instFD.m_target; - if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + if(fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } @@ -100,7 +100,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( CLR_RT_St NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if(instFD.m_target->flags & CLR_RECORD_FIELDDEF::FD_Static) + if(instFD.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) { obj = CLR_RT_ExecutionEngine::AccessStaticField( instFD ); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 84748bf7d5..89620d358d 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -15,7 +15,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::get_Name___STRING(CL NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.PushValue(), md.m_target->name, md.m_assm)); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.PushValue(), md.m_target->Name, md.m_assm)); NANOCLR_NOCLEANUP(); } @@ -109,7 +109,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ const CLR_RECORD_METHODDEF *mdR; CLR_RT_HeapBlock_Array *pArray = stack.Arg2().DereferenceArray(); CLR_RT_HeapBlock *args = NULL; - int numArgs = 0; + int ArgumentsCount = 0; CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); @@ -123,18 +123,18 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ if (pArray) { args = (CLR_RT_HeapBlock *)pArray->GetFirstElement(); - numArgs = pArray->m_numOfElements; + ArgumentsCount = pArray->m_numOfElements; } - NANOCLR_CHECK_HRESULT(stack.MakeCall(md, &obj, args, numArgs)); + NANOCLR_CHECK_HRESULT(stack.MakeCall(md, &obj, args, ArgumentsCount)); } else { - if (mdR->retVal != DATATYPE_VOID) + if (mdR->RetVal != DATATYPE_VOID) { - if (mdR->retVal < DATATYPE_I4) + if (mdR->RetVal < DATATYPE_I4) { - stack.TopValue().ChangeDataType(mdR->retVal); + stack.TopValue().ChangeDataType(mdR->RetVal); } NANOCLR_CHECK_HRESULT(stack.TopValue().PerformBoxingIfNeeded()); @@ -175,7 +175,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::CheckFlags( NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); - if ((md.m_target->flags & mask) == flag) + if ((md.m_target->Flags & mask) == flag) { fRes = true; } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index afc06eb12f..5823d1456f 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -14,7 +14,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STR CLR_RT_FieldDef_Instance fd; if(GetFieldDescriptor( stack, *hbField, fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), fd.m_target->name, fd.m_assm )); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), fd.m_target->Name, fd.m_assm )); NANOCLR_NOCLEANUP(); } @@ -84,7 +84,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJ NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize( stack, instFD, instTD, obj )); fd = instFD.m_target; - if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + if(fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index 73f6f4c0f7..f49ec9f67c 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -16,14 +16,14 @@ HRESULT Library_corlib_native_System_RuntimeType::get_Assembly___SystemReflectio NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbType, td, NULL)); { - CLR_RT_Assembly_Index idx; - idx.Set(td.Assembly()); + CLR_RT_Assembly_Index index; + index.Set(td.Assembly()); CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = top.Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); } NANOCLR_NOCLEANUP(); @@ -148,7 +148,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*ptr, g_CLR_RT_WellKnownTypes.m_TypeStatic)); hbObj = ptr->Dereference(); - hbObj->SetReflection(res.m_cls); + hbObj->SetReflection(res.Class); ptr++; count--; @@ -379,7 +379,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributes( // get the type for the class object // the assembly has to be the instance type CLR_RT_MethodDef_Index md; - md.Set(instanceTypeDef.m_assm->m_idx, parser.m_mdIdx.Method()); + md.Set(instanceTypeDef.m_assm->m_index, parser.m_mdIndex.Method()); CLR_RT_MethodDef_Instance mdInst; mdInst.InitializeFromIndex(md); diff --git a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp index 4bb211e949..0afbee779c 100644 --- a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp +++ b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp @@ -24,13 +24,13 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::In NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if((inst.m_target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || inst.m_target->defaultValue == CLR_EmptyIndex) + if((inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || inst.m_target->DefaultValue == CLR_EmptyIndex) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } { - CLR_PMETADATA ptrSrc = inst.m_assm->GetSignature( inst.m_target->defaultValue ); + CLR_PMETADATA ptrSrc = inst.m_assm->GetSignature( inst.m_target->DefaultValue ); CLR_UINT32 lenSrc; NANOCLR_READ_UNALIGNED_UINT16( lenSrc, ptrSrc ); CLR_UINT8* ptrDst = array->GetFirstElement(); diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp index 87a11fae4f..f68d570fd4 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp @@ -5,88 +5,87 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Threading_Interlocked::Increment___STATIC__I4__BYREF_I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Interlocked::Increment___STATIC__I4__BYREF_I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference( stack.Arg0() )); + NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; - + // Increment the value passed by reference location++; - SetResult_INT32( stack, location ); + SetResult_INT32(stack, location); - NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference( stack.Arg0(), 0 )); + NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference(stack.Arg0(), 0)); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Threading_Interlocked::Decrement___STATIC__I4__BYREF_I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Interlocked::Decrement___STATIC__I4__BYREF_I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference( stack.Arg0() )); + NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; - + // Decrement the value passed by reference location--; - SetResult_INT32( stack, location ); + SetResult_INT32(stack, location); - NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference( stack.Arg0(), 0 )); + NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference(stack.Arg0(), 0)); } NANOCLR_NOCLEANUP(); } - -HRESULT Library_corlib_native_System_Threading_Interlocked::Exchange___STATIC__I4__BYREF_I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Interlocked::Exchange___STATIC__I4__BYREF_I4__I4( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference( stack.Arg0() )); + NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; // Always return value of first parameter - signed int retVal = location; + signed int retVal = location; // Move second parameter into the first. location = stack.Arg1().NumericByRef().s4; - SetResult_INT32( stack, retVal ); + SetResult_INT32(stack, retVal); - NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference( stack.Arg0(), 0 )); + NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference(stack.Arg0(), 0)); } NANOCLR_NOCLEANUP(); -} - +} -HRESULT Library_corlib_native_System_Threading_Interlocked::CompareExchange___STATIC__I4__BYREF_I4__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Interlocked::CompareExchange___STATIC__I4__BYREF_I4__I4__I4( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference( stack.Arg0() )); + NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; // Always return value of first parameter - signed int retVal = location; + signed int retVal = location; // Exchange value if first and third parameters has equal value. if (stack.Arg2().NumericByRef().s4 == location) { location = stack.Arg1().NumericByRef().s4; } - SetResult_INT32( stack, retVal ); + SetResult_INT32(stack, retVal); - NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference( stack.Arg0(), 0 )); + NANOCLR_CHECK_HRESULT(heapLocation.StoreToReference(stack.Arg0(), 0)); } NANOCLR_NOCLEANUP(); -} +} diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index 2b96a2e2d9..dcb7c19f41 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -198,7 +198,7 @@ CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_HeapBlock & { NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock *obj = &ref; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); if (dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF) { diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index b515e24526..ead93cd160 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -16,10 +16,10 @@ HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - if (td.m_target->enclosingType != CLR_EmptyIndex) + if (td.m_target->HasValidEnclosingType()) { CLR_RT_HeapBlock *hbObj; - td.Set(td.Assembly(), td.m_target->enclosingType); + td.Set(td.Assembly(), td.m_target->EnclosingType()); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); hbObj = top.Dereference(); @@ -371,7 +371,7 @@ HRESULT Library_corlib_native_System_Type::CheckFlags(CLR_RT_StackFrame &stack, NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - if ((td.m_target->flags & mask) == flag) + if ((td.m_target->Flags & mask) == flag) { fRes = true; } @@ -424,21 +424,21 @@ HRESULT Library_corlib_native_System_Type::GetFields( { CLR_RT_Assembly *assm = td.m_assm; const CLR_RECORD_TYPEDEF *tdR = td.m_target; - const CLR_RECORD_FIELDDEF *fd = td.m_assm->GetFieldDef(tdR->sFields_First); - int iTot = tdR->iFields_Num + tdR->sFields_Num; + const CLR_RECORD_FIELDDEF *fd = td.m_assm->GetFieldDef(tdR->FirstStaticField); + int iTot = tdR->InstanceFieldsCount + tdR->StaticFieldsCount; int i; - CLR_RT_FieldDef_Index idx; + CLR_RT_FieldDef_Index index; for (i = 0; i < iTot; i++, fd++) { - const char *fieldName = assm->GetString(fd->name); + const char *fieldName = assm->GetString(fd->Name); - if (fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) + if (fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) { continue; } - if (fd->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd->Flags & CLR_RECORD_FIELDDEF::FD_Static) { if ((bindingFlags & c_BindingFlags_Static) == 0) continue; @@ -449,7 +449,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( continue; } - if ((fd->flags & CLR_RECORD_FIELDDEF::FD_Scope_Mask) == CLR_RECORD_FIELDDEF::FD_Scope_Public) + if ((fd->Flags & CLR_RECORD_FIELDDEF::FD_Scope_Mask) == CLR_RECORD_FIELDDEF::FD_Scope_Public) { if ((bindingFlags & c_BindingFlags_Public) == 0) continue; @@ -475,7 +475,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( continue; } - idx.Set(td.Assembly(), i + tdR->sFields_First); + index.Set(td.Assembly(), i + tdR->FirstStaticField); if (!fAllMatches) { @@ -483,7 +483,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_FieldInfo)); hbObj = top.Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); NANOCLR_SET_AND_LEAVE(S_OK); } @@ -494,7 +494,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.m_FieldInfo)); hbObj = elem->Dereference(); - NANOCLR_CHECK_HRESULT(hbObj->SetReflection(idx)); + NANOCLR_CHECK_HRESULT(hbObj->SetReflection(index)); } iField++; @@ -561,8 +561,8 @@ HRESULT Library_corlib_native_System_Type::GetMethods( { CLR_RT_Assembly *assm = td.m_assm; const CLR_RECORD_TYPEDEF *tdR = td.m_target; - const CLR_RECORD_METHODDEF *md = assm->GetMethodDef(tdR->methods_First); - int iTot = tdR->sMethods_Num + tdR->iMethods_Num + tdR->vMethods_Num; + const CLR_RECORD_METHODDEF *md = assm->GetMethodDef(tdR->FirstMethod); + int iTot = tdR->StaticMethodCount + tdR->InstanceMethodCount + tdR->VirtualMethodCount; int i; if (staticInstanceOnly) @@ -583,7 +583,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( for (i = 0; i < iTot; i++, md++) { - if (md->flags & CLR_RECORD_METHODDEF::MD_Static) + if (md->Flags & CLR_RECORD_METHODDEF::MD_Static) { if ((bindingFlags & c_BindingFlags_Static) == 0) { @@ -598,7 +598,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } } - if ((md->flags & CLR_RECORD_METHODDEF::MD_Scope_Mask) == CLR_RECORD_METHODDEF::MD_Scope_Public) + if ((md->Flags & CLR_RECORD_METHODDEF::MD_Scope_Mask) == CLR_RECORD_METHODDEF::MD_Scope_Public) { if ((bindingFlags & c_BindingFlags_Public) == 0) { @@ -615,7 +615,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( //--// - if (md->flags & CLR_RECORD_METHODDEF::MD_Constructor) + if (md->Flags & CLR_RECORD_METHODDEF::MD_Constructor) { if ((bindingFlags & c_BindingFlags_CreateInstance) == 0) { @@ -629,7 +629,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( continue; } - if (szText != NULL && !strcmp(assm->GetString(md->name), szText) == false) + if (szText != NULL && !strcmp(assm->GetString(md->Name), szText) == false) { continue; } @@ -654,10 +654,10 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } } - CLR_RT_MethodDef_Index idx; - idx.Set(td.Assembly(), i + tdR->methods_First); + CLR_RT_MethodDef_Index index; + index.Set(td.Assembly(), i + tdR->FirstMethod); CLR_RT_MethodDef_Instance inst2; - inst2.InitializeFromIndex(idx); + inst2.InitializeFromIndex(index); if (fAllMatches) { @@ -668,11 +668,11 @@ HRESULT Library_corlib_native_System_Type::GetMethods( NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.m_MethodInfo)); hbObj = elem->Dereference(); - NANOCLR_CHECK_HRESULT(hbObj->SetReflection(idx)); + NANOCLR_CHECK_HRESULT(hbObj->SetReflection(index)); // store token for type hbObj[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4 = - idx.m_data; + index.m_data; } iMethod++; @@ -684,9 +684,9 @@ HRESULT Library_corlib_native_System_Type::GetMethods( if (NANOCLR_INDEX_IS_VALID(inst)) { CLR_RT_SignatureParser parserLeft; - parserLeft.Initialize_MethodSignature(inst.m_assm, inst.m_target); + parserLeft.Initialize_MethodSignature(&inst); CLR_RT_SignatureParser parserRight; - parserRight.Initialize_MethodSignature(inst2.m_assm, inst2.m_target); + parserRight.Initialize_MethodSignature(&inst2); CLR_RT_SignatureParser::Element resLeft; CLR_RT_SignatureParser::Element resRight; @@ -719,9 +719,9 @@ HRESULT Library_corlib_native_System_Type::GetMethods( NANOCLR_CHECK_HRESULT(parserRight.Advance(resRight)); bool fRightBetterMatchT = - CLR_RT_TypeSystem::MatchSignatureElement(resLeft, resRight, true); + CLR_RT_TypeSystem::MatchSignatureElement(resLeft, resRight, parserLeft, parserRight, true); bool fLeftBetterMatchT = - CLR_RT_TypeSystem::MatchSignatureElement(resRight, resLeft, true); + CLR_RT_TypeSystem::MatchSignatureElement(resRight, resLeft, parserLeft, parserRight, true); // If fLeftBetterMatchT && fRightBetterMatchT, one is assignable from the other, they // must be the same @@ -757,7 +757,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } } - inst.InitializeFromIndex(idx); + inst.InitializeFromIndex(index); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_MethodInfo)); diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index d18f948621..3eae4dd90a 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -287,7 +287,7 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_MethodDef_Index &md) m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); m_data.reflection.m_kind = - (inst.m_target->flags & CLR_RECORD_METHODDEF::MD_Constructor) ? REFLECTION_CONSTRUCTOR : REFLECTION_METHOD; + (inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Constructor) ? REFLECTION_CONSTRUCTOR : REFLECTION_METHOD; m_data.reflection.m_levels = 0; m_data.reflection.m_data.m_method = md; @@ -312,6 +312,24 @@ HRESULT CLR_RT_HeapBlock::SetObjectCls(const CLR_RT_TypeDef_Index &cls) NANOCLR_NOCLEANUP(); } +HRESULT CLR_RT_HeapBlock::SetGenericInstanceObject(const CLR_RT_TypeSpec_Index& genericType) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_TypeSpec_Instance instance; + + if (instance.InitializeFromIndex(genericType) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + m_data.genericInstance.genericType = genericType; + m_data.genericInstance.ptr = NULL; + + NANOCLR_NOCLEANUP(); +} + //--// HRESULT CLR_RT_HeapBlock::InitializeArrayReference(CLR_RT_HeapBlock &ref, int index) @@ -385,7 +403,7 @@ HRESULT CLR_RT_HeapBlock::LoadFromReference(CLR_RT_HeapBlock &ref) CLR_RT_HeapBlock tmp; CLR_RT_HeapBlock *obj; - CLR_DataType dt = ref.DataType(); + NanoCLRDataType dt = ref.DataType(); if (dt == DATATYPE_ARRAY_BYREF) { @@ -463,7 +481,7 @@ HRESULT CLR_RT_HeapBlock::LoadFromReference(CLR_RT_HeapBlock &ref) NANOCLR_SET_AND_LEAVE(CLR_E_TYPE_UNAVAILABLE); } - if (inst.m_target->dataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. + if (inst.m_target->DataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. { obj = &objT[1]; } @@ -491,7 +509,7 @@ HRESULT CLR_RT_HeapBlock::StoreToReference(CLR_RT_HeapBlock &ref, int size) NANOCLR_HEADER(); CLR_RT_HeapBlock *obj; - CLR_DataType dt = ref.DataType(); + NanoCLRDataType dt = ref.DataType(); if (dt == DATATYPE_ARRAY_BYREF) { @@ -527,7 +545,7 @@ HRESULT CLR_RT_HeapBlock::StoreToReference(CLR_RT_HeapBlock &ref, int size) #if defined(_DEBUG) { - CLR_DataType dtElem = (CLR_DataType)array->m_typeOfElement; + NanoCLRDataType dtElem = (NanoCLRDataType)array->m_typeOfElement; CLR_RT_HeapBlock blk; blk.Assign(*this); @@ -797,7 +815,7 @@ HRESULT CLR_RT_HeapBlock::PerformBoxing(const CLR_RT_TypeDef_Instance &cls) CLR_RT_HeapBlock tmp; CLR_RT_HeapBlock *obj = this; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); // // System.DateTime and System.TimeSpan are real value types, so sometimes they are passed by reference. @@ -821,7 +839,7 @@ HRESULT CLR_RT_HeapBlock::PerformBoxing(const CLR_RT_TypeDef_Instance &cls) } { - CLR_DataType dataType = (CLR_DataType)cls.m_target->dataType; + NanoCLRDataType dataType = (NanoCLRDataType)cls.m_target->DataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dataType]; if (dtl.m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType) @@ -893,7 +911,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) if (this->DataType() != DATATYPE_OBJECT) { - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } // Finds the object that keeps the boxed type. @@ -903,7 +921,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) // Validates that src keeps something boxed and the boxed value is VALUE type. if (src->IsBoxed() == false || src->DataType() != DATATYPE_VALUETYPE) { - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } // Validates the type of data kept by object corresponds to type in cls. @@ -913,7 +931,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) // The typedef indexes are different, but src and cls may have identical basic data type. // Need to check it. If identical - the unboxing is allowed. // This "if" compares underlying type in object and cls. Should be equal in order to continue. - if (!(src->DataSize() > 1 && (src[1].DataType() == cls.m_target->dataType))) + if (!(src->DataSize() > 1 && (src[1].DataType() == cls.m_target->DataType))) { // No luck. The types in src object and specified by cls are different. Need to throw exceptioin. NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); @@ -935,7 +953,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) } } - if (cls.m_target->dataType == DATATYPE_VALUETYPE) + if (cls.m_target->DataType == DATATYPE_VALUETYPE) { NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.CloneObject(*this, *this)); @@ -945,7 +963,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) { this->Assign(src[1]); - this->ChangeDataType(cls.m_target->dataType); + this->ChangeDataType(cls.m_target->DataType); } NANOCLR_NOCLEANUP(); @@ -970,7 +988,7 @@ CLR_RT_HeapBlock *CLR_RT_HeapBlock::FixBoxingReference() if (!inst.InitializeFromIndex(src->ObjectCls())) return NULL; - if (inst.m_target->dataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. + if (inst.m_target->DataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. { return &src[1]; } @@ -1131,7 +1149,7 @@ CLR_UINT32 CLR_RT_HeapBlock::GetHashCode(CLR_RT_HeapBlock *ptr, bool fRecurse, C // DATATYPE_I8 // DATATYPE_U8 // DATATYPE_R8 - if (fRecurse && cls.m_target->dataType <= DATATYPE_R8) + if (fRecurse && cls.m_target->DataType <= DATATYPE_R8) { // pass the 1st field which is the one holding the actual value crc = GetHashCode(&ptr[CLR_RT_HeapBlock::HB_Object_Fields_Offset], false, crc); @@ -1235,8 +1253,8 @@ bool CLR_RT_HeapBlock::ObjectsEqual( return true; } - CLR_DataType leftDataType = pArgLeft.DataType(); - CLR_DataType rightDataType = pArgRight.DataType(); + NanoCLRDataType leftDataType = pArgLeft.DataType(); + NanoCLRDataType rightDataType = pArgRight.DataType(); if (leftDataType == rightDataType) { @@ -1357,7 +1375,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( { } - if (inst.m_target->dataType != DATATYPE_VALUETYPE) + if (inst.m_target->DataType != DATATYPE_VALUETYPE) { // boxed primitive or enum type obj = &rightObj[1]; @@ -1525,8 +1543,8 @@ static inline int CompareValues_Pointers(const CLR_RT_HeapBlock *left, const CLR CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const CLR_RT_HeapBlock &right, bool fSigned) { NATIVE_PROFILE_CLR_CORE(); - CLR_DataType leftDataType = left.DataType(); - CLR_DataType rightDataType = right.DataType(); + NanoCLRDataType leftDataType = left.DataType(); + NanoCLRDataType rightDataType = right.DataType(); if (leftDataType == rightDataType) { diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index 1612bd8bcd..6b40982679 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -44,7 +44,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( } else { - CLR_DataType dt = (CLR_DataType)inst.m_target->dataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dt]; if (dtl.m_sizeInBytes == CLR_RT_DataTypeLookup::c_NA) @@ -127,7 +127,7 @@ HRESULT CLR_RT_HeapBlock_Array::ClearElements(int index, int length) if (m_fReference) { - CLR_DataType dt = (CLR_DataType)m_typeOfElement; + NanoCLRDataType dt = (NanoCLRDataType)m_typeOfElement; bool fAllocate = (reflex.m_levels == 1 && dt == DATATYPE_VALUETYPE); CLR_RT_HeapBlock *ptr = (CLR_RT_HeapBlock *)data; diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp index 3ce13a981a..1056ccda57 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp @@ -7,7 +7,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_Finalizer::CreateInstance( CLR_RT_HeapBlock* object, const CLR_RT_TypeDef_Instance& inst ) +HRESULT CLR_RT_HeapBlock_Finalizer::CreateInstance(CLR_RT_HeapBlock *object, const CLR_RT_TypeDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -16,36 +16,40 @@ HRESULT CLR_RT_HeapBlock_Finalizer::CreateInstance( CLR_RT_HeapBlock* object, co do { - if(inst2.m_target->flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) + if (inst2.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) { - int pos = inst2.m_target->methods_First; - int end = pos + inst2.m_target->vMethods_Num + inst2.m_target->iMethods_Num; - const CLR_RECORD_METHODDEF* md = inst2.m_assm->GetMethodDef( pos ); + int pos = inst2.m_target->FirstMethod; + int end = pos + inst2.m_target->VirtualMethodCount + inst2.m_target->InstanceMethodCount; + const CLR_RECORD_METHODDEF *md = inst2.m_assm->GetMethodDef(pos); - for(; posflags & CLR_RECORD_METHODDEF::MD_Finalizer) break; + if (md->Flags & CLR_RECORD_METHODDEF::MD_Finalizer) + break; } - if(pos < end) + if (pos < end) { - CLR_RT_HeapBlock_Finalizer* fin = EVENTCACHE_EXTRACT_NODE_NOALLOC(g_CLR_RT_EventCache,CLR_RT_HeapBlock_Finalizer,DATATYPE_FINALIZER_HEAD); CHECK_ALLOCATION(fin); + CLR_RT_HeapBlock_Finalizer *fin = EVENTCACHE_EXTRACT_NODE_NOALLOC( + g_CLR_RT_EventCache, + CLR_RT_HeapBlock_Finalizer, + DATATYPE_FINALIZER_HEAD); + CHECK_ALLOCATION(fin); fin->m_object = object; - fin->m_md.Set( inst2.Assembly(), pos ); + fin->m_md.Set(inst2.Assembly(), pos); #if defined(NANOCLR_APPDOMAINS) fin->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); #endif - g_CLR_RT_ExecutionEngine.m_finalizersAlive.LinkAtBack( fin ); + g_CLR_RT_ExecutionEngine.m_finalizersAlive.LinkAtBack(fin); break; } } - } - while(inst2.SwitchToParent()); + } while (inst2.SwitchToParent()); NANOCLR_NOCLEANUP(); } @@ -53,28 +57,27 @@ HRESULT CLR_RT_HeapBlock_Finalizer::CreateInstance( CLR_RT_HeapBlock* object, co void CLR_RT_HeapBlock_Finalizer::Relocate() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_object ); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_object); } -void CLR_RT_HeapBlock_Finalizer::SuppressFinalize( CLR_RT_HeapBlock* object ) +void CLR_RT_HeapBlock_Finalizer::SuppressFinalize(CLR_RT_HeapBlock *object) { NATIVE_PROFILE_CLR_CORE(); - RemoveInstance( object, g_CLR_RT_ExecutionEngine.m_finalizersAlive ); - RemoveInstance( object, g_CLR_RT_ExecutionEngine.m_finalizersPending ); + RemoveInstance(object, g_CLR_RT_ExecutionEngine.m_finalizersAlive); + RemoveInstance(object, g_CLR_RT_ExecutionEngine.m_finalizersPending); } -void CLR_RT_HeapBlock_Finalizer::RemoveInstance( CLR_RT_HeapBlock* object, CLR_RT_DblLinkedList& lst ) +void CLR_RT_HeapBlock_Finalizer::RemoveInstance(CLR_RT_HeapBlock *object, CLR_RT_DblLinkedList &lst) { NATIVE_PROFILE_CLR_CORE(); - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer,fin,lst) + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer, fin, lst) { - if(fin->m_object == object) + if (fin->m_object == object) { - g_CLR_RT_EventCache.Append_Node( fin ); + g_CLR_RT_EventCache.Append_Node(fin); break; } } NANOCLR_FOREACH_NODE_END(); } - diff --git a/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp new file mode 100644 index 0000000000..9a12d80505 --- /dev/null +++ b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp @@ -0,0 +1,80 @@ +// +// Copyright (c) .NET Foundation and Contributors +// Portions Copyright (c) Microsoft Corporation. All rights reserved. +// See LICENSE file in the project root for full license information. +// + +#include "Core.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +HRESULT CLR_RT_HeapBlock_GenericInstance::CreateInstance(CLR_RT_HeapBlock& reference, const CLR_RT_TypeSpec_Index& tsIndex) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + +// reference.SetObjectReference( NULL ); + +// CLR_UINT32 length = 0; + +// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) +// if(call) +// { +// NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) +// { +// length++; +// } +// NANOCLR_FOREACH_NODE_BACKWARD_END(); +// } + +// // +// // Limit depth to three callers. +// // +// if(length > 3) length = 3; +// #else +// (void)call; +// #endif + +// CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Delegate) + length * sizeof(CLR_RT_MethodDef_Index)); + +// CLR_RT_HeapBlock_Delegate* dlg = (CLR_RT_HeapBlock_Delegate*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_DELEGATE_HEAD, 0, totLength ); CHECK_ALLOCATION(dlg); + +// reference.SetObjectReference( dlg ); + +// dlg->ClearData(); +// dlg->m_cls.Clear(); +// dlg->m_ftn = ftn; +// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) +// dlg->m_numOfStackFrames = length; +// #endif + +// dlg->m_object.SetObjectReference( NULL ); + +// #if defined(NANOCLR_APPDOMAINS) +// dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); +// #endif + +// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) +// if(call) +// { +// CLR_RT_MethodDef_Index* callStack = dlg->GetStackFrames(); + +// NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) +// { +// if(length-- == 0) break; + +// *callStack++ = ptr->m_call; +// } +// NANOCLR_FOREACH_NODE_BACKWARD_END(); +// } +// #endif + + NANOCLR_NOCLEANUP(); +} + +void CLR_RT_HeapBlock_GenericInstance::Relocate() +{ + NATIVE_PROFILE_CLR_CORE(); + //m_object.Relocate__HeapBlock(); +} + diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp index de640b3dfb..940161d062 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp @@ -113,10 +113,10 @@ void CLR_RT_HeapBlock_Timer::SpawnTimer(CLR_RT_Thread *th) CLR_RT_StackFrame *stack = th->FirstFrame(); if (stack->Next() != NULL) { - int numArgs = stack->m_call.m_target->numArgs; - if (numArgs > 0) + int ArgumentsCount = stack->m_call.m_target->ArgumentsCount; + if (ArgumentsCount > 0) { - stack->m_arguments[numArgs - 1].Assign(*state); + stack->m_arguments[ArgumentsCount - 1].Assign(*state); } } @@ -241,7 +241,7 @@ HRESULT CLR_RT_HeapBlock_Timer::ConfigureObject(CLR_RT_StackFrame &stack, CLR_UI if (flags & CLR_RT_HeapBlock_Timer::c_ACTION_Create) { - FAULT_ON_NULL_ARG(args[0].DereferenceDelegate()); + FAULT_ON_NULL(args[0].DereferenceDelegate()); NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Timer::CreateInstance( 0, diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index a87a9ccf52..33089a900d 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -34,11 +34,11 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan assm = callInstPtr->m_assm; md = callInstPtr->m_target; - sizeLocals = md->numLocals; + sizeLocals = md->LocalsCount; #ifndef NANOCLR_NO_IL_INLINE - sizeEvalStack = md->lengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod + 1; + sizeEvalStack = md->LengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod + 1; #else - sizeEvalStack = md->lengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod; + sizeEvalStack = md->LengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod; #endif //--// @@ -136,7 +136,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan stack->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); #endif - if (md->flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) // Special case for delegate calls. + if (md->Flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) // Special case for delegate calls. { stack->m_nativeMethod = (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_DelegateInvoke; @@ -180,20 +180,24 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan #endif } - if (md->numLocals) + if (md->LocalsCount) { - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeLocals(stack->m_locals, assm, md)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeLocals(stack->m_locals, callInst)); } { - CLR_UINT32 flags = md->flags & (md->MD_Synchronized | md->MD_GloballySynchronized); + CLR_UINT32 syncFlags = md->Flags & (md->MD_Synchronized | md->MD_GloballySynchronized); - if (flags) + if (syncFlags) { - if (flags & md->MD_Synchronized) + if (syncFlags & md->MD_Synchronized) + { stack->m_flags |= c_NeedToSynchronize; - if (flags & md->MD_GloballySynchronized) + } + if (syncFlags & md->MD_GloballySynchronized) + { stack->m_flags |= c_NeedToSynchronizeGlobally; + } } } @@ -247,7 +251,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan // // Everything is set up correctly, pop the operands. // - stack->m_arguments = &caller->m_evalStackPos[-md->numArgs]; + stack->m_arguments = &caller->m_evalStackPos[-md->ArgumentsCount]; caller->m_evalStackPos = stack->m_arguments; @@ -279,13 +283,13 @@ bool CLR_RT_StackFrame::PushInline( const CLR_RECORD_METHODDEF *md = calleeInst.m_target; if ((m_inlineFrame != NULL) || // We can only support one inline at a time per stack call - (m_evalStackEnd - evalPos) <= (md->numArgs + md->numLocals + md->lengthEvalStack + + (m_evalStackEnd - evalPos) <= (md->ArgumentsCount + md->LocalsCount + md->LengthEvalStack + 2) || // We must have enough space on the current stack for the inline method (m_nativeMethod != (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_IL) || // We only support IL inlining - (md->flags & ~CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) >= + (md->Flags & ~CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) >= CLR_RECORD_METHODDEF::MD_Constructor || // Do not try to inline constructors, etc because they require // special processing - (0 != (md->flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing + (0 != (md->Flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing (calleeInst.m_assm->m_nativeCode != NULL && (calleeInst.m_assm->m_nativeCode[calleeInst.Method()] != NULL)) || // Make sure the callee is not an internal method (md->RVA == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method @@ -323,7 +327,7 @@ bool CLR_RT_StackFrame::PushInline( ip = ipTmp; m_arguments = pThis; - m_locals = &m_evalStackEnd[-md->numLocals]; + m_locals = &m_evalStackEnd[-md->LocalsCount]; m_call = calleeInst; m_evalStackEnd = m_locals; m_evalStack = evalPos; @@ -331,14 +335,14 @@ bool CLR_RT_StackFrame::PushInline( m_IPstart = ip; m_IP = ip; - if (md->numLocals) + if (md->LocalsCount) { - g_CLR_RT_ExecutionEngine.InitializeLocals(m_locals, calleeInst.m_assm, md); + g_CLR_RT_ExecutionEngine.InitializeLocals(m_locals, calleeInst); } m_flags |= CLR_RT_StackFrame::c_MethodKind_Inlined; - if (md->retVal != DATATYPE_VOID) + if (md->RetVal != DATATYPE_VOID) { m_flags |= CLR_RT_StackFrame::c_InlineMethodHasReturnValue; } @@ -399,7 +403,7 @@ void CLR_RT_StackFrame::RestoreFromInlineStack() { m_arguments = m_inlineFrame->m_frame.m_args; m_locals = m_inlineFrame->m_frame.m_locals; - m_evalStackEnd += m_call.m_target->numLocals; + m_evalStackEnd += m_call.m_target->LocalsCount; m_call = m_inlineFrame->m_frame.m_call; m_IP = m_inlineFrame->m_frame.m_IP; m_IPstart = m_inlineFrame->m_frame.m_IPStart; @@ -416,7 +420,7 @@ void CLR_RT_StackFrame::RestoreStack(CLR_RT_InlineFrame &frame) m_IPstart = frame.m_IPStart; m_evalStack = frame.m_evalStack; m_evalStackPos = frame.m_evalPos; - m_evalStackEnd -= m_call.m_target->numLocals; + m_evalStackEnd -= m_call.m_target->LocalsCount; } void CLR_RT_StackFrame::SaveStack(CLR_RT_InlineFrame &frame) @@ -474,7 +478,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() } else { - int cArgs = m_call.m_target->numArgs; + int cArgs = m_call.m_target->ArgumentsCount; // First marshal the ref parameters NANOCLR_CHECK_HRESULT( @@ -485,7 +489,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() } // Now, push the return, if any. - if (m_call.m_target->retVal != DATATYPE_VOID) + if (m_call.m_target->RetVal != DATATYPE_VOID) { CLR_RT_HeapBlock &dst = caller->PushValueAndClear(); CLR_RT_HeapBlock &src = this->TopValue(); @@ -529,7 +533,7 @@ HRESULT CLR_RT_StackFrame::PushAppDomainTransition( NANOCLR_HEADER(); CLR_RT_StackFrame *frame = NULL; - int cArgs = callInst.m_target->numArgs; + int cArgs = callInst.m_target->ArgumentsCount; CLR_RT_HeapBlock *proxy; _ASSERTE(pThis->IsTransparentProxy()); @@ -568,15 +572,15 @@ HRESULT CLR_RT_StackFrame::MakeCall( NANOCLR_HEADER(); const CLR_RECORD_METHODDEF *mdR = md.m_target; - bool fStatic = (mdR->flags & CLR_RECORD_METHODDEF::MD_Static) != 0; - int numArgs = mdR->numArgs; + bool fStatic = (mdR->Flags & CLR_RECORD_METHODDEF::MD_Static) != 0; + int ArgumentsCount = mdR->ArgumentsCount; int argsOffset = 0; CLR_RT_StackFrame *stackSub; CLR_RT_HeapBlock tmp; tmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(tmp); - if (mdR->flags & CLR_RECORD_METHODDEF::MD_Constructor) + if (mdR->Flags & CLR_RECORD_METHODDEF::MD_Constructor) { CLR_RT_TypeDef_Instance owner; owner.InitializeFromMethod(md); @@ -598,17 +602,17 @@ HRESULT CLR_RT_StackFrame::MakeCall( if (!fStatic) { FAULT_ON_NULL(obj); - numArgs--; + ArgumentsCount--; argsOffset = 1; } - if (numArgs != nArgs) + if (ArgumentsCount != nArgs) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); // // In case the invoked method is abstract or virtual, resolve it to the correct method implementation. // - if (mdR->flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual)) + if (mdR->Flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual)) { CLR_RT_TypeDef_Index cls; CLR_RT_MethodDef_Index mdReal; @@ -641,7 +645,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( else #endif { - NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(m_owningThread, md, md.m_target->numArgs)); + NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(m_owningThread, md, md.m_target->ArgumentsCount)); stackSub = m_owningThread->CurrentFrame(); @@ -650,9 +654,9 @@ HRESULT CLR_RT_StackFrame::MakeCall( stackSub->m_arguments[0].Assign(*obj); } - if (numArgs) + if (ArgumentsCount) { - memcpy(&stackSub->m_arguments[argsOffset], args, sizeof(CLR_RT_HeapBlock) * numArgs); + memcpy(&stackSub->m_arguments[argsOffset], args, sizeof(CLR_RT_HeapBlock) * ArgumentsCount); } } @@ -669,21 +673,21 @@ HRESULT CLR_RT_StackFrame::FixCall() NANOCLR_HEADER(); const CLR_RECORD_METHODDEF *target = m_call.m_target; - CLR_UINT8 numArgs = target->numArgs; + CLR_UINT8 ArgumentsCount = target->ArgumentsCount; // // The copy of ValueTypes is delayed as much as possible. // // If an argument is a ValueType, now it's a good time to clone it. // - if (numArgs) + if (ArgumentsCount) { CLR_RT_SignatureParser parser; - parser.Initialize_MethodSignature(m_call.m_assm, target); + parser.Initialize_MethodSignature(&m_call); CLR_RT_SignatureParser::Element res; CLR_RT_HeapBlock *args = m_arguments; - if (parser.m_flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) + if (parser.Flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) { args++; } @@ -697,14 +701,14 @@ HRESULT CLR_RT_StackFrame::FixCall() { NANOCLR_CHECK_HRESULT(parser.Advance(res)); - if (res.m_levels > 0) + if (res.Levels > 0) continue; // Array, no need to fix. if (args->DataType() == DATATYPE_OBJECT) { CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(res.m_cls); - CLR_DataType dtT = (CLR_DataType)inst.m_target->dataType; + inst.InitializeFromIndex(res.Class); + NanoCLRDataType dtT = (NanoCLRDataType)inst.m_target->DataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dtT]; if (dtl.m_flags & (CLR_RT_DataTypeLookup::c_OptimizedValueType | CLR_RT_DataTypeLookup::c_ValueType)) @@ -717,7 +721,7 @@ HRESULT CLR_RT_StackFrame::FixCall() // It's a boxed primitive/enum type. args->Assign(*value); } - else if (args->Dereference()->ObjectCls().m_data == res.m_cls.m_data) + else if (args->Dereference()->ObjectCls().m_data == res.Class.m_data) { if (args->Dereference()->IsBoxed()) { @@ -731,7 +735,7 @@ HRESULT CLR_RT_StackFrame::FixCall() } } - if (res.m_dt == DATATYPE_VALUETYPE && res.m_fByRef == false) + if (res.DataType == DATATYPE_VALUETYPE && res.IsByRef == false) { if (args->IsAReferenceOfThisType(DATATYPE_VALUETYPE)) { @@ -783,13 +787,13 @@ HRESULT CLR_RT_StackFrame::HandleSynchronized(bool fAcquire, bool fGlobal) *ppGlobalLock = obj->Dereference(); } } - else if (m_call.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) + else if (m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) { - CLR_RT_TypeDef_Index idx; + CLR_RT_TypeDef_Index index; - idx.Set(m_call.Assembly(), m_call.CrossReference().GetOwner()); + index.Set(m_call.Assembly(), m_call.CrossReference().GetOwner()); - refType.SetReflection(idx); + refType.SetReflection(index); obj = &refType; } @@ -933,7 +937,7 @@ void CLR_RT_StackFrame::Pop() // // Push the return, if any. // - if (m_call.m_target->retVal != DATATYPE_VOID) + if (m_call.m_target->RetVal != DATATYPE_VOID) { if (m_owningThread->m_currentException.Dereference() == NULL) { @@ -949,15 +953,15 @@ void CLR_RT_StackFrame::Pop() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) else { - int idx = m_owningThread->m_scratchPad; + int index = m_owningThread->m_scratchPad; - if (idx >= 0) + if (index >= 0) { CLR_RT_HeapBlock_Array *array = g_CLR_RT_ExecutionEngine.m_scratchPadArray; - if (array && array->m_numOfElements > (CLR_UINT32)idx) + if (array && array->m_numOfElements > (CLR_UINT32)index) { - CLR_RT_HeapBlock *dst = (CLR_RT_HeapBlock *)array->GetElement((CLR_UINT32)idx); + CLR_RT_HeapBlock *dst = (CLR_RT_HeapBlock *)array->GetElement((CLR_UINT32)index); CLR_RT_HeapBlock *exception = m_owningThread->m_currentException.Dereference(); dst->SetObjectReference(NULL); @@ -966,10 +970,10 @@ void CLR_RT_StackFrame::Pop() { dst->SetObjectReference(exception); } - else if (m_call.m_target->retVal != DATATYPE_VOID) + else if (m_call.m_target->RetVal != DATATYPE_VOID) { CLR_RT_SignatureParser sig; - sig.Initialize_MethodSignature(this->m_call.m_assm, this->m_call.m_target); + sig.Initialize_MethodSignature(&this->m_call); CLR_RT_SignatureParser::Element res; CLR_RT_TypeDescriptor desc; @@ -979,7 +983,7 @@ void CLR_RT_StackFrame::Pop() // Box to the return value type _SIDE_ASSERTE(SUCCEEDED(sig.Advance(res))); - _SIDE_ASSERTE(SUCCEEDED(desc.InitializeFromType(res.m_cls))); + _SIDE_ASSERTE(SUCCEEDED(desc.InitializeFromType(res.Class))); if (c_CLR_RT_DataTypeLookup[this->DataType()].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType || @@ -1019,7 +1023,7 @@ void CLR_RT_StackFrame::Pop() //--// -void CLR_RT_StackFrame::SetResult(CLR_INT32 val, CLR_DataType dataType) +void CLR_RT_StackFrame::SetResult(CLR_INT32 val, NanoCLRDataType dataType) { NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock &top = PushValue(); @@ -1254,14 +1258,14 @@ void CLR_RT_StackFrame::Relocate() CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_args, - m_inlineFrame->m_frame.m_call.m_target->numArgs); + m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount); CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_locals, - m_inlineFrame->m_frame.m_call.m_target->numLocals); + m_inlineFrame->m_frame.m_call.m_target->LocalsCount); CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_evalStack, (int)(m_evalStackPos - m_inlineFrame->m_frame.m_evalStack)); - CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->numLocals); + CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->LocalsCount); } else #endif @@ -1272,8 +1276,8 @@ void CLR_RT_StackFrame::Relocate() CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IPstart); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IP); - CLR_RT_GarbageCollector::Heap_Relocate(m_arguments, m_call.m_target->numArgs); - CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->numLocals); + CLR_RT_GarbageCollector::Heap_Relocate(m_arguments, m_call.m_target->ArgumentsCount); + CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->LocalsCount); CLR_RT_GarbageCollector::Heap_Relocate(m_evalStack, TopValuePosition()); } } @@ -1285,7 +1289,7 @@ HRESULT CLR_RT_StackFrame::NotImplementedStub() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (m_call.m_target->retVal != DATATYPE_VOID) + if (m_call.m_target->RetVal != DATATYPE_VOID) { SetResult_I4(0); } diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index 95707a2f63..5f285b83f5 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -190,7 +190,7 @@ void CLR_RT_EventCache::VirtualMethodTable::Callback_Reassign( void CLR_RT_EventCache::VirtualMethodTable::Initialize() { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT32 idx; + CLR_UINT32 index; m_entries = (Link *)&g_scratchVirtualMethodTableLink[0]; m_entriesMRU = (Link *)&g_scratchVirtualMethodTableLinkMRU[0]; @@ -199,24 +199,24 @@ void CLR_RT_EventCache::VirtualMethodTable::Initialize() // // Link all the entries to themselves => no elements in the lists. // - for (idx = 0; idx < LinkArraySize(); idx++) + for (index = 0; index < LinkArraySize(); index++) { - Link &lnk = m_entries[idx]; + Link &lnk = m_entries[index]; - lnk.m_next = idx; - lnk.m_prev = idx; + lnk.m_next = index; + lnk.m_prev = index; } // // Link all the entries to the following one => all the elements are in the MRU list. // _ASSERTE(LinkMRUArraySize() < 0xFFFF); - for (idx = 0; idx < LinkMRUArraySize(); idx++) + for (index = 0; index < LinkMRUArraySize(); index++) { - Link &lnk = m_entriesMRU[idx]; + Link &lnk = m_entriesMRU[index]; - lnk.m_next = idx == LinkMRUArraySize() - 1 ? 0 : idx + 1; - lnk.m_prev = idx == 0 ? (CLR_UINT16)LinkMRUArraySize() - 1 : idx - 1; + lnk.m_next = index == LinkMRUArraySize() - 1 ? 0 : index + 1; + lnk.m_prev = index == 0 ? (CLR_UINT16)LinkMRUArraySize() - 1 : index - 1; } } @@ -227,8 +227,8 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( { NATIVE_PROFILE_CLR_CORE(); Payload::Key key; - CLR_UINT32 idx; - CLR_UINT32 idxHead; + CLR_UINT32 index; + CLR_UINT32 indexHead; CLR_UINT32 clsData = cls.m_data; CLR_UINT32 mdVirtualData = mdVirtual.m_data; @@ -247,7 +247,7 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( // if (clsData == instCLS.m_data) { - if ((instMD.m_target->flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) + if ((instMD.m_target->Flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) { md = mdVirtual; @@ -260,7 +260,7 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( if (cls.Assembly() == mdVirtual.Assembly()) { CLR_RT_Assembly *assm = g_CLR_RT_TypeSystem.m_assemblies[mdVirtual.Assembly() - 1]; - CLR_IDX owner = assm->m_pCrossReference_MethodDef[mdVirtual.Method()].GetOwner(); + CLR_INDEX owner = assm->m_pCrossReference_MethodDef[mdVirtual.Method()].GetOwner(); if (cls.Type() == owner) { @@ -296,13 +296,14 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( key.m_mdVirtual.m_data = mdVirtualData; key.m_cls.m_data = clsData; - idxHead = (SUPPORT_ComputeCRC(&key, sizeof(key), 0) % (LinkArraySize() - PayloadArraySize())) + PayloadArraySize(); + indexHead = + (SUPPORT_ComputeCRC(&key, sizeof(key), 0) % (LinkArraySize() - PayloadArraySize())) + PayloadArraySize(); - for (idx = m_entries[idxHead].m_next;; idx = m_entries[idx].m_next) + for (index = m_entries[indexHead].m_next;; index = m_entries[index].m_next) { - if (idx != idxHead) + if (index != indexHead) { - Payload &res = m_payloads[idx]; + Payload &res = m_payloads[index]; if (res.m_key.m_mdVirtual.m_data != mdVirtualData) continue; @@ -318,9 +319,9 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( if (g_CLR_RT_TypeSystem.FindVirtualMethodDef(cls, mdVirtual, md) == false) return false; - idx = GetNewEntry(); + index = GetNewEntry(); - Payload &res = m_payloads[idx]; + Payload &res = m_payloads[index]; res.m_md = md; res.m_key = key; @@ -329,20 +330,20 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( } } - MoveEntryToTop(m_entries, idxHead, idx); - MoveEntryToTop(m_entriesMRU, LinkMRUArraySize() - 1, idx); + MoveEntryToTop(m_entries, indexHead, index); + MoveEntryToTop(m_entriesMRU, LinkMRUArraySize() - 1, index); return true; } -void CLR_RT_EventCache::VirtualMethodTable::MoveEntryToTop(Link *entries, CLR_UINT32 slot, CLR_UINT32 idx) +void CLR_RT_EventCache::VirtualMethodTable::MoveEntryToTop(Link *entries, CLR_UINT32 slot, CLR_UINT32 index) { NATIVE_PROFILE_CLR_CORE(); Link &list = entries[slot]; - if (list.m_next != idx) + if (list.m_next != index) { - Link &node = entries[idx]; + Link &node = entries[index]; CLR_UINT32 next; CLR_UINT32 prev; @@ -363,8 +364,8 @@ void CLR_RT_EventCache::VirtualMethodTable::MoveEntryToTop(Link *entries, CLR_UI node.m_next = next; node.m_prev = slot; - list.m_next = idx; - entries[next].m_prev = idx; + list.m_next = index; + entries[next].m_prev = index; } } diff --git a/src/CLR/Core/Core.vcxproj b/src/CLR/Core/Core.vcxproj index 7acf85a2c5..b4a38026da 100644 --- a/src/CLR/Core/Core.vcxproj +++ b/src/CLR/Core/Core.vcxproj @@ -30,6 +30,7 @@ + diff --git a/src/CLR/Core/Core.vcxproj.filters b/src/CLR/Core/Core.vcxproj.filters index 68d53b16b9..7d7321e345 100644 --- a/src/CLR/Core/Core.vcxproj.filters +++ b/src/CLR/Core/Core.vcxproj.filters @@ -138,6 +138,9 @@ Source Files + + Source Files + diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index a0adc9144b..e840b2436f 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -535,7 +535,7 @@ HRESULT CLR_RT_ExecutionEngine::CreateEntryPointArgs(CLR_RT_HeapBlock &argsBlk, wchar_t *szArgNext = NULL; wchar_t *szArg = szCommandLineArgs; - const wchar_t *sep = L" "; + wchar_t *sep = L" "; wchar_t *context = NULL; szArg = wcstok_s(szArg, sep, &context); @@ -602,7 +602,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS { CLR_RT_StackFrame *stack = thMain->CurrentFrame(); - if (stack->m_call.m_target->numArgs > 0) + if (stack->m_call.m_target->ArgumentsCount > 0) { // Main entrypoint takes an optional String[] parameter. // Set the arg to NULL, if that's the case. @@ -765,27 +765,27 @@ void CLR_RT_ExecutionEngine::StaticConstructorTerminationCallback(void *arg) bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( CLR_RT_AppDomain *appDomain, CLR_RT_AppDomainAssembly *appDomainAssembly, - const CLR_RT_MethodDef_Index &idx) + const CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_MethodDef_Index idxNext; + CLR_RT_MethodDef_Index indexNext; _ASSERTE(m_cctorThread != NULL); //_ASSERTE(m_cctorThread->CanThreadBeReused()); - idxNext.m_data = idx.m_data; + indexNext.m_data = index.m_data; _ASSERTE(appDomainAssembly != NULL); // find next method with static constructor - if (appDomainAssembly->m_assembly->FindNextStaticConstructor(idxNext)) + if (appDomainAssembly->m_assembly->FindNextStaticConstructor(indexNext)) { CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; refDlg.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refDlg); - if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, idxNext, NULL))) + if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, NULL))) { dlg = refDlg.DereferenceDelegate(); dlg->m_appDomain = appDomain; @@ -816,24 +816,24 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread if (dlg != NULL) { CLR_RT_AppDomainAssembly *appDomainAssembly; - CLR_RT_MethodDef_Index idx = dlg->DelegateFtn(); + CLR_RT_MethodDef_Index index = dlg->DelegateFtn(); CLR_RT_MethodDef_Instance inst; - // Find next static constructor for given idx - _ASSERTE(NANOCLR_INDEX_IS_VALID(idx)); - _SIDE_ASSERTE(inst.InitializeFromIndex(idx)); + // Find next static constructor for given index + _ASSERTE(NANOCLR_INDEX_IS_VALID(index)); + _SIDE_ASSERTE(inst.InitializeFromIndex(index)); appDomainAssembly = dlg->m_appDomain->FindAppDomainAssembly(inst.m_assm); _ASSERTE(appDomainAssembly != NULL); _ASSERTE(appDomainAssembly->m_assembly == inst.m_assm); - // This is ok if idx is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor + // This is ok if index is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor // which will fail - idx.m_data++; + index.m_data++; // This is not the first static constructor run in this appDomain - if (SpawnStaticConstructorHelper(dlg->m_appDomain, appDomainAssembly, idx)) + if (SpawnStaticConstructorHelper(dlg->m_appDomain, appDomainAssembly, index)) return; } @@ -847,8 +847,8 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread // Find an AppDomainAssembly that does not have it's static constructor bit set... if ((appDomainAssembly->m_flags & CLR_RT_AppDomainAssembly::StaticConstructorsExecuted) == 0) { - CLR_RT_MethodDef_Index idx; - idx.Set(assembly->m_idx, 0); + CLR_RT_MethodDef_Index index; + index.Set(assembly->m_index, 0); #ifdef DEBUG @@ -863,7 +863,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread } #endif - if (SpawnStaticConstructorHelper(appDomain, appDomainAssembly, idx)) + if (SpawnStaticConstructorHelper(appDomain, appDomainAssembly, index)) return; } } @@ -878,27 +878,29 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread } #else // NANOCLR_APPDOMAINS -bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper(CLR_RT_Assembly *assembly, const CLR_RT_MethodDef_Index &idx) +bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( + CLR_RT_Assembly *assembly, + const CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_MethodDef_Index idxNext; + CLR_RT_MethodDef_Index indexNext; _ASSERTE(m_cctorThread != NULL); _ASSERTE(m_cctorThread->CanThreadBeReused()); - idxNext.m_data = idx.m_data; + indexNext.m_data = index.m_data; _ASSERTE(assembly != NULL); // find next method with static constructor - if (assembly->FindNextStaticConstructor(idxNext)) + if (assembly->FindNextStaticConstructor(indexNext)) { CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; refDlg.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refDlg); - if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, idxNext, NULL))) + if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, NULL))) { dlg = refDlg.DereferenceDelegate(); @@ -927,18 +929,18 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread if (dlg != NULL) { - CLR_RT_MethodDef_Index idx = dlg->DelegateFtn(); + CLR_RT_MethodDef_Index index = dlg->DelegateFtn(); CLR_RT_MethodDef_Instance inst; - // Find next static constructor for given idx - _ASSERTE(NANOCLR_INDEX_IS_VALID(idx)); - _SIDE_ASSERTE(inst.InitializeFromIndex(idx)); + // Find next static constructor for given index + _ASSERTE(NANOCLR_INDEX_IS_VALID(index)); + _SIDE_ASSERTE(inst.InitializeFromIndex(index)); - // This is ok if idx is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor + // This is ok if index is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor // which will fail - idx.m_data++; + index.m_data++; - if (SpawnStaticConstructorHelper(inst.m_assm, idx)) + if (SpawnStaticConstructorHelper(inst.m_assm, index)) return; } @@ -948,8 +950,8 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread // Find an AppDomainAssembly that does not have it's static constructor bit set... if ((pASSM->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) { - CLR_RT_MethodDef_Index idx; - idx.Set(pASSM->m_idx, 0); + CLR_RT_MethodDef_Index index; + index.Set(pASSM->m_index, 0); bool fDepedenciesRun = true; // Check that all dependent assemblies have had static constructors run. @@ -963,7 +965,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread } } - if (fDepedenciesRun && SpawnStaticConstructorHelper(pASSM, idx)) + if (fDepedenciesRun && SpawnStaticConstructorHelper(pASSM, index)) return; } } @@ -1034,10 +1036,10 @@ void CLR_RT_ExecutionEngine::UpdateToLowestExecutionCounter(CLR_RT_Thread *pThre pThread->m_executionCounter = m_GlobalExecutionCounter - 1; } -void CLR_RT_ExecutionEngine::RetrieveCurrentMethod(CLR_UINT32 &assmIdx, CLR_UINT32 &methodIdx) +void CLR_RT_ExecutionEngine::RetrieveCurrentMethod(CLR_UINT32 &assmIndex, CLR_UINT32 &methodIndex) { - assmIdx = 0; - methodIdx = 0; + assmIndex = 0; + methodIndex = 0; if (m_currentThread != NULL) { @@ -1045,15 +1047,15 @@ void CLR_RT_ExecutionEngine::RetrieveCurrentMethod(CLR_UINT32 &assmIdx, CLR_UINT if (stack) { - assmIdx = stack->m_call.Assembly(); - methodIdx = stack->m_call.Method(); + assmIndex = stack->m_call.Assembly(); + methodIndex = stack->m_call.Method(); } } } -void CLR_RetrieveCurrentMethod(CLR_UINT32 &assmIdx, CLR_UINT32 &methodIdx) +void CLR_RetrieveCurrentMethod(CLR_UINT32 &assmIndex, CLR_UINT32 &methodIndex) { - g_CLR_RT_ExecutionEngine.RetrieveCurrentMethod(assmIdx, methodIdx); + g_CLR_RT_ExecutionEngine.RetrieveCurrentMethod(assmIndex, methodIndex); } void CLR_SoftReboot() @@ -1436,7 +1438,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForArray( const CLR_RT_ReflectionDef_Index &reflex) { NATIVE_PROFILE_CLR_CORE(); - CLR_DataType dt = (CLR_DataType)inst.m_target->dataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dt]; CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Array) + length * dtl.m_sizeInBytes); @@ -1471,8 +1473,11 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForClassOrValueTypes( CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); + if (length > CLR_RT_HeapBlock::HB_MaxSize) + { return NULL; + } _ASSERTE(dataType == DATATYPE_CLASS || dataType == DATATYPE_VALUETYPE); @@ -1491,6 +1496,33 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForClassOrValueTypes( return hb; } +CLR_RT_HeapBlock* CLR_RT_ExecutionEngine::ExtractHeapBlocksForGenericInstance( + CLR_UINT32 flags, + const CLR_RT_TypeSpec_Index& genericType, + CLR_UINT32 length) +{ + NATIVE_PROFILE_CLR_CORE(); + + if (length > CLR_RT_HeapBlock::HB_MaxSize) + { + return NULL; + } + + flags = flags | CLR_RT_HeapBlock::HB_InitializeToZero; + CLR_RT_HeapBlock* hb = ExtractHeapBlocks(m_heap, DATATYPE_GENERICINST, flags, length); + + if (hb) + { + hb->SetGenericInstanceObject(genericType); + +#if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) + g_CLR_PRF_Profiler.TrackObjectCreation(hb); +#endif + } + + return hb; +} + CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBytesForObjects( CLR_UINT32 dataType, CLR_UINT32 flags, @@ -1680,7 +1712,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe NATIVE_PROFILE_CLR_CORE(); CLR_RT_FieldDef_Instance inst; - if (inst.InitializeFromIndex(fd) && inst.m_target->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (inst.InitializeFromIndex(fd) && inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) { #if defined(NANOCLR_APPDOMAINS) { @@ -1712,13 +1744,13 @@ HRESULT CLR_RT_ExecutionEngine::InitializeReference(CLR_RT_HeapBlock &ref, CLR_R NANOCLR_HEADER(); CLR_RT_SignatureParser::Element res; - CLR_DataType dt; + NanoCLRDataType dt; NANOCLR_CHECK_HRESULT(parser.Advance(res)); - dt = res.m_dt; + dt = res.DataType; - if (res.m_levels > 0) // Array + if (res.Levels > 0) // Array { dt = DATATYPE_OBJECT; } @@ -1727,11 +1759,11 @@ HRESULT CLR_RT_ExecutionEngine::InitializeReference(CLR_RT_HeapBlock &ref, CLR_R if (dt == DATATYPE_VALUETYPE) { CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(res.m_cls); + inst.InitializeFromIndex(res.Class); - if ((inst.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) + if ((inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { - dt = (CLR_DataType)inst.m_target->dataType; + dt = (NanoCLRDataType)inst.m_target->DataType; } else { @@ -1773,8 +1805,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeReference( HRESULT CLR_RT_ExecutionEngine::InitializeLocals( CLR_RT_HeapBlock *locals, - CLR_RT_Assembly *assm, - const CLR_RECORD_METHODDEF *md) + const CLR_RT_MethodDef_Instance &methodDefInstance) { NATIVE_PROFILE_CLR_CORE(); // @@ -1785,25 +1816,23 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( NANOCLR_HEADER(); - CLR_PMETADATA sig = assm->GetSignature(md->locals); - CLR_UINT32 count = md->numLocals; + CLR_RT_Assembly *assembly = methodDefInstance.m_assm; + const CLR_RECORD_METHODDEF *methodDef = methodDefInstance.m_target; + CLR_PMETADATA sig = assembly->GetSignature(methodDef->Locals); + CLR_UINT32 count = methodDef->LocalsCount; bool fZeroed = false; while (count) { - CLR_DataType dt = DATATYPE_VOID; + NanoCLRDataType dt = DATATYPE_VOID; CLR_RT_TypeDef_Index cls; + CLR_RT_TypeSpec_Index typeSpecIndex; CLR_UINT32 levels = 0; - CLR_DataType dtModifier = DATATYPE_VOID; + NanoCLRDataType dtModifier = DATATYPE_VOID; while (true) { dt = CLR_UncompressElementType(sig); - if (dt == - DATATYPE_VOID) // there should never have been a local variable of type void, unless it's generic type - { - dt = DATATYPE_OBJECT; - } switch (dt) { case DATATYPE_TYPE_PINNED: @@ -1821,36 +1850,67 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( case DATATYPE_VALUETYPE: { CLR_UINT32 tk = CLR_TkFromStream(sig); - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); switch (CLR_TypeFromTk(tk)) { - case TBL_TypeSpec: - { - CLR_RT_SignatureParser sub; - sub.Initialize_TypeSpec(assm, assm->GetTypeSpec(idx)); - CLR_RT_SignatureParser::Element res; - - NANOCLR_CHECK_HRESULT(sub.Advance(res)); - - cls = res.m_cls; - levels += res.m_levels; - } - break; - case TBL_TypeRef: - cls = assm->m_pCrossReference_TypeRef[idx].m_target; + cls = assembly->m_pCrossReference_TypeRef[index].Target; break; case TBL_TypeDef: - cls.Set(assm->m_idx, idx); + cls.Set(assembly->m_index, index); break; default: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } + + goto done; + } + + case DATATYPE_GENERICINST: + // need to rewind the signature so that the ELEMENT_TYPE is present + // otherwise the comparison won't be possible + sig--; + + if(!assembly->FindTypeSpec(sig, typeSpecIndex)) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + goto done; + + case DATATYPE_VAR: + { + CLR_INT8 genericParamPosition = *sig++; + + CLR_RT_GenericParam_Index gpIndex; + + assembly->FindGenericParamAtTypeDef(methodDefInstance, genericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + cls = gp.Class; + dt = gp.DataType; + + goto done; } + + case DATATYPE_MVAR: + { + CLR_UINT8 genericParamPosition = *sig++; + + CLR_RT_GenericParam_Index gpIndex; + + assembly->FindGenericParamAtMethodDef(methodDefInstance, genericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + cls = gp.Class; + dt = gp.DataType; + goto done; + } default: { @@ -1862,8 +1922,9 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( } cls = *cls2; - } + goto done; + } } } @@ -1872,7 +1933,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( { locals->SetObjectReference(NULL); - // If local varialb has DATATYPE_TYPE_PINNED, we mark heap block as + // If local variable has DATATYPE_TYPE_PINNED, we mark heap block as if (dtModifier == DATATYPE_TYPE_PINNED) { locals->Pin(); @@ -1885,9 +1946,9 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(cls); - if (inst.m_target->dataType != DATATYPE_VALUETYPE) + if (inst.m_target->DataType != DATATYPE_VALUETYPE) { - locals->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(inst.m_target->dataType, CLR_RT_HeapBlock::HB_Alive, 1)); + locals->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(inst.m_target->DataType, CLR_RT_HeapBlock::HB_Alive, 1)); locals->ClearData(); } else @@ -1913,6 +1974,13 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( NANOCLR_CHECK_HRESULT(NewObject(*locals, inst)); } } + else if (dt == DATATYPE_GENERICINST) + { + // locals for generic instances are always OBJECT type + dt = DATATYPE_OBJECT; + locals->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(dt, CLR_RT_HeapBlock::HB_Alive, 1)); + locals->ClearData(); + } else { if (c_CLR_RT_DataTypeLookup[dt].m_flags & CLR_RT_DataTypeLookup::c_Reference) @@ -1956,7 +2024,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR reference.SetObjectReference(NULL); - CLR_DataType dt = (CLR_DataType)inst.m_target->dataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; // // You cannot create an array this way. @@ -1998,7 +2066,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR case DATATYPE_CLASS: case DATATYPE_VALUETYPE: { - int clsFields = inst.m_target->iFields_Num; + int clsFields = inst.m_target->InstanceFieldsCount; int totFields = inst.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; CLR_RT_HeapBlock *obj = ExtractHeapBlocksForClassOrValueTypes(dt, 0, inst, totFields); CHECK_ALLOCATION(obj); @@ -2026,14 +2094,14 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR if (instSub.SwitchToParent() == false) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); - clsFields = instSub.m_target->iFields_Num; + clsFields = instSub.m_target->InstanceFieldsCount; target = NULL; } if (target == NULL) { assm = instSub.m_assm; - target = assm->GetFieldDef(instSub.m_target->iFields_First + clsFields); + target = assm->GetFieldDef(instSub.m_target->FirstInstanceField + clsFields); } obj--; @@ -2051,6 +2119,9 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR } break; + case DATATYPE_GENERICINST: + break; + default: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2076,17 +2147,99 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, CLR_UINT3 //--// +HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, const CLR_RT_TypeSpec_Index& genericType) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_TypeSpec_Instance inst; + + if (inst.InitializeFromIndex(genericType) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + NANOCLR_SET_AND_LEAVE(NewGenericInstanceObject(reference, typeDef, inst)); + + NANOCLR_NOCLEANUP(); +} + +HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock &reference, const CLR_RT_TypeDef_Instance& instance, CLR_RT_TypeSpec_Instance& genericInstance) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + const CLR_RECORD_FIELDDEF* target = NULL; + CLR_RT_Assembly* assm = NULL; + CLR_RT_TypeDef_Instance instSub = instance; + + reference.SetObjectReference(NULL); + + int clsFields = instance.m_target->InstanceFieldsCount; + int totFields = instance.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; + + CLR_RT_HeapBlock_GenericInstance* genericInst; + + genericInst = (CLR_RT_HeapBlock_GenericInstance*)ExtractHeapBlocksForGenericInstance(0, genericInstance, totFields); + CHECK_ALLOCATION(genericInst); + + reference.SetObjectReference(genericInst); + + + // + // Initialize field types, from last to first. + // + // We do the decrement BEFORE the comparison because we want to stop short of the first field, the + // object descriptor (already initialized). + // + genericInst += totFields; + while (--totFields > 0) + { + while (clsFields == 0) + { + if (instSub.SwitchToParent() == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + clsFields = instSub.m_target->InstanceFieldsCount; + target = NULL; + } + + if (target == NULL) + { + assm = instSub.m_assm; + target = assm->GetFieldDef(instSub.m_target->FirstInstanceField + clsFields); + } + + genericInst--; + target--; + clsFields--; + + NANOCLR_CHECK_HRESULT(InitializeReference(*genericInst, target, assm)); + } + + if (instance.HasFinalizer()) + { + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Finalizer::CreateInstance(reference.Dereference(), instance)); + } + + NANOCLR_NOCLEANUP(); +} + +//--// + HRESULT CLR_RT_ExecutionEngine::CloneObject(CLR_RT_HeapBlock &reference, const CLR_RT_HeapBlock &source) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); const CLR_RT_HeapBlock *obj = &source; - CLR_DataType dt; + NanoCLRDataType dt; while (true) { - dt = (CLR_DataType)obj->DataType(); + dt = (NanoCLRDataType)obj->DataType(); if (dt == DATATYPE_BYREF || dt == DATATYPE_OBJECT) { @@ -2248,18 +2401,18 @@ HRESULT CLR_RT_ExecutionEngine::FindField(CLR_RT_HeapBlock &reference, const cha NANOCLR_HEADER(); CLR_RT_FieldDef_Instance inst; - CLR_RT_FieldDef_Index idx; + CLR_RT_FieldDef_Index index; CLR_RT_HeapBlock *res; field = NULL; - NANOCLR_CHECK_HRESULT(FindFieldDef(reference, szText, idx)); + NANOCLR_CHECK_HRESULT(FindFieldDef(reference, szText, index)); - inst.InitializeFromIndex(idx); + inst.InitializeFromIndex(index); - if (inst.m_target->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) { - res = CLR_RT_ExecutionEngine::AccessStaticField(idx); + res = CLR_RT_ExecutionEngine::AccessStaticField(index); if (res == NULL) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2835,14 +2988,14 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( } } - if (inst.m_target->dataType != instTarget.m_target->dataType) + if (inst.m_target->DataType != instTarget.m_target->DataType) { return false; } } - CLR_UINT32 semantic = (inst.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); - CLR_UINT32 semanticTarget = (instTarget.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); + CLR_UINT32 semantic = (inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); + CLR_UINT32 semanticTarget = (instTarget.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); if (fArray) { @@ -2862,7 +3015,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Scan the list of interfaces. // - if (semanticTarget == CLR_RECORD_TYPEDEF::TD_Semantics_Interface && inst.m_target->interfaces != CLR_EmptyIndex) + if (semanticTarget == CLR_RECORD_TYPEDEF::TD_Semantics_Interface && inst.m_target->Interfaces != CLR_EmptyIndex) { CLR_RT_SignatureParser parser; parser.Initialize_Interfaces(inst.m_assm, inst.m_target); @@ -2873,7 +3026,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( if (FAILED(parser.Advance(res))) break; - if (res.m_cls.m_data == instTarget.m_data) + if (res.Class.m_data == instTarget.m_data) { return true; } diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index 8910b55e9b..8cb09d9658 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -723,17 +723,17 @@ void CLR_RT_GarbageCollector::Thread_Mark(CLR_RT_Thread *th) { CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_args, - stack->m_inlineFrame->m_frame.m_call.m_target->numArgs); + stack->m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount); CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_locals, - stack->m_inlineFrame->m_frame.m_call.m_target->numLocals); + stack->m_inlineFrame->m_frame.m_call.m_target->LocalsCount); CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_evalStack, (int)(stack->m_inlineFrame->m_frame.m_evalPos - stack->m_inlineFrame->m_frame.m_evalStack)); } #endif - CheckMultipleBlocks(stack->m_arguments, stack->m_call.m_target->numArgs); - CheckMultipleBlocks(stack->m_locals, stack->m_call.m_target->numLocals); + CheckMultipleBlocks(stack->m_arguments, stack->m_call.m_target->ArgumentsCount); + CheckMultipleBlocks(stack->m_locals, stack->m_call.m_target->LocalsCount); CheckMultipleBlocks(stack->m_evalStack, stack->TopValuePosition()); } NANOCLR_FOREACH_NODE_END(); diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 3bc154d678..fa748e8695 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -82,7 +82,7 @@ bool CLR_RT_HeapBlock::InitObject() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock *obj = this; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dt]; if (dtl.m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType) @@ -120,12 +120,12 @@ bool CLR_RT_HeapBlock::InitObject() //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock::Convert_Internal(CLR_DataType et) +HRESULT CLR_RT_HeapBlock::Convert_Internal(NanoCLRDataType et) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_DataType dt = DataType(); + NanoCLRDataType dt = DataType(); const CLR_RT_DataTypeLookup &dtlSrc = c_CLR_RT_DataTypeLookup[dt]; const CLR_RT_DataTypeLookup &dtlDst = c_CLR_RT_DataTypeLookup[et]; int scaleIn; @@ -443,13 +443,13 @@ bool CLR_RT_Thread::FindEhBlock( if (!onlyFinallys || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) { CLR_Debug::Printf("Unwinding at "); - CLR_RT_DUMP::METHOD(stack->m_call); + CLR_RT_DUMP::METHOD(stack->m_call, NULL); CLR_Debug::Printf(" [IP: %04x - %d]\r\n", (size_t)stack->m_IP, (stack->m_IP - stack->m_IPstart)); } } #endif - if (stack->m_call.m_target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (stack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { switch (stack->m_flags & CLR_RT_StackFrame::c_MethodKind_Mask) { @@ -970,10 +970,13 @@ HRESULT CLR_RT_Thread::Execute_DelegateInvoke(CLR_RT_StackFrame &stackArg) CLR_RT_ProtectFromGC gc(*dlg); CLR_RT_MethodDef_Instance inst; inst.InitializeFromIndex(dlg->DelegateFtn()); - bool fStaticMethod = (inst.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) != 0; + bool fStaticMethod = (inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) != 0; - NANOCLR_CHECK_HRESULT( - stack->MakeCall(inst, fStaticMethod ? NULL : &dlg->m_object, &stack->m_arguments[1], md->numArgs - 1)); + NANOCLR_CHECK_HRESULT(stack->MakeCall( + inst, + fStaticMethod ? NULL : &dlg->m_object, + &stack->m_arguments[1], + md->ArgumentsCount - 1)); } NANOCLR_NOCLEANUP(); @@ -2087,17 +2090,20 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_MethodDef_Instance calleeInst; if (calleeInst.ResolveToken(arg, assm) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + CLR_RT_TypeDef_Index cls; CLR_RT_HeapBlock *pThis; #if defined(NANOCLR_APPDOMAINS) bool fAppDomainTransition = false; #endif - pThis = &evalPos[1 - calleeInst.m_target->numArgs]; // Point to the first arg, 'this' if an instance - // method + pThis = &evalPos[1 - calleeInst.m_target->ArgumentsCount]; // Point to the first arg, 'this' if an + // instance method - if (calleeInst.m_target->flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) + if (calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) { CLR_RT_HeapBlock_Delegate *dlg = pThis->DereferenceDelegate(); FAULT_ON_NULL(dlg); @@ -2106,7 +2112,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { calleeInst.InitializeFromIndex(dlg->DelegateFtn()); - if ((calleeInst.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { pThis->Assign(dlg->m_object); @@ -2116,7 +2122,10 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } else { - memmove(&pThis[0], &pThis[1], calleeInst.m_target->numArgs * sizeof(CLR_RT_HeapBlock)); + memmove( + &pThis[0], + &pThis[1], + calleeInst.m_target->ArgumentsCount * sizeof(CLR_RT_HeapBlock)); evalPos--; } @@ -2132,7 +2141,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { CLR_RT_MethodDef_Index calleeReal; - if ((calleeInst.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { // Instance method, pThis[ 0 ] is valid @@ -2151,7 +2160,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // instance method isn't virtual we don't need to do the more expensive virtual method // lookup. if (op == CEE_CALLVIRT && - (calleeInst.m_target->flags & + (calleeInst.m_target->Flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual))) { if (g_CLR_RT_EventCache.FindVirtualMethod(cls, calleeInst, calleeReal) == false) @@ -2265,7 +2274,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_TypeDef_Instance type; CLR_RT_TypeDef_Index cls; - if (type.ResolveToken(arg, assm, evalPos) == false) + if (type.ResolveToken(arg, assm, &stack->m_call) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); @@ -2318,9 +2327,12 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_MethodDef_Instance calleeInst; if (calleeInst.ResolveToken(arg, assm) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + CLR_RT_TypeDef_Instance cls; - CLR_RT_HeapBlock *top; + CLR_RT_HeapBlock* top; CLR_INT32 changes; cls.InitializeFromMethod(calleeInst); // This is the class to create! @@ -2335,7 +2347,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // Special case for delegates. LDFTN or LDVIRTFTN have already created the delegate object, just // check that... // - changes = -calleeInst.m_target->numArgs; + changes = -calleeInst.m_target->ArgumentsCount; NANOCLR_CHECK_HRESULT(CLR_Checks::VerifyStackOK( *stack, stack->m_evalStackPos, @@ -2349,7 +2361,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - CLR_RT_HeapBlock_Delegate *dlg = top[1].DereferenceDelegate(); + CLR_RT_HeapBlock_Delegate* dlg = top[1].DereferenceDelegate(); if (dlg == NULL) { @@ -2365,7 +2377,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if ((dlgInst.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((dlgInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { dlg->m_object.Assign(top[0]); } @@ -2374,7 +2386,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } else { - changes = calleeInst.m_target->numArgs; + changes = calleeInst.m_target->ArgumentsCount; NANOCLR_CHECK_HRESULT(CLR_Checks::VerifyStackOK( *stack, stack->m_evalStackPos, @@ -2397,7 +2409,14 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // ^ // Top points here. - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(top[0], cls)); + if (calleeInst.genericType == NULL) + { + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(top[0], cls)); + } + else + { + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewGenericInstanceObject(top[0], cls, *calleeInst.genericType)); + } // // This is to flag the fact that we need to copy back the 'this' pointer into our stack. @@ -2414,7 +2433,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // // See CLR_RT_StackFrame::Pop() // - if ((cls.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((cls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_ValueType) { if (top[0].DataType() == DATATYPE_OBJECT) @@ -2431,7 +2450,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // top = stack->m_evalStackPos++; - changes = calleeInst.m_target->numArgs; + changes = calleeInst.m_target->ArgumentsCount; while (--changes > 0) { top[0].Assign(top[-1]); @@ -2498,7 +2517,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) if (fieldInst.ResolveToken(arg, assm) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_RT_HeapBlock *obj = &evalPos[0]; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractObjectAndDataType(obj, dt)); @@ -2548,7 +2567,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) if (fieldInst.ResolveToken(arg, assm) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_RT_HeapBlock *obj = &evalPos[0]; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractObjectAndDataType(obj, dt)); @@ -2583,9 +2602,12 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_FieldDef_Instance fieldInst; if (fieldInst.ResolveToken(arg, assm) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + CLR_RT_HeapBlock *obj = &evalPos[1]; - CLR_DataType dt = obj->DataType(); + NanoCLRDataType dt = obj->DataType(); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractObjectAndDataType(obj, dt)); @@ -2593,6 +2615,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { case DATATYPE_CLASS: case DATATYPE_VALUETYPE: + case DATATYPE_GENERICINST: obj[fieldInst.CrossReference().m_offset].AssignAndPreserveType(evalPos[2]); break; case DATATYPE_DATETIME: // Special case. @@ -2633,7 +2656,9 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_FieldDef_Instance field; if (field.ResolveToken(arg, assm) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } CLR_RT_HeapBlock *ptr = CLR_RT_ExecutionEngine::AccessStaticField(field); if (ptr == NULL) @@ -2699,8 +2724,10 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) FETCH_ARG_COMPRESSED_TYPETOKEN(arg, ip); CLR_RT_TypeDef_Instance typeInst; - if (typeInst.ResolveToken(arg, assm, evalPos) == false) + if (typeInst.ResolveToken(arg, assm, &stack->m_call) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } UPDATESTACK(stack, evalPos); @@ -2728,14 +2755,14 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // castclass typeTok. CLR_RT_TypeDef_Instance typeInst; - if (typeInst.ResolveToken(arg, assm, evalPos) == false) + if (typeInst.ResolveToken(arg, assm, &stack->m_call) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); UPDATESTACK(stack, evalPos); - if (((typeInst.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if (((typeInst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_ValueType) || - ((typeInst.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + ((typeInst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum)) { //"unbox" @@ -2879,7 +2906,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_TypeDef_Instance type; CLR_RT_TypeDef_Index cls; - if (!type.ResolveToken(arg, assm, evalPos)) + if (!type.ResolveToken(arg, assm, &stack->m_call)) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); @@ -3080,7 +3107,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) case TBL_TypeDef: { CLR_RT_TypeDef_Instance cls; - if (cls.ResolveToken(arg, assm, evalPos) == false) + if (cls.ResolveToken(arg, assm, &stack->m_call) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); evalPos[0].SetReflection(cls); @@ -3337,11 +3364,11 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) FETCH_ARG_COMPRESSED_TYPETOKEN(arg, ip); CLR_RT_TypeDef_Instance clsInst; - if (clsInst.ResolveToken(arg, assm, evalPos) == false) + if (clsInst.ResolveToken(arg, assm, &stack->m_call) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_INT32 len; - if (clsInst.m_target->dataType) + if (clsInst.m_target->DataType) { len = sizeof(CLR_RT_HeapBlock); } diff --git a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp index bb3dca4e8d..ea1ebe5a69 100644 --- a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp +++ b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp @@ -228,7 +228,7 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::StartDispatch( CLR_RT_Applicatio args = stackTop->m_arguments; - if((stackTop->m_call.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if((stackTop->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { ++args; } diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 478eefa5e9..3a74d91c14 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -94,7 +94,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) #endif - if ((m_type->m_handlerCls.m_target->flags & CLR_RECORD_TYPEDEF::TD_Serializable) == 0) + if ((m_type->m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Serializable) == 0) { #if defined(NANOCLR_APPDOMAINS) @@ -127,7 +127,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() CLR_RT_TypeDescriptor *td; CLR_RT_TypeDescriptor sub; - if (m_hints._arraySize != 0) + if (m_hints.m_arraySize != 0) { res &= ~c_Signature_Length; } @@ -145,7 +145,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() break; default: - if (m_hints._options & SF_FixedType) + if (m_hints.m_flags & SF_FixedType) { res &= ~c_Signature_Type; break; @@ -162,7 +162,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() td = m_typeExpected; } - if (td->m_handlerCls.m_target->flags & CLR_RECORD_TYPEDEF::TD_Sealed) + if (td->m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Sealed) { res &= ~c_Signature_Type; break; @@ -175,7 +175,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() m_typeForced = &m_typeForced_tmp; *m_typeForced = *m_typeExpected; - if (m_hints._options & SF_PointerNeverNull) + if (m_hints.m_flags & SF_PointerNeverNull) { res &= ~c_Signature_Header; } @@ -195,10 +195,10 @@ bool CLR_RT_BinaryFormatter::TypeHandler::CompareTypes(CLR_RT_TypeDescriptor *le return memcmp(left, right, sizeof(*left)) == 0; } -CLR_DataType CLR_RT_BinaryFormatter::TypeHandler::GetDataType(CLR_RT_TypeDescriptor *type) +NanoCLRDataType CLR_RT_BinaryFormatter::TypeHandler::GetDataType(CLR_RT_TypeDescriptor *type) { NATIVE_PROFILE_CLR_SERIALIZATION(); - return (CLR_DataType)type->m_handlerCls.m_target->dataType; + return (NanoCLRDataType)type->m_handlerCls.m_target->DataType; } CLR_UINT32 CLR_RT_BinaryFormatter::TypeHandler::GetSizeOfType(CLR_RT_TypeDescriptor *type) @@ -220,7 +220,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature(int &res) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - CLR_UINT32 idx; + CLR_UINT32 index; int mask = SignatureRequirements(); if ((mask & c_Signature_Type) == 0) @@ -314,8 +314,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature(int &res) } #endif - idx = m_bf->SearchDuplicate(m_value); - if (idx != (CLR_UINT32)-1) + index = m_bf->SearchDuplicate(m_value); + if (index != (CLR_UINT32)-1) { // // No duplicates allowed for fixed-type objects. @@ -326,7 +326,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature(int &res) } NANOCLR_CHECK_HRESULT(m_bf->WriteBits(TE_L1_Duplicate, TE_L1)); - NANOCLR_CHECK_HRESULT(m_bf->WriteCompressedUnsigned(idx)); + NANOCLR_CHECK_HRESULT(m_bf->WriteCompressedUnsigned(index)); res = c_Action_None; NANOCLR_SET_AND_LEAVE(S_OK); @@ -437,7 +437,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( if ((mask & c_Signature_Length) != 0) { - int bitsMax = m_hints._bitPacked; + int bitsMax = m_hints.m_bitPacked; if (bitsMax != 0) { @@ -455,7 +455,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( } else { - int sizeExpected = m_hints._arraySize; + int sizeExpected = m_hints.m_arraySize; if (sizeExpected > 0 && sizeExpected != sizeReal) { @@ -522,7 +522,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (levelOne == TE_L1_Null) { - if (m_hints._options & SF_PointerNeverNull) + if (m_hints.m_flags & SF_PointerNeverNull) { NANOCLR_SET_AND_LEAVE(CLR_E_SERIALIZATION_VIOLATION); } @@ -534,11 +534,11 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (levelOne == TE_L1_Duplicate) { CLR_RT_HeapBlock *dup; - CLR_UINT32 idx; + CLR_UINT32 index; - NANOCLR_CHECK_HRESULT(m_bf->ReadCompressedUnsigned(idx)); + NANOCLR_CHECK_HRESULT(m_bf->ReadCompressedUnsigned(index)); - dup = m_bf->GetDuplicate(idx); + dup = m_bf->GetDuplicate(index); if (dup == NULL) { NANOCLR_SET_AND_LEAVE(CLR_E_SERIALIZATION_VIOLATION); @@ -558,12 +558,12 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) { if ((mask & c_Signature_Type) != 0) { - CLR_RT_ReflectionDef_Index idx; + CLR_RT_ReflectionDef_Index index; - NANOCLR_CHECK_HRESULT(m_bf->ReadType(idx)); + NANOCLR_CHECK_HRESULT(m_bf->ReadType(index)); m_type = &m_type_tmp; - NANOCLR_CHECK_HRESULT(m_type->InitializeFromReflection(idx)); + NANOCLR_CHECK_HRESULT(m_type->InitializeFromReflection(index)); } } else @@ -594,12 +594,12 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (levelOne == TE_L1_Reference) { - CLR_RT_ReflectionDef_Index idx; + CLR_RT_ReflectionDef_Index index; - NANOCLR_CHECK_HRESULT(m_bf->ReadType(idx)); + NANOCLR_CHECK_HRESULT(m_bf->ReadType(index)); m_type = &m_type_tmp; - NANOCLR_CHECK_HRESULT(m_type->InitializeFromReflection(idx)); + NANOCLR_CHECK_HRESULT(m_type->InitializeFromReflection(index)); } else if (levelOne == TE_L1_Other) { @@ -717,7 +717,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (mask & c_Signature_Length) { - int bitsMax = m_hints._bitPacked; + int bitsMax = m_hints.m_bitPacked; if (bitsMax != 0) { @@ -742,7 +742,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) sub.InitializeFromType(m_type->m_reflex.m_data.m_type); - len = m_hints._arraySize; + len = m_hints.m_arraySize; if (len == (CLR_UINT32)-1) { @@ -789,11 +789,11 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (m_type->m_handlerCls.IsATypeHandler()) { - CLR_RT_ReflectionDef_Index idx; + CLR_RT_ReflectionDef_Index index; - NANOCLR_CHECK_HRESULT(m_bf->ReadType(idx)); + NANOCLR_CHECK_HRESULT(m_bf->ReadType(index)); - NANOCLR_CHECK_HRESULT(m_value->SetReflection(idx)); + NANOCLR_CHECK_HRESULT(m_value->SetReflection(index)); res = c_Action_None; NANOCLR_SET_AND_LEAVE(S_OK); @@ -948,17 +948,17 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) } } - if (m_hints._bitPacked) - bits = m_hints._bitPacked; + if (m_hints.m_bitPacked) + bits = m_hints.m_bitPacked; - val -= m_hints._rangeBias; + val -= m_hints.m_rangeBias; if (fSigned) { CLR_INT64 valS = (CLR_INT64)val; - if (m_hints._scale != 0) - valS /= (CLR_INT64)m_hints._scale; + if (m_hints.m_scale != 0) + valS /= (CLR_INT64)m_hints.m_scale; if (bits != 64) { @@ -976,8 +976,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) { CLR_UINT64 valU = (CLR_UINT64)val; - if (m_hints._scale != 0) - valU /= (CLR_UINT64)m_hints._scale; + if (m_hints.m_scale != 0) + valU /= (CLR_UINT64)m_hints.m_scale; if (bits != 64) { @@ -1046,10 +1046,10 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) { CLR_RT_HeapBlock_String *str = CLR_RT_HeapBlock_String::CreateInstance(*m_value, len); CHECK_ALLOCATION(str); - char *dst1 = (char *)str->StringText(); + char *dst = (char *)str->StringText(); - NANOCLR_CHECK_HRESULT(m_bf->ReadArray((CLR_UINT8 *)dst1, len)); - dst1[len] = 0; + NANOCLR_CHECK_HRESULT(m_bf->ReadArray((CLR_UINT8 *)dst, len)); + dst[len] = 0; } res = c_Action_None; @@ -1074,8 +1074,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) NANOCLR_SET_AND_LEAVE(TrackObject(res)); } - if (m_hints._bitPacked) - bits = m_hints._bitPacked; + if (m_hints.m_bitPacked) + bits = m_hints.m_bitPacked; NANOCLR_CHECK_HRESULT(m_bf->ReadBits(val, bits)); @@ -1091,12 +1091,12 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) val = (val >> revBits); } - if (m_hints._scale != 0) + if (m_hints.m_scale != 0) { - val *= m_hints._scale; + val *= m_hints.m_scale; } - *dst = val + m_hints._rangeBias; + *dst = val + m_hints.m_rangeBias; res = c_Action_None; NANOCLR_SET_AND_LEAVE(S_OK); @@ -1157,7 +1157,7 @@ HRESULT CLR_RT_BinaryFormatter::State::CreateInstance( NANOCLR_CLEAR(*hints); - hints->_options = (SerializationFlags)(SF_PointerNeverNull | SF_FixedType); + hints->m_flags = (SerializationFlags)(SF_PointerNeverNull | SF_FixedType); } } else @@ -1206,7 +1206,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi NANOCLR_CLEAR(hints); - if (cls.m_target->flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) + if (cls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); @@ -1243,7 +1243,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( NANOCLR_CLEAR(hints); - if (fld.m_target->flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) + if (fld.m_target->Flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); @@ -1269,15 +1269,15 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( else { if (!strcmp(val->m_name, "Flags")) - hints._options = (SerializationFlags)val->m_value.NumericByRef().u4; + hints.m_flags = (SerializationFlags)val->m_value.NumericByRef().u4; else if (!strcmp(val->m_name, "ArraySize")) - hints._arraySize = val->m_value.NumericByRef().s4; + hints.m_arraySize = val->m_value.NumericByRef().s4; else if (!strcmp(val->m_name, "BitPacked")) - hints._bitPacked = val->m_value.NumericByRef().s4; + hints.m_bitPacked = val->m_value.NumericByRef().s4; else if (!strcmp(val->m_name, "RangeBias")) - hints._rangeBias = val->m_value.NumericByRef().s8; + hints.m_rangeBias = val->m_value.NumericByRef().s8; else if (!strcmp(val->m_name, "Scale")) - hints._scale = val->m_value.NumericByRef().u8; + hints.m_scale = val->m_value.NumericByRef().u8; } } } @@ -1294,8 +1294,8 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) NANOCLR_HEADER(); CLR_RT_HeapBlock *src = m_value.m_value; - CLR_DataType dt = dst.DataType(); - CLR_DataType dt2 = (dt == DATATYPE_ARRAY_BYREF) ? (CLR_DataType)dst.DereferenceArray()->m_typeOfElement : dt; + NanoCLRDataType dt = dst.DataType(); + NanoCLRDataType dt2 = (dt == DATATYPE_ARRAY_BYREF) ? (NanoCLRDataType)dst.DereferenceArray()->m_typeOfElement : dt; if (c_CLR_RT_DataTypeLookup[dt2].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType) { @@ -1338,7 +1338,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) else if (src->DataType() == DATATYPE_REFLECTION) { const CLR_RT_ReflectionDef_Index *reflex; - const CLR_RT_TypeDef_Index *cls = NULL; + const CLR_RT_TypeDef_Index *cls; CLR_RT_HeapBlock *pDst = &dst; reflex = &(src->ReflectionDataConst()); @@ -1500,8 +1500,8 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() { if (m_parent->m_flags & CLR_RT_BinaryFormatter::c_Flags_Marshal) { - CLR_RT_TypeDef_Index idx; - idx.Clear(); + CLR_RT_TypeDef_Index index; + index.Clear(); CLR_RT_HeapBlock *value = m_value.m_value; if (value && value->DataType() == DATATYPE_REFLECTION) @@ -1509,7 +1509,7 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() switch (value->ReflectionDataConst().m_kind) { case REFLECTION_TYPE: - idx.m_data = value->ReflectionDataConst().m_data.m_type.m_data; + index.m_data = value->ReflectionDataConst().m_data.m_type.m_data; break; case REFLECTION_TYPE_DELAYED: // should this be allowed for appdomain+marshaling??? @@ -1539,7 +1539,7 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() _ASSERTE(false); } - idx.Set(inst.Assembly(), inst.CrossReference().GetOwner()); + index.Set(inst.Assembly(), inst.CrossReference().GetOwner()); } break; case REFLECTION_FIELD: @@ -1554,19 +1554,20 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() NANOCLR_CHECK_HRESULT(desc.InitializeFromFieldDefinition(inst)); - idx = desc.m_handlerCls; + index = desc.m_handlerCls; } break; } } else if (m_value.m_type) { - idx = m_value.m_type->m_handlerCls; + index = m_value.m_type->m_handlerCls; } - if (idx.m_data != 0) + if (index.m_data != 0) { - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->VerifyTypeIsLoaded(idx)); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->VerifyTypeIsLoaded(index)); } } } @@ -1660,17 +1661,17 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextField() while (NANOCLR_INDEX_IS_VALID(m_fields_CurrentClass)) { - if (m_fields_CurrentField < m_fields_CurrentClass.m_target->iFields_Num) + if (m_fields_CurrentField < m_fields_CurrentClass.m_target->InstanceFieldsCount) { - int offset = m_fields_CurrentClass.m_target->iFields_First + m_fields_CurrentField++; - CLR_RT_FieldDef_Index idx; - idx.Set(m_fields_CurrentClass.Assembly(), offset); + int offset = m_fields_CurrentClass.m_target->FirstInstanceField + m_fields_CurrentField++; + CLR_RT_FieldDef_Index index; + index.Set(m_fields_CurrentClass.Assembly(), offset); CLR_RT_FieldDef_Instance inst; - inst.InitializeFromIndex(idx); + inst.InitializeFromIndex(index); m_fields_Pointer = m_value.m_value->Dereference() + inst.CrossReference().m_offset; - if ((inst.m_target->flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) + if ((inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) { SerializationHintsAttribute hints; CLR_RT_TypeDescriptor desc; @@ -1749,7 +1750,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextElement() SerializationHintsAttribute *hints; - if (m_value.m_hints._options & (SF_FixedType | SF_PointerNeverNull)) + if (m_value.m_hints.m_flags & (SF_FixedType | SF_PointerNeverNull)) { hints = &m_value.m_hints; } @@ -1780,7 +1781,7 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B CHECK_ALLOCATION(ptr); ptr->m_stream = NULL; // CLR_RT_HeapBlock_MemoryStream* m_stream; - ptr->m_idx = 0; // CLR_UINT32 m_idx; + ptr->m_index = 0; // CLR_UINT32 m_index; ptr->m_lastTypeRead = 0; // CLR_UINT32 m_lastTypeRead; ptr->m_duplicates .DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_duplicates; // EVENT HEAP - NO @@ -1997,7 +1998,7 @@ HRESULT CLR_RT_BinaryFormatter::TrackDuplicate(CLR_RT_HeapBlock *object) m_duplicates.LinkAtBack(ptr); ptr->m_ptr = TypeHandler::FixDereference(object); - ptr->m_idx = m_idx++; + ptr->m_index = m_index++; NANOCLR_NOCLEANUP(); } @@ -2011,7 +2012,7 @@ CLR_UINT32 CLR_RT_BinaryFormatter::SearchDuplicate(CLR_RT_HeapBlock *object) { if (ptr->m_ptr == object) { - return ptr->m_idx; + return ptr->m_index; } } NANOCLR_FOREACH_NODE_END(); @@ -2019,12 +2020,12 @@ CLR_UINT32 CLR_RT_BinaryFormatter::SearchDuplicate(CLR_RT_HeapBlock *object) return (CLR_UINT32)-1; } -CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 idx) +CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 index) { NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_FOREACH_NODE(DuplicateTracker, ptr, m_duplicates) { - if (ptr->m_idx == idx) + if (ptr->m_index == index) { return ptr->m_ptr; } diff --git a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp index f0fb10be81..f73a1b0edb 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp @@ -69,12 +69,12 @@ __nfweak bool CLR_RT_BinaryFormatter::TypeHandler::CompareTypes( return true; } -__nfweak CLR_DataType CLR_RT_BinaryFormatter::TypeHandler::GetDataType(CLR_RT_TypeDescriptor *type) +__nfweak NanoCLRDataType CLR_RT_BinaryFormatter::TypeHandler::GetDataType(CLR_RT_TypeDescriptor *type) { (void)type; NATIVE_PROFILE_CLR_SERIALIZATION(); - return (CLR_DataType)0; + return (NanoCLRDataType)0; } __nfweak CLR_UINT32 CLR_RT_BinaryFormatter::TypeHandler::GetSizeOfType(CLR_RT_TypeDescriptor *type) @@ -287,10 +287,16 @@ __nfweak void CLR_RT_BinaryFormatter::PrepareForGC(void *data) NATIVE_PROFILE_CLR_SERIALIZATION(); } -__nfweak HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_HeapBlock &object) +__nfweak HRESULT CLR_RT_BinaryFormatter::Serialize( + CLR_RT_HeapBlock &refData, + CLR_RT_HeapBlock &object, + CLR_RT_HeapBlock *cls, + CLR_UINT32 flags) { (void)refData; (void)object; + (void)cls; + (void)flags; NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_FEATURE_STUB_RETURN(); @@ -299,11 +305,13 @@ __nfweak HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CL __nfweak HRESULT CLR_RT_BinaryFormatter::Deserialize( CLR_RT_HeapBlock &refData, CLR_RT_HeapBlock &object, + CLR_RT_HeapBlock *cls, CLR_UINT32 *unknownType, CLR_UINT32 flags) { (void)refData; (void)object; + (void)cls; (void)unknownType; (void)flags; @@ -348,9 +356,9 @@ __nfweak CLR_UINT32 CLR_RT_BinaryFormatter::SearchDuplicate(CLR_RT_HeapBlock *ob return (CLR_UINT32)-1; } -__nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 idx) +__nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 index) { - (void)idx; + (void)index; NATIVE_PROFILE_CLR_SERIALIZATION(); return NULL; diff --git a/src/CLR/Core/StringTable.cpp b/src/CLR/Core/StringTable.cpp index f642682e7e..bfde9d4dea 100644 --- a/src/CLR/Core/StringTable.cpp +++ b/src/CLR/Core/StringTable.cpp @@ -39,13 +39,13 @@ void CLR_RT_Assembly::InitString(std::map &map) NATIVE_PROFILE_CLR_CORE(); const CLR_STRING *array = c_CLR_StringTable_Lookup; size_t len = c_CLR_StringTable_Size; - CLR_STRING idx = 0xFFFF; + CLR_STRING index = 0xFFFF; map.clear(); while (len-- > 0) { - map[&c_CLR_StringTable_Data[*array++]] = idx--; + map[&c_CLR_StringTable_Data[*array++]] = index--; } } diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index 18c4fd4467..1898c30279 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -171,9 +171,9 @@ HRESULT CLR_RT_Thread::PushThreadProcDelegate(CLR_RT_HeapBlock_Delegate *pDelega this->m_dlg = pDelegate; this->m_status = TH_S_Ready; - NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(this, inst, inst.m_target->numArgs)); + NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(this, inst, inst.m_target->ArgumentsCount)); - if ((inst.m_target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { CLR_RT_StackFrame *stackTop = this->CurrentFrame(); @@ -592,16 +592,16 @@ void CLR_RT_Thread::DumpStack() void CLR_RT_Thread::ProcessException_FilterPseudoFrameCopyVars(CLR_RT_StackFrame *to, CLR_RT_StackFrame *from) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8 numArgs = from->m_call.m_target->numArgs; + CLR_UINT8 ArgumentsCount = from->m_call.m_target->ArgumentsCount; - if (numArgs) + if (ArgumentsCount) { - memcpy(to->m_arguments, from->m_arguments, sizeof(CLR_RT_HeapBlock) * numArgs); + memcpy(to->m_arguments, from->m_arguments, sizeof(CLR_RT_HeapBlock) * ArgumentsCount); } - if (from->m_call.m_target->numLocals) + if (from->m_call.m_target->LocalsCount) { - memcpy(to->m_locals, from->m_locals, sizeof(CLR_RT_HeapBlock) * from->m_call.m_target->numLocals); + memcpy(to->m_locals, from->m_locals, sizeof(CLR_RT_HeapBlock) * from->m_call.m_target->LocalsCount); } } @@ -823,7 +823,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() } #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - if (stack->m_call.m_target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (stack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { CLR_PMETADATA ip; if (us.m_ip) @@ -866,7 +866,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() us.m_currentBlockEnd = eh.m_handlerStart; // Create a pseudo-frame at the top of the stack so the filter can call other functions. - CLR_UINT8 numArgs = stack->m_call.m_target->numArgs; + CLR_UINT8 ArgumentsCount = stack->m_call.m_target->ArgumentsCount; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // We don't want to send any breakpoints until after we set the IP appropriately @@ -874,7 +874,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() CLR_EE_DBG_SET(BreakpointsDisabled); #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - hr = CLR_RT_StackFrame::Push(stack->m_owningThread, stack->m_call, numArgs); + hr = CLR_RT_StackFrame::Push(stack->m_owningThread, stack->m_call, ArgumentsCount); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (!fBreakpointsDisabledSav) @@ -896,17 +896,20 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() us.m_stack = newStack; // Copy local variables and arguments so the filter has access to them. - if (numArgs) + if (ArgumentsCount) { - memcpy(newStack->m_arguments, stack->m_arguments, sizeof(CLR_RT_HeapBlock) * numArgs); + memcpy( + newStack->m_arguments, + stack->m_arguments, + sizeof(CLR_RT_HeapBlock) * ArgumentsCount); } - if (stack->m_call.m_target->numLocals) + if (stack->m_call.m_target->LocalsCount) { memcpy( newStack->m_locals, stack->m_locals, - sizeof(CLR_RT_HeapBlock) * stack->m_call.m_target->numLocals); + sizeof(CLR_RT_HeapBlock) * stack->m_call.m_target->LocalsCount); } newStack->PushValueAndAssign(m_currentException); @@ -1090,88 +1093,87 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() } else #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - if (iterStack->m_call.m_target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (iterStack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + { + if (iterStack->m_IP) // No IP? Either out of memory during allocation of iterStack frame or native method. { - if (iterStack - ->m_IP) // No IP? Either out of memory during allocation of iterStack frame or native method. + // handlerBlockStart is used to not execute finally's who's protected blocks contain the handler itself. + // NULL is used when we're not in the handler stack frame to make it work in the case of recursive + // functions with filtered handlers. + if (FindEhBlock( + iterStack, + iterStack->m_IP, + (us.m_handlerStack == iterStack) ? us.m_handlerBlockStart : NULL, + eh, + true)) { - // handlerBlockStart is used to not execute finally's who's protected blocks contain the handler - // itself. NULL is used when we're not in the handler stack frame to make it work in the case of - // recursive functions with filtered handlers. - if (FindEhBlock( - iterStack, - iterStack->m_IP, - (us.m_handlerStack == iterStack) ? us.m_handlerBlockStart : NULL, - eh, - true)) - { - // We have a finally block to process + // We have a finally block to process - us.m_stack = iterStack; - us.m_ip = NULL; - us.m_currentBlockStart = eh.m_handlerStart; - us.m_currentBlockEnd = eh.m_handlerEnd; - us.SetPhase(UnwindStack::p_2_RunningFinallys_0); + us.m_stack = iterStack; + us.m_ip = NULL; + us.m_currentBlockStart = eh.m_handlerStart; + us.m_currentBlockEnd = eh.m_handlerEnd; + us.SetPhase(UnwindStack::p_2_RunningFinallys_0); - m_currentException.SetObjectReference(NULL); // Reset exception flag. + m_currentException.SetObjectReference(NULL); // Reset exception flag. - iterStack->ResetStack(); - iterStack->m_IP = eh.m_handlerStart; - iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; + iterStack->ResetStack(); + iterStack->m_IP = eh.m_handlerStart; + iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == NULL) #endif - { - g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); - } + { + g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); + } #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - NANOCLR_SET_AND_LEAVE(S_OK); - } + NANOCLR_SET_AND_LEAVE(S_OK); + } - if (iterStack == us.m_handlerStack) - { + if (iterStack == us.m_handlerStack) + { #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL || 0 == (us.m_flags & UnwindStack::c_MagicCatchForInline)) + if (iterStack->m_inlineFrame == NULL || 0 == (us.m_flags & UnwindStack::c_MagicCatchForInline)) #endif - { - // We've popped off all stack frames above the target. - // Now we should run the exception handler. + { + // We've popped off all stack frames above the target. + // Now we should run the exception handler. - // Store the range of the block and the stack frame we're executing for PopEH - us.m_currentBlockStart = us.m_handlerBlockStart; - us.m_currentBlockEnd = us.m_handlerBlockEnd; - us.m_stack = us.m_handlerStack; - us.SetPhase(UnwindStack::p_3_RunningHandler); + // Store the range of the block and the stack frame we're executing for PopEH + us.m_currentBlockStart = us.m_handlerBlockStart; + us.m_currentBlockEnd = us.m_handlerBlockEnd; + us.m_stack = us.m_handlerStack; + us.SetPhase(UnwindStack::p_3_RunningHandler); - // Set the IP and push the exception object on the stack. - iterStack->m_IP = us.m_handlerBlockStart; - iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; + // Set the IP and push the exception object on the stack. + iterStack->m_IP = us.m_handlerBlockStart; + iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; - iterStack->ResetStack(); - iterStack->PushValue().SetObjectReference(us.m_exception); + iterStack->ResetStack(); + iterStack->PushValue().SetObjectReference(us.m_exception); - // We are willing to execute IL again so clear the m_currentException flag. - m_currentException.SetObjectReference(NULL); + // We are willing to execute IL again so clear the m_currentException flag. + m_currentException.SetObjectReference(NULL); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == NULL) #endif - { - g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); - } + { + g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); + } #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - // Return a success value to break out of ProcessException and to signal that execution of - // IL can continue. - NANOCLR_SET_AND_LEAVE(S_OK); - } + // Return a success value to break out of ProcessException and to signal that execution of IL + // can continue. + NANOCLR_SET_AND_LEAVE(S_OK); } } } + } // We didn't find a finally block at this level... // Check to see if we trickled up to a pseudoiterStack frame that we created to execute a filter handler: diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 8469f21dd5..9ccdd29e75 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -199,18 +199,20 @@ bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_UINT32 &hash void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, const CLR_RECORD_TYPESPEC *ts) { NATIVE_PROFILE_CLR_CORE(); - Initialize_TypeSpec(assm, assm->GetSignature(ts->sig)); + Initialize_TypeSpec(assm, assm->GetSignature(ts->Sig)); } void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMETADATA ts) { NATIVE_PROFILE_CLR_CORE(); - m_assm = assm; - m_sig = ts; + Assembly = assm; + Signature = ts; - m_type = CLR_RT_SignatureParser::c_TypeSpec; - m_flags = 0; - m_count = 1; + Type = CLR_RT_SignatureParser::c_TypeSpec; + Flags = 0; + ParamCount = 1; + GenParamCount = 0; + IsGenericInst = false; } //--// @@ -218,61 +220,171 @@ void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMET void CLR_RT_SignatureParser::Initialize_Interfaces(CLR_RT_Assembly *assm, const CLR_RECORD_TYPEDEF *td) { NATIVE_PROFILE_CLR_CORE(); - if (td->interfaces != CLR_EmptyIndex) + if (td->Interfaces != CLR_EmptyIndex) { - CLR_PMETADATA sig = assm->GetSignature(td->interfaces); + CLR_PMETADATA sig = assm->GetSignature(td->Interfaces); - m_count = (*sig++); - m_sig = sig; + ParamCount = (*sig++); + Signature = sig; } else { - m_count = 0; - m_sig = NULL; + ParamCount = 0; + Signature = NULL; } - m_type = CLR_RT_SignatureParser::c_Interfaces; - m_flags = 0; + Type = CLR_RT_SignatureParser::c_Interfaces; + Flags = 0; - m_assm = assm; + Assembly = assm; + + GenParamCount = 0; + IsGenericInst = false; } //--// +void CLR_RT_SignatureParser::Initialize_FieldSignature(CLR_RT_Assembly* assm, CLR_PMETADATA fd) +{ + NATIVE_PROFILE_CLR_CORE(); + + Type = CLR_RT_SignatureParser::c_Field; + + Method = 0xFFFF; + + Flags = (*fd++); + + ParamCount = 1; + + Assembly = assm; + Signature = fd; + + GenParamCount = 0; + IsGenericInst = false; +} + void CLR_RT_SignatureParser::Initialize_FieldDef(CLR_RT_Assembly *assm, const CLR_RECORD_FIELDDEF *fd) { NATIVE_PROFILE_CLR_CORE(); - Initialize_FieldDef(assm, assm->GetSignature(fd->sig)); + + Initialize_FieldDef(assm, assm->GetSignature(fd->Sig)); } void CLR_RT_SignatureParser::Initialize_FieldDef(CLR_RT_Assembly *assm, CLR_PMETADATA fd) { NATIVE_PROFILE_CLR_CORE(); - m_type = CLR_RT_SignatureParser::c_Field; - m_flags = (*fd++); - m_count = 1; + Type = CLR_RT_SignatureParser::c_Field; + Flags = (*fd++); + ParamCount = 1; - m_assm = assm; - m_sig = fd; + Assembly = assm; + Signature = fd; + + GenParamCount = 0; + IsGenericInst = false; } //--// +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodDef_Instance* md) +{ + NATIVE_PROFILE_CLR_CORE(); + + Method = md->Method(); + + Initialize_MethodSignature(md->m_assm, md->m_assm->GetSignature(md->m_target->Sig)); +} -void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md) +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly* assm, const CLR_RECORD_METHODDEF* md) { NATIVE_PROFILE_CLR_CORE(); - Initialize_MethodSignature(assm, assm->GetSignature(md->sig)); + + Method = 0xFFFF; + + Initialize_MethodSignature(assm, assm->GetSignature(md->Sig)); } void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, CLR_PMETADATA md) { NATIVE_PROFILE_CLR_CORE(); - m_type = CLR_RT_SignatureParser::c_Method; - m_flags = (*md++); - m_count = (*md++) + 1; - m_assm = assm; - m_sig = md; + Type = CLR_RT_SignatureParser::c_Method; + + Flags = (*md++); + + if ((Flags & PIMAGE_CEE_CS_CALLCONV_GENERIC) == PIMAGE_CEE_CS_CALLCONV_GENERIC) + { + // is generic instance, has generic parameters count + GenParamCount = (*md++); + } + else + { + GenParamCount = 0; + } + + ParamCount = (*md++) + 1; + + Assembly = assm; + Signature = md; + + IsGenericInst = false; +} + +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instance* ms) +{ + NATIVE_PROFILE_CLR_CORE(); + + Method = ms->Method(); + + Signature = ms->m_assm->GetSignature(ms->m_target->Instantiation); + + Type = CLR_RT_SignatureParser::c_MethodSpec; + + Flags = (*Signature++); + + if (Flags != PIMAGE_CEE_CS_CALLCONV_GENERICINST) + { + // call is wrong + return; + } + + ParamCount = (*Signature++); + + Assembly = ms->m_assm; + + GenParamCount = ParamCount; + + IsGenericInst = false; +} + +//--// + +bool CLR_RT_SignatureParser::Initialize_GenericParamTypeSignature(CLR_RT_Assembly* assm, const CLR_RECORD_GENERICPARAM* gp) +{ + NATIVE_PROFILE_CLR_CORE(); + + Type = CLR_RT_SignatureParser::c_GenericParamType; + + Assembly = assm; + + // need to check for valid signature + if (gp->Sig != 0xFFFF) + { + Signature = assm->GetSignature(gp->Sig); + ParamCount = 1; + } + else + { + // can't process... + return false; + } + + Flags = 0; + + GenParamCount = 0; + IsGenericInst = false; + + // done here + return true; } //--// @@ -286,12 +398,15 @@ void CLR_RT_SignatureParser::Initialize_MethodLocals(CLR_RT_Assembly *assm, cons // If you change this method, change "CLR_RT_ExecutionEngine::InitializeLocals" too. // - m_assm = assm; - m_sig = assm->GetSignature(md->locals); + Assembly = assm; + Signature = assm->GetSignature(md->Locals); - m_type = CLR_RT_SignatureParser::c_Locals; - m_flags = 0; - m_count = md->numLocals; + Type = CLR_RT_SignatureParser::c_Locals; + Flags = 0; + ParamCount = md->LocalsCount; + + GenParamCount = 0; + IsGenericInst = false; } //--// @@ -299,11 +414,14 @@ void CLR_RT_SignatureParser::Initialize_MethodLocals(CLR_RT_Assembly *assm, cons void CLR_RT_SignatureParser::Initialize_Objects(CLR_RT_HeapBlock *lst, int count, bool fTypes) { NATIVE_PROFILE_CLR_CORE(); - m_lst = lst; + ObjectList = lst; - m_type = CLR_RT_SignatureParser::c_Object; - m_flags = fTypes ? 1 : 0; - m_count = count; + Type = CLR_RT_SignatureParser::c_Object; + Flags = fTypes ? 1 : 0; + ParamCount = count; + + GenParamCount = 0; + IsGenericInst = false; } //--// @@ -319,36 +437,38 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) NANOCLR_HEADER(); - _ASSERTE(m_count > 0); + _ASSERTE(ParamCount > 0); - m_count--; + ParamCount--; - res.m_fByRef = false; - res.m_levels = 0; + res.IsByRef = false; + res.Levels = 0; + res.GenericParamPosition = 0xFFFF; + res.Class.Clear(); - switch (m_type) + switch (Type) { case c_Interfaces: { CLR_RT_TypeDef_Instance cls; - res.m_dt = DATATYPE_CLASS; + res.DataType = DATATYPE_CLASS; - if (cls.ResolveToken(CLR_TkFromStream(m_sig), m_assm) == false) + if (cls.ResolveToken(CLR_TkFromStream(Signature), Assembly) == false) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - res.m_cls = cls; + res.Class = cls; } break; case c_Object: { CLR_RT_TypeDescriptor desc; - CLR_RT_HeapBlock *ptr = m_lst++; + CLR_RT_HeapBlock *ptr = ObjectList++; - if (m_flags) + if (Flags) { // Reflection types are now boxed, so unbox first if (ptr->DataType() == DATATYPE_OBJECT) @@ -368,7 +488,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) { case DATATYPE_BYREF: case DATATYPE_ARRAY_BYREF: - res.m_fByRef = true; + res.IsByRef = true; break; default: @@ -381,16 +501,16 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) desc.m_handlerCls.InitializeFromIndex(desc.m_reflex.m_data.m_type); - res.m_levels = desc.m_reflex.m_levels; - res.m_dt = (CLR_DataType)desc.m_handlerCls.m_target->dataType; - res.m_cls = desc.m_reflex.m_data.m_type; + res.Levels = desc.m_reflex.m_levels; + res.DataType = (NanoCLRDataType)desc.m_handlerCls.m_target->DataType; + res.Class = desc.m_reflex.m_data.m_type; // // Special case for Object types. // - if (res.m_cls.m_data == g_CLR_RT_WellKnownTypes.m_Object.m_data) + if (res.Class.m_data == g_CLR_RT_WellKnownTypes.m_Object.m_data) { - res.m_dt = DATATYPE_OBJECT; + res.DataType = DATATYPE_OBJECT; } } break; @@ -398,70 +518,122 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) default: while (true) { - res.m_dt = CLR_UncompressElementType(m_sig); + res.DataType = CLR_UncompressElementType(Signature); - switch (res.m_dt) + switch (res.DataType) { case DATATYPE_BYREF: - if (res.m_fByRef) + if (res.IsByRef) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - res.m_fByRef = true; + res.IsByRef = true; break; case DATATYPE_SZARRAY: - res.m_levels++; + res.Levels++; break; case DATATYPE_CLASS: case DATATYPE_VALUETYPE: { - CLR_UINT32 tk = CLR_TkFromStream(m_sig); +parse_type: + CLR_UINT32 tk = CLR_TkFromStream(Signature); + CLR_UINT32 index = CLR_DataFromTk(tk); - if (CLR_TypeFromTk(tk) == TBL_TypeSpec) + switch (CLR_TypeFromTk(tk)) { - CLR_RT_SignatureParser sub; - sub.Initialize_TypeSpec(m_assm, m_assm->GetTypeSpec(CLR_DataFromTk(tk))); - int extraLevels = res.m_levels; + case TBL_TypeSpec: + { + CLR_RT_SignatureParser sub; + sub.Initialize_TypeSpec(Assembly, Assembly->GetTypeSpec(index)); + CLR_RT_SignatureParser::Element res; + int extraLevels = res.Levels; - NANOCLR_CHECK_HRESULT(sub.Advance(res)); + NANOCLR_CHECK_HRESULT(sub.Advance(res)); - res.m_levels += extraLevels; - } - else - { - CLR_RT_TypeDef_Instance cls; + res.Levels += extraLevels; + } + break; - if (cls.ResolveToken(tk, m_assm) == false) - { + case TBL_TypeRef: + res.Class = Assembly->m_pCrossReference_TypeRef[index].Target; + break; + + case TBL_TypeDef: + CLR_RT_TypeDef_Instance cls; + + if (cls.ResolveToken(tk, Assembly) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + res.Class = cls; + break; + + default: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - } + } + + if (IsGenericInst) + { + // get generic arguments count + GenParamCount = (int)*Signature++; - res.m_cls = cls; + // need to update the parser counter too + ParamCount = GenParamCount; } NANOCLR_SET_AND_LEAVE(S_OK); } case DATATYPE_OBJECT: - res.m_cls = g_CLR_RT_WellKnownTypes.m_Object; - + res.Class = g_CLR_RT_WellKnownTypes.m_Object; NANOCLR_SET_AND_LEAVE(S_OK); case DATATYPE_VOID: - res.m_cls = g_CLR_RT_WellKnownTypes.m_Void; + res.Class = g_CLR_RT_WellKnownTypes.m_Void; + NANOCLR_SET_AND_LEAVE(S_OK); + + case DATATYPE_GENERICINST: + { + // set flag for GENERICINST + IsGenericInst = true; + + // get data type + NanoCLRDataType dt = (NanoCLRDataType)*Signature++; + + // sanity check + if (dt == DATATYPE_CLASS || + dt == DATATYPE_VALUETYPE) + { + // parse type + goto parse_type; + } + else + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + break; + } + + case DATATYPE_VAR: + res.GenericParamPosition = (int)*Signature++; + NANOCLR_SET_AND_LEAVE(S_OK); + + case DATATYPE_MVAR: + res.GenericParamPosition = (int)*Signature++; NANOCLR_SET_AND_LEAVE(S_OK); default: { - const CLR_RT_TypeDef_Index *cls = c_CLR_RT_DataTypeLookup[res.m_dt].m_cls; + const CLR_RT_TypeDef_Index* cls = c_CLR_RT_DataTypeLookup[res.DataType].m_cls; if (cls) { - res.m_cls = *cls; + res.Class = *cls; NANOCLR_SET_AND_LEAVE(S_OK); } else @@ -479,12 +651,12 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) //////////////////////////////////////////////////////////////////////////////////////////////////// -bool CLR_RT_Assembly_Instance::InitializeFromIndex(const CLR_RT_Assembly_Index &idx) +bool CLR_RT_Assembly_Instance::InitializeFromIndex(const CLR_RT_Assembly_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (NANOCLR_INDEX_IS_VALID(idx)) + if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = idx.m_data; + m_data = index.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; return true; @@ -506,14 +678,24 @@ void CLR_RT_Assembly_Instance::Clear() ////////////////////////////// -bool CLR_RT_TypeSpec_Instance::InitializeFromIndex(const CLR_RT_TypeSpec_Index &idx) +bool CLR_RT_TypeSpec_Instance::InitializeFromIndex(const CLR_RT_TypeSpec_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (NANOCLR_INDEX_IS_VALID(idx)) + if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = idx.m_data; + m_data = index.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetSignature(m_assm->GetTypeSpec(TypeSpec())->sig); + m_target = m_assm->GetTypeSpec(TypeSpec()); + + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(m_assm, m_assm->GetTypeSpec(index.TypeSpec())); + + CLR_RT_SignatureParser::Element element; + + // get type + parser.Advance(element); + + TypeDefIndex = element.Class.Type(); return true; } @@ -539,12 +721,12 @@ bool CLR_RT_TypeSpec_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm NATIVE_PROFILE_CLR_CORE(); if (assm && CLR_TypeFromTk(tk) == TBL_TypeSpec) { - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); - Set(assm->m_idx, idx); + Set(assm->m_index, index); m_assm = assm; - m_target = assm->GetSignature(assm->GetTypeSpec(idx)->sig); + m_target = assm->GetTypeSpec(index); return true; } @@ -589,12 +771,12 @@ bool CLR_RT_TypeDef_Instance::InitializeFromReflection(const CLR_RT_ReflectionDe return ptr ? InitializeFromIndex(*ptr) : false; } -bool CLR_RT_TypeDef_Instance::InitializeFromIndex(const CLR_RT_TypeDef_Index &idx) +bool CLR_RT_TypeDef_Instance::InitializeFromIndex(const CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (NANOCLR_INDEX_IS_VALID(idx)) + if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = idx.m_data; + m_data = index.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetTypeDef(Type()); @@ -613,13 +795,34 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodDef_Instan NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(md)) { - CLR_IDX idxAssm = md.Assembly(); - CLR_IDX idxType = md.CrossReference().GetOwner(); + CLR_INDEX indexAssm = md.Assembly(); + CLR_INDEX indexType = md.CrossReference().GetOwner(); + + Set(indexAssm, indexType); + + m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + m_target = m_assm->GetTypeDef(indexType); + + return true; + } + + Clear(); + + return false; +} + +bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodSpec_Instance &ms) +{ + NATIVE_PROFILE_CLR_CORE(); + if (NANOCLR_INDEX_IS_VALID(ms)) + { + CLR_INDEX indexAssm = ms.Assembly(); + // CLR_INDEX indexType = ms.CrossReference().GetOwner(); - Set(idxAssm, idxType); + //Set(indexAssm, indexType); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[idxAssm - 1]; - m_target = m_assm->GetTypeDef(idxType); + m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + //m_target = m_assm->GetTypeDef(indexType); return true; } @@ -636,14 +839,14 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance { CLR_RT_Assembly *assm = fd.m_assm; const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)assm->GetTable(TBL_TypeDef); - CLR_IDX idxField = fd.Field(); + CLR_INDEX indexField = fd.Field(); int i = assm->m_pTablesSize[TBL_TypeDef]; - if (fd.m_target->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) { for (; i; i--, td++) { - if (td->sFields_First <= idxField && idxField < td->sFields_First + td->sFields_Num) + if (td->FirstStaticField <= indexField && indexField < td->FirstStaticField + td->StaticFieldsCount) { break; } @@ -653,7 +856,8 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance { for (; i; i--, td++) { - if (td->iFields_First <= idxField && idxField < td->iFields_First + td->iFields_Num) + if (td->FirstInstanceField <= indexField && + indexField < td->FirstInstanceField + td->InstanceFieldsCount) { break; } @@ -662,13 +866,13 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance if (i) { - CLR_IDX idxAssm = fd.Assembly(); - CLR_IDX idxType = assm->m_pTablesSize[TBL_TypeDef] - i; + CLR_INDEX indexAssm = fd.Assembly(); + CLR_INDEX indexType = assm->m_pTablesSize[TBL_TypeDef] - i; - Set(idxAssm, idxType); + Set(indexAssm, indexType); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[idxAssm - 1]; - m_target = m_assm->GetTypeDef(idxType); + m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + m_target = m_assm->GetTypeDef(indexType); return true; } @@ -696,42 +900,112 @@ void CLR_RT_TypeDef_Instance::Clear() // if type token is not generic, we are going to resolve from the assembly else from the heapblock that may contains // generic parameter -bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_HeapBlock *sampleData) +bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller) { NATIVE_PROFILE_CLR_CORE(); if (assm) { - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - m_data = assm->m_pCrossReference_TypeRef[idx].m_target.m_data; + m_data = assm->m_pCrossReference_TypeRef[index].Target.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetTypeDef(Type()); + m_target = assm->GetTypeDef(Type()); return true; case TBL_TypeDef: - Set(assm->m_idx, idx); + Set(assm->m_index, index); m_assm = assm; - m_target = assm->GetTypeDef(idx); + m_target = assm->GetTypeDef(index); return true; - default: - // handle generic type from provided data - if (sampleData != NULL) - { - CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetTypeDef(Type()); - } - else + case TBL_GenericParam: + { + CLR_RT_GenericParam_CrossReference gp = assm->m_pCrossReference_GenericParam[index]; + + Set(gp.Class.Assembly(), gp.Class.Type()); + + m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; + m_target = m_assm->GetTypeDef(gp.Class.Type()); + + return true; + } + + case TBL_TypeSpec: + { + const CLR_RECORD_TYPESPEC* ts = assm->GetTypeSpec(index); + + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(assm, ts); + + CLR_RT_SignatureParser::Element element; + + // advance signature: get parameter + parser.Advance(element); + + // store parameter position + CLR_INT8 genericParamPosition = (CLR_INT8)element.GenericParamPosition; + + // get the caller generic type + CLR_RT_TypeSpec_Instance tsInstance; + tsInstance.InitializeFromIndex(*caller->genericType); + + switch (element.DataType) { - m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; - m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); + case DATATYPE_VAR: + { + CLR_RT_GenericParam_Index gpIndex; + + caller->m_assm->FindGenericParamAtTypeDef(*caller, genericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + // get TypeDef instance from generic parameter index + m_data = gp.Class.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; + m_target = m_assm->GetTypeDef(gp.Class.Type()); + + break; + } + case DATATYPE_MVAR: + { + CLR_RT_GenericParam_Index gpIndex; + + caller->m_assm->FindGenericParamAtMethodDef(*caller, genericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + // get TypeDef instance from generic parameter index + m_data = gp.Class.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; + m_target = m_assm->GetTypeDef(gp.Class.Type()); + + break; + } + default: + return false; } + + return true; + } + + default: + //// handle generic type from provided data + //if (sampleData != NULL) + //{ + // CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); + // m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + // m_target = m_assm->GetTypeDef(Type()); + //} + //else + //{ + // m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; + // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; + // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); + //} return true; // the remaining data types aren't to be handled break; @@ -750,22 +1024,25 @@ bool CLR_RT_TypeDef_Instance::SwitchToParent() NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(*this)) { - CLR_IDX extends = m_target->extends; - - if (extends != CLR_EmptyIndex) + if (m_target->HasValidExtendsType()) { CLR_RT_TypeDef_Index tmp; const CLR_RT_TypeDef_Index *cls; - if (extends & 0x8000) // TypeRef - { - cls = &m_assm->m_pCrossReference_TypeRef[extends & 0x7FFF].m_target; - } - else + switch (m_target->Extends()) { - tmp.Set(Assembly(), extends); + case TBL_TypeDef: + tmp.Set(Assembly(), m_target->ExtendsIndex()); + cls = &tmp; + break; + + case TBL_TypeRef: + cls = &m_assm->m_pCrossReference_TypeRef[m_target->ExtendsIndex()].Target; + break; - cls = &tmp; + // all others are not supported + default: + return false; } return InitializeFromIndex(*cls); @@ -786,14 +1063,15 @@ bool CLR_RT_TypeDef_Instance::HasFinalizer() const ////////////////////////////// -bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index &idx) +bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (NANOCLR_INDEX_IS_VALID(idx)) + if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = idx.m_data; + m_data = index.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetFieldDef(Field()); + genericType = NULL; return true; } @@ -801,6 +1079,7 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & m_data = 0; m_assm = NULL; m_target = NULL; + genericType = NULL; return false; } @@ -812,6 +1091,7 @@ void CLR_RT_FieldDef_Instance::Clear() m_assm = NULL; m_target = NULL; + genericType = NULL; } bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) @@ -819,21 +1099,66 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm NATIVE_PROFILE_CLR_CORE(); if (assm) { - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); switch (CLR_TypeFromTk(tk)) { case TBL_FieldRef: - m_data = assm->m_pCrossReference_FieldRef[idx].m_target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetFieldDef(Field()); - return true; + { + const CLR_RECORD_FIELDREF* fr = assm->GetFieldRef(index); + + switch (fr->Owner()) + { + case TBL_TypeRef: + m_data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].Target.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetFieldDef(Field()); + + // invalidate generic type + genericType = NULL; + + break; + + case TBL_TypeSpec: + { + genericType = &assm->m_pCrossReference_FieldRef[index].GenericType; + + const CLR_RECORD_TYPESPEC* ts = assm->GetTypeSpec(genericType->TypeSpec()); + CLR_RT_FieldDef_Index field; + + if (!assm->FindFieldDef( + ts, + assm->GetString(fr->Name), + assm, + fr->Sig, field)) + { + return false; + } + + Set(assm->m_index, field.Field()); + + m_assm = assm; + m_target = m_assm->GetFieldDef(Field()); + + break; + } + default: + // shouldn't be here + return false; + } + + return true; + } case TBL_FieldDef: - Set(assm->m_idx, idx); + Set(assm->m_index, index); m_assm = assm; - m_target = m_assm->GetFieldDef(idx); + m_target = m_assm->GetFieldDef(index); + + // invalidate generic type + genericType = NULL; + return true; default: @@ -849,14 +1174,15 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm ////////////////////////////// -bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index &idx) +bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (NANOCLR_INDEX_IS_VALID(idx)) + if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = idx.m_data; + m_data = index.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetMethodDef(Method()); + genericType = NULL; return true; } @@ -864,6 +1190,7 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index m_data = 0; m_assm = NULL; m_target = NULL; + genericType = NULL; return false; } @@ -875,6 +1202,7 @@ void CLR_RT_MethodDef_Instance::Clear() m_assm = NULL; m_target = NULL; + genericType = NULL; } bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) @@ -882,23 +1210,130 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass NATIVE_PROFILE_CLR_CORE(); if (assm) { - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); switch (CLR_TypeFromTk(tk)) { case TBL_MethodRef: - m_data = assm->m_pCrossReference_MethodRef[idx].m_target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetMethodDef(Method()); + { + const CLR_RECORD_METHODREF* mr = assm->GetMethodRef(index); + + if (mr->Owner() == TBL_TypeSpec) + { + genericType = &assm->m_pCrossReference_MethodRef[index].GenericType; + + const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); + + CLR_RT_MethodDef_Index method; + + if (!assm->FindMethodDef( + ts, + assm->GetString(mr->Name), + assm, + mr->Sig, method)) + { + return false; + } + + Set(assm->m_index, method.Method()); + + m_assm = assm; + m_target = m_assm->GetMethodDef(method.Method()); + } + else + { + m_data = assm->m_pCrossReference_MethodRef[mr->OwnerIndex()].Target.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetMethodDef(Method()); + + // invalidate GenericType + genericType = NULL; + } + return true; + } case TBL_MethodDef: - Set(assm->m_idx, idx); + Set(assm->m_index, index); + + m_assm = assm; + m_target = m_assm->GetMethodDef(index); + // invalidate generic type + genericType = NULL; + + return true; + + case TBL_MethodSpec: + { m_assm = assm; - m_target = m_assm->GetMethodDef(idx); + + const CLR_RECORD_METHODSPEC* ms = m_assm->GetMethodSpec(index); + + CLR_RT_MethodSpec_Index msIndex; + msIndex.Set(m_assm->m_index, index); + + switch (ms->MethodKind()) + { + case TBL_MethodDef: + Set(m_assm->m_index, ms->MethodIndex()); + m_assm = assm; + m_target = m_assm->GetMethodDef(ms->MethodIndex()); + break; + + case TBL_MethodRef: + m_data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetMethodDef(Method()); + + break; + + default: + // shouldn't be here + return false; + } + + // get generic type + genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; + return true; + } + case TBL_TypeSpec: + { + CLR_RT_MethodSpec_Index methodSpec; + assm->FindMethodSpecFromTypeSpec(index, methodSpec); + + const CLR_RECORD_METHODSPEC* ms = assm->GetMethodSpec(index); + + switch (ms->MethodKind()) + { + case TBL_MethodDef: + Set(assm->m_index, ms->MethodIndex()); + + m_assm = assm; + m_target = m_assm->GetMethodDef(ms->MethodIndex()); + + + return true; + + case TBL_MethodRef: + m_data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetMethodDef(Method()); + return true; + + default: + // shouldn't be here + return false; + } + break; + + // get generic type + genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; + + return true; + } default: // the remaining data types aren't to be handled break; @@ -910,21 +1345,83 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass return false; } -//////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////// -void CLR_RT_TypeDescriptor::TypeDescriptor_Initialize() +bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam_Index& index) { NATIVE_PROFILE_CLR_CORE(); - m_flags = 0; // CLR_UINT32 m_flags; - m_handlerCls.Clear(); // CLR_RT_TypeDef_Instance m_handlerCls; - // - m_reflex.Clear(); // CLR_RT_ReflectionDef_Index m_reflex; -} -HRESULT CLR_RT_TypeDescriptor::InitializeFromDataType(CLR_DataType dt) -{ - NATIVE_PROFILE_CLR_CORE(); - NANOCLR_HEADER(); + if (NANOCLR_INDEX_IS_VALID(index)) + { + m_data = index.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetGenericParam(GenericParam()); + + return true; + } + + m_data = 0; + m_assm = NULL; + m_target = NULL; + + return false; +} + +void CLR_RT_GenericParam_Instance::Clear() +{ + NATIVE_PROFILE_CLR_CORE(); + CLR_RT_GenericParam_Index::Clear(); + + m_assm = NULL; + m_target = NULL; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + + if (NANOCLR_INDEX_IS_VALID(index)) + { + m_data = index.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + m_target = m_assm->GetMethodSpec(Method()); + + return true; + } + + m_data = 0; + m_assm = NULL; + m_target = NULL; + + return false; +} + +void CLR_RT_MethodSpec_Instance::Clear() +{ + NATIVE_PROFILE_CLR_CORE(); + CLR_RT_MethodSpec_Index::Clear(); + + m_assm = NULL; + m_target = NULL; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +void CLR_RT_TypeDescriptor::TypeDescriptor_Initialize() +{ + NATIVE_PROFILE_CLR_CORE(); + m_flags = 0; + m_handlerCls.Clear(); + m_handlerGenericType.Clear(); + m_reflex.Clear(); +} + +HRESULT CLR_RT_TypeDescriptor::InitializeFromDataType(NanoCLRDataType dt) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); if (dt >= DATATYPE_FIRST_INVALID) { @@ -953,6 +1450,8 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromDataType(CLR_DataType dt) } } + m_handlerGenericType.Clear(); + NANOCLR_NOCLEANUP(); } @@ -978,6 +1477,9 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromReflection(const CLR_RT_ReflectionD ConvertToArray(); } + m_handlerCls.Clear(); + m_handlerGenericType.Clear(); + NANOCLR_NOCLEANUP(); } @@ -994,7 +1496,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromTypeSpec(const CLR_RT_TypeSpec_Inde NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); + //parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); NANOCLR_SET_AND_LEAVE(InitializeFromSignatureParser(parser)); @@ -1012,7 +1514,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } else { - const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_handlerCls.m_target->dataType]; + const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_handlerCls.m_target->DataType]; m_flags = dtl.m_flags & CLR_RT_DataTypeLookup::c_SemanticMask; @@ -1022,7 +1524,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl if (m_flags == CLR_RT_DataTypeLookup::c_Primitive) { - if ((m_handlerCls.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { m_flags = CLR_RT_DataTypeLookup::c_Enum; @@ -1030,7 +1532,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } else { - switch (m_handlerCls.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) + switch (m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) { case CLR_RECORD_TYPEDEF::TD_Semantics_ValueType: m_flags = CLR_RT_DataTypeLookup::c_ValueType; @@ -1058,6 +1560,30 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } } + m_handlerGenericType.Clear(); + + NANOCLR_NOCLEANUP(); +} + +HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_Index& genericType) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + if (m_handlerGenericType.InitializeFromIndex(genericType) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + else + { + m_flags = CLR_RT_DataTypeLookup::c_ManagedType | CLR_RT_DataTypeLookup::c_GenericInstance; + + m_reflex.m_kind = REFLECTION_GENERICTYPE; + m_reflex.m_data.m_genericType = m_handlerGenericType; + } + + m_handlerCls.Clear(); + NANOCLR_NOCLEANUP(); } @@ -1074,7 +1600,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromFieldDefinition(const CLR_RT_FieldD NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignatureParser &parser) +HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignatureParser& parser) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -1088,11 +1614,18 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignaturePar NANOCLR_CHECK_HRESULT(parser.Advance(res)); - NANOCLR_CHECK_HRESULT(InitializeFromType(res.m_cls)); - - if (res.m_levels) + if (res.DataType == DATATYPE_GENERICINST) + { + NANOCLR_CHECK_HRESULT(InitializeFromGenericType(res.TypeSpec)); + } + else + { + NANOCLR_CHECK_HRESULT(InitializeFromType(res.Class)); + } + + if (res.Levels) { - m_reflex.m_levels = res.m_levels; + m_reflex.m_levels = res.Levels; ConvertToArray(); } @@ -1106,11 +1639,11 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) NANOCLR_HEADER(); const CLR_RT_HeapBlock *obj = &ref; - CLR_DataType dt; + NanoCLRDataType dt; while (true) { - dt = (CLR_DataType)obj->DataType(); + dt = (NanoCLRDataType)obj->DataType(); if (dt == DATATYPE_BYREF || dt == DATATYPE_OBJECT) { @@ -1133,6 +1666,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) { const CLR_RT_TypeDef_Index *cls = NULL; const CLR_RT_ReflectionDef_Index *reflex = NULL; + const CLR_RT_TypeSpec_Index* genericType = NULL; switch (dt) { @@ -1219,6 +1753,10 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) } break; + case DATATYPE_GENERICINST: + genericType = &obj->ObjectGenericType(); + break; + //--// default: @@ -1235,6 +1773,11 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) m_reflex = *reflex; } + if (genericType) + { + NANOCLR_CHECK_HRESULT(InitializeFromGenericType(*genericType)); + } + if (dt == DATATYPE_SZARRAY) { ConvertToArray(); @@ -1300,7 +1843,7 @@ bool CLR_RT_TypeDescriptor::GetElementType(CLR_RT_TypeDescriptor &sub) //////////////////////////////////////// -HRESULT CLR_RT_TypeDescriptor::ExtractObjectAndDataType(CLR_RT_HeapBlock *&ref, CLR_DataType &dt) +HRESULT CLR_RT_TypeDescriptor::ExtractObjectAndDataType(CLR_RT_HeapBlock *&ref, NanoCLRDataType &dt) { NATIVE_PROFILE_CLR_CORE(); @@ -1308,7 +1851,7 @@ HRESULT CLR_RT_TypeDescriptor::ExtractObjectAndDataType(CLR_RT_HeapBlock *&ref, while (true) { - dt = (CLR_DataType)ref->DataType(); + dt = (NanoCLRDataType)ref->DataType(); if (dt == DATATYPE_BYREF || dt == DATATYPE_OBJECT) { @@ -1331,7 +1874,7 @@ HRESULT CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(const CLR_RT_HeapBlock NANOCLR_HEADER(); CLR_RT_HeapBlock *obj = (CLR_RT_HeapBlock *)&ref; - CLR_DataType dt; + NanoCLRDataType dt; NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractObjectAndDataType(obj, dt)); @@ -1359,8 +1902,17 @@ HRESULT CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(const CLR_RT_HeapBlock NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(ref)) - // If desc.InitializeFromObject( ref ) call succeded, then we use m_handlerCls for res - res = desc.m_handlerCls; + // If desc.InitializeFromObject( ref ) call succeed, then we need to find out what to call + + if (desc.GetDataType() == DATATYPE_GENERICINST) + { + res.Set(desc.m_handlerGenericType.Assembly(), desc.m_handlerGenericType.TypeDefIndex); + } + else + { + // use m_handlerCls for res + res = desc.m_handlerCls; + } if (NANOCLR_INDEX_IS_INVALID(res)) { @@ -1375,11 +1927,13 @@ HRESULT CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(const CLR_RT_HeapBlock /////////////////////////////////////////////////////////////////////////////////////////////////// -// -// Keep this string less than 8-character long (including terminator) because it's stuffed into an 8-byte structure. -// -static const char c_MARKER_ASSEMBLY_V1[] = "NFMRK1"; +// Keep these strings less than 8-character long (including terminator) because it's stuffed into an 8-byte structure. +// static const char c_MARKER_ASSEMBLY_V1[] = "NFMRK1"; +static const char c_MARKER_ASSEMBLY_V2[] = "NFMRK2"; +/// @brief Check for valid assembly header (CRC32 of header, string table version and marker) +/// +/// @return Check result bool CLR_RECORD_ASSEMBLY::GoodHeader() const { NATIVE_PROFILE_CLR_CORE(); @@ -1387,36 +1941,32 @@ bool CLR_RECORD_ASSEMBLY::GoodHeader() const header.headerCRC = 0; if (SUPPORT_ComputeCRC(&header, sizeof(header), 0) != this->headerCRC) + { return false; + } if (this->stringTableVersion != c_CLR_StringTable_Version) + { return false; + } - return memcmp(marker, c_MARKER_ASSEMBLY_V1, sizeof(c_MARKER_ASSEMBLY_V1)) == 0; + return memcmp(marker, c_MARKER_ASSEMBLY_V2, sizeof(c_MARKER_ASSEMBLY_V2)) == 0; } +/// @brief Check for valid assembly (header and CRC32 of assembly content) +/// +/// @return bool Check result bool CLR_RECORD_ASSEMBLY::GoodAssembly() const { NATIVE_PROFILE_CLR_CORE(); if (!GoodHeader()) + { return false; - return SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0) == this->assemblyCRC; -} - -#if defined(VIRTUAL_DEVICE) - -void CLR_RECORD_ASSEMBLY::ComputeCRC() -{ - NATIVE_PROFILE_CLR_CORE(); - memcpy(marker, c_MARKER_ASSEMBLY_V1, sizeof(marker)); + } - headerCRC = 0; - assemblyCRC = SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0); - headerCRC = SUPPORT_ComputeCRC(this, sizeof(*this), 0); + return SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0) == this->assemblyCRC; } -#endif - CLR_UINT32 CLR_RECORD_ASSEMBLY::ComputeAssemblyHash(const char *name, const CLR_RECORD_VERSION &ver) { NATIVE_PROFILE_CLR_CORE(); @@ -1541,6 +2091,12 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) buffer += offsets.iFieldDef; m_pCrossReference_MethodDef = (CLR_RT_MethodDef_CrossReference *)buffer; buffer += offsets.iMethodDef; + m_pCrossReference_GenericParam = (CLR_RT_GenericParam_CrossReference *)buffer; + buffer += offsets.iGenericParam; + m_pCrossReference_MethodSpec = (CLR_RT_MethodSpec_CrossReference *)buffer; + buffer += offsets.iMethodSpec; + m_pCrossReference_TypeSpec = (CLR_RT_TypeSpec_CrossReference *)buffer; + buffer += offsets.iTypeSpec; #if !defined(NANOCLR_APPDOMAINS) m_pStaticFields = (CLR_RT_HeapBlock *)buffer; @@ -1551,28 +2107,70 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) //--// - {ITERATE_THROUGH_RECORDS(this, i, TypeDef, TYPEDEF){dst->m_flags = 0; - dst->m_totalFields = 0; - dst->m_hash = 0; -} -} + { + const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)this->GetTable(TBL_TypeDef); + CLR_RT_TypeDef_CrossReference *dst = this->m_pCrossReference_TypeDef; + for (i = 0; i < this->m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) + { + dst->m_flags = 0; + dst->m_totalFields = 0; + dst->m_hash = 0; + } + } -{ITERATE_THROUGH_RECORDS(this, i, FieldDef, FIELDDEF){dst->m_offset = CLR_EmptyIndex; -} -} + { + const CLR_RECORD_FIELDDEF *src = (const CLR_RECORD_FIELDDEF *)this->GetTable(TBL_FieldDef); + CLR_RT_FieldDef_CrossReference *dst = this->m_pCrossReference_FieldDef; + for (i = 0; i < this->m_pTablesSize[TBL_FieldDef]; i++, src++, dst++) + { + dst->m_offset = CLR_EmptyIndex; + } + } -{ITERATE_THROUGH_RECORDS(this, i, MethodDef, METHODDEF){dst->m_data = CLR_EmptyIndex; -} -} + { + const CLR_RECORD_METHODDEF *src = (const CLR_RECORD_METHODDEF *)this->GetTable(TBL_MethodDef); + CLR_RT_MethodDef_CrossReference *dst = this->m_pCrossReference_MethodDef; + for (i = 0; i < this->m_pTablesSize[TBL_MethodDef]; i++, src++, dst++) + { + dst->m_data = CLR_EmptyIndex; + } + } + + { + const CLR_RECORD_GENERICPARAM *src = (const CLR_RECORD_GENERICPARAM *)this->GetTable(TBL_GenericParam); + CLR_RT_GenericParam_CrossReference *dst = this->m_pCrossReference_GenericParam; + for (i = 0; i < this->m_pTablesSize[TBL_GenericParam]; i++, src++, dst++) + { + dst->m_data = CLR_EmptyIndex; + } + } + + { + const CLR_RECORD_METHODSPEC *src = (const CLR_RECORD_METHODSPEC *)this->GetTable(TBL_MethodSpec); + CLR_RT_MethodSpec_CrossReference *dst = this->m_pCrossReference_MethodSpec; + for (i = 0; i < this->m_pTablesSize[TBL_MethodSpec]; i++, src++, dst++) + { + dst->m_data = CLR_EmptyIndex; + } + } + + { + const CLR_RECORD_TYPESPEC* src = (const CLR_RECORD_TYPESPEC*)this->GetTable(TBL_TypeSpec); + CLR_RT_TypeSpec_CrossReference* dst = this->m_pCrossReference_TypeSpec; + for (i = 0; i < this->m_pTablesSize[TBL_TypeSpec]; i++, src++, dst++) + { + dst->GenericType.m_data = 0; + } + } #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) -{ - m_pDebuggingInfo_MethodDef = (CLR_RT_MethodDef_DebuggingInfo *)buffer; - buffer += offsets.iDebuggingInfoMethods; + { + m_pDebuggingInfo_MethodDef = (CLR_RT_MethodDef_DebuggingInfo *)buffer; + buffer += offsets.iDebuggingInfoMethods; - memset(m_pDebuggingInfo_MethodDef, 0, offsets.iDebuggingInfoMethods); -} -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + memset(m_pDebuggingInfo_MethodDef, 0, offsets.iDebuggingInfoMethods); + } +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_RT_Assembly *&assm) @@ -1589,17 +2187,17 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R NANOCLR_CLEAR(*skeleton); if (header->GoodAssembly() == false) + { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Failed in type system: assembly is not good.\n"); + } skeleton->m_header = header; - // // Compute overall size for assembly data structure. - // { for (uint32_t i = 0; i < ARRAYSIZE(skeleton->m_pTablesSize) - 1; i++) { - skeleton->m_pTablesSize[i] = header->SizeOfTable((CLR_TABLESENUM)i); + skeleton->m_pTablesSize[i] = header->SizeOfTable((NanoCLRTable)i); } skeleton->m_pTablesSize[TBL_AssemblyRef] /= sizeof(CLR_RECORD_ASSEMBLYREF); @@ -1609,23 +2207,23 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R skeleton->m_pTablesSize[TBL_TypeDef] /= sizeof(CLR_RECORD_TYPEDEF); skeleton->m_pTablesSize[TBL_FieldDef] /= sizeof(CLR_RECORD_FIELDDEF); skeleton->m_pTablesSize[TBL_MethodDef] /= sizeof(CLR_RECORD_METHODDEF); - skeleton->m_pTablesSize[TBL_Attributes] /= sizeof(CLR_RECORD_ATTRIBUTE); + skeleton->m_pTablesSize[TBL_GenericParam] /= sizeof(CLR_RECORD_GENERICPARAM); + skeleton->m_pTablesSize[TBL_MethodSpec] /= sizeof(CLR_RECORD_METHODSPEC); skeleton->m_pTablesSize[TBL_TypeSpec] /= sizeof(CLR_RECORD_TYPESPEC); + skeleton->m_pTablesSize[TBL_Attributes] /= sizeof(CLR_RECORD_ATTRIBUTE); skeleton->m_pTablesSize[TBL_Resources] /= sizeof(CLR_RECORD_RESOURCE); skeleton->m_pTablesSize[TBL_ResourcesFiles] /= sizeof(CLR_RECORD_RESOURCE_FILE); } //--// - // // Count static fields. - // { const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)skeleton->GetTable(TBL_TypeDef); for (int i = 0; i < skeleton->m_pTablesSize[TBL_TypeDef]; i++, src++) { - skeleton->m_iStaticFields += src->sFields_Num; + skeleton->m_iStaticFields += src->StaticFieldsCount; } } @@ -1635,28 +2233,42 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R CLR_RT_Assembly::Offsets offsets; offsets.iBase = ROUNDTOMULTIPLE(sizeof(CLR_RT_Assembly), CLR_UINT32); + offsets.iAssemblyRef = ROUNDTOMULTIPLE( skeleton->m_pTablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), CLR_UINT32); + offsets.iTypeRef = ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), CLR_UINT32); + offsets.iFieldRef = ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); + offsets.iMethodRef = ROUNDTOMULTIPLE( skeleton->m_pTablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), CLR_UINT32); + offsets.iTypeDef = ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); + offsets.iFieldDef = ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); + offsets.iMethodDef = ROUNDTOMULTIPLE( skeleton->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), CLR_UINT32); - if (skeleton->m_header->numOfPatchedMethods > 0) - { - NANOCLR_SET_AND_LEAVE(CLR_E_ASSM_PATCHING_NOT_SUPPORTED); - } + offsets.iGenericParam = ROUNDTOMULTIPLE( + skeleton->m_pTablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), + CLR_UINT32); + + offsets.iMethodSpec = ROUNDTOMULTIPLE( + skeleton->m_pTablesSize[TBL_MethodSpec] * sizeof(CLR_RT_MethodSpec_CrossReference), + CLR_UINT32); + + offsets.iTypeSpec = ROUNDTOMULTIPLE( + skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RT_TypeSpec_CrossReference), + CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) offsets.iStaticFields = ROUNDTOMULTIPLE(skeleton->m_iStaticFields * sizeof(CLR_RT_HeapBlock), CLR_UINT32); @@ -1666,10 +2278,11 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R offsets.iDebuggingInfoMethods = ROUNDTOMULTIPLE( skeleton->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) size_t iTotalRamSize = offsets.iBase + offsets.iAssemblyRef + offsets.iTypeRef + offsets.iFieldRef + - offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef; + offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + + offsets.iGenericParam + offsets.iMethodSpec + offsets.iTypeSpec; #if !defined(NANOCLR_APPDOMAINS) iTotalRamSize += offsets.iStaticFields; @@ -1677,7 +2290,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) iTotalRamSize += offsets.iDebuggingInfoMethods; -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //--// @@ -1716,8 +2329,10 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R size_t iMetaData = header->SizeOfTable(TBL_AssemblyRef) + header->SizeOfTable(TBL_TypeRef) + header->SizeOfTable(TBL_FieldRef) + header->SizeOfTable(TBL_MethodRef) + header->SizeOfTable(TBL_TypeDef) + header->SizeOfTable(TBL_FieldDef) + - header->SizeOfTable(TBL_MethodDef) + header->SizeOfTable(TBL_Attributes) + - header->SizeOfTable(TBL_TypeSpec) + header->SizeOfTable(TBL_Signatures); + header->SizeOfTable(TBL_MethodDef) + header->SizeOfTable(TBL_GenericParam) + + header->SizeOfTable(TBL_MethodSpec) + header->SizeOfTable(TBL_TypeSpec) + + header->SizeOfTable(TBL_Attributes) + + header->SizeOfTable(TBL_Signatures); CLR_Debug::Printf( " (%d RAM - %d ROM - %d METADATA)\r\n\r\n", @@ -1726,61 +2341,70 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R iMetaData); CLR_Debug::Printf( - " AssemblyRef = %8d bytes (%8d elements)\r\n", + " AssemblyRef = %6d bytes (%5d elements)\r\n", offsets.iAssemblyRef, skeleton->m_pTablesSize[TBL_AssemblyRef]); CLR_Debug::Printf( - " TypeRef = %8d bytes (%8d elements)\r\n", + " TypeRef = %6d bytes (%5d elements)\r\n", offsets.iTypeRef, skeleton->m_pTablesSize[TBL_TypeRef]); CLR_Debug::Printf( - " FieldRef = %8d bytes (%8d elements)\r\n", + " FieldRef = %6d bytes (%5d elements)\r\n", offsets.iFieldRef, skeleton->m_pTablesSize[TBL_FieldRef]); CLR_Debug::Printf( - " MethodRef = %8d bytes (%8d elements)\r\n", + " MethodRef = %6d bytes (%5d elements)\r\n", offsets.iMethodRef, skeleton->m_pTablesSize[TBL_MethodRef]); CLR_Debug::Printf( - " TypeDef = %8d bytes (%8d elements)\r\n", + " TypeDef = %6d bytes (%5d elements)\r\n", offsets.iTypeDef, skeleton->m_pTablesSize[TBL_TypeDef]); CLR_Debug::Printf( - " FieldDef = %8d bytes (%8d elements)\r\n", + " FieldDef = %6d bytes (%5d elements)\r\n", offsets.iFieldDef, skeleton->m_pTablesSize[TBL_FieldDef]); CLR_Debug::Printf( - " MethodDef = %8d bytes (%8d elements)\r\n", + " MethodDef = %6d bytes (%5d elements)\r\n", offsets.iMethodDef, skeleton->m_pTablesSize[TBL_MethodDef]); + CLR_Debug::Printf( + " GenericParam = %6d bytes (%5d elements)\r\n", + offsets.iGenericParam, + skeleton->m_pTablesSize[TBL_GenericParam]); + CLR_Debug::Printf( + " MethodSpec = %6d bytes (%5d elements)\r\n", + offsets.iMethodSpec, + skeleton->m_pTablesSize[TBL_MethodSpec]); + #if !defined(NANOCLR_APPDOMAINS) CLR_Debug::Printf( - " StaticFields = %8d bytes (%8d elements)\r\n", + " StaticFields = %6d bytes (%5d elements)\r\n", offsets.iStaticFields, skeleton->m_iStaticFields); #endif CLR_Debug::Printf("\r\n"); CLR_Debug::Printf( - " Attributes = %8d bytes (%8d elements)\r\n", + " Attributes = %6d bytes (%5d elements)\r\n", skeleton->m_pTablesSize[TBL_Attributes] * sizeof(CLR_RECORD_ATTRIBUTE), skeleton->m_pTablesSize[TBL_Attributes]); CLR_Debug::Printf( - " TypeSpec = %8d bytes (%8d elements)\r\n", + " TypeSpec = %6d bytes (%5d elements)\r\n", skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RECORD_TYPESPEC), skeleton->m_pTablesSize[TBL_TypeSpec]); CLR_Debug::Printf( - " Resources = %8d bytes (%8d elements)\r\n", + " Resources = %6d bytes (%5d elements)\r\n", skeleton->m_pTablesSize[TBL_Resources] * sizeof(CLR_RECORD_RESOURCE), skeleton->m_pTablesSize[TBL_Resources]); CLR_Debug::Printf( - " Resources Files = %8d bytes (%8d elements)\r\n", + " Resources Files = %6d bytes (%5d elements)\r\n", skeleton->m_pTablesSize[TBL_ResourcesFiles] * sizeof(CLR_RECORD_RESOURCE), skeleton->m_pTablesSize[TBL_ResourcesFiles]); - CLR_Debug::Printf(" Resources Data = %8d bytes\r\n", skeleton->m_pTablesSize[TBL_ResourcesData]); - CLR_Debug::Printf(" Strings = %8d bytes\r\n", skeleton->m_pTablesSize[TBL_Strings]); - CLR_Debug::Printf(" Signatures = %8d bytes\r\n", skeleton->m_pTablesSize[TBL_Signatures]); - CLR_Debug::Printf(" ByteCode = %8d bytes\r\n", skeleton->m_pTablesSize[TBL_ByteCode]); + CLR_Debug::Printf(" Resources Data = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_ResourcesData]); + CLR_Debug::Printf(" Strings = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_Strings]); + CLR_Debug::Printf(" Signatures = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_Signatures]); + CLR_Debug::Printf(" ByteCode = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_ByteCode]); CLR_Debug::Printf("\r\n\r\n"); } #endif @@ -1789,7 +2413,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R NANOCLR_NOCLEANUP(); } -#if defined(VIRTUAL_DEVICE) +#if defined(WIN32) HRESULT CLR_RT_Assembly::CreateInstance( const CLR_RECORD_ASSEMBLY *header, CLR_RT_Assembly *&assm, @@ -1865,12 +2489,12 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) void CLR_RT_Assembly::DestroyInstance() { NATIVE_PROFILE_CLR_CORE(); - if (m_idx) + if (m_index) { - g_CLR_RT_TypeSystem.m_assemblies[m_idx - 1] = NULL; + g_CLR_RT_TypeSystem.m_assemblies[m_index - 1] = NULL; } -#if defined(VIRTUAL_DEVICE) +#if defined(WIN32) if (this->m_strPath != NULL) { delete this->m_strPath; @@ -1899,58 +2523,46 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() ITERATE_THROUGH_RECORDS(this, i, TypeRef, TYPEREF) { - if (src->scope & 0x8000) // Flag for TypeRef + // TODO check typedef + if (src->Scope & 0x8000) // Flag for TypeRef { CLR_RT_TypeDef_Instance inst; - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->scope & 0x7FFF].m_target) == false) + if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->Scope & 0x7FFF].Target) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->scope); + CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->Scope); #endif -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown scope: %08x\r\n", src->scope); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown scope: %08x\r\n", src->scope); -#endif + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - const char *szName = GetString(src->name); - if (inst.m_assm->FindTypeDef(szName, inst.Type(), dst->m_target) == false) + const char *szName = GetString(src->Name); + if (inst.m_assm->FindTypeDef(szName, inst.Type(), dst->Target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s\r\n", szName); #endif - -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown type: %s\r\n", szName); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); -#endif + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } } else { - CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->scope].m_target; + CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->Scope].m_target; if (assm == NULL) { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: assm is null\n"); } - const char *szNameSpace = GetString(src->nameSpace); - const char *szName = GetString(src->name); - if (assm->FindTypeDef(szName, szNameSpace, dst->m_target) == false) + const char *szNameSpace = GetString(src->NameSpace); + const char *szName = GetString(src->Name); + if (assm->FindTypeDef(szName, szNameSpace, dst->Target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s.%s\r\n", szNameSpace, szName); #endif -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown type: %s.%s\r\n", szNameSpace, szName); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); -#endif + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } } } @@ -1967,34 +2579,107 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() ITERATE_THROUGH_RECORDS(this, i, FieldRef, FIELDREF) { - CLR_RT_TypeDef_Instance inst; + CLR_RT_TypeDef_Index typeDef; + typeDef.Clear(); + + CLR_RT_TypeDef_Instance typeDefInstance; + + CLR_RT_TypeSpec_Index typeSpec; + typeSpec.Clear(); + + CLR_RT_TypeSpec_Instance typeSpecInstance; + + switch (src->Owner()) + { + case TBL_TypeRef: + typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; + break; + + //case CLR_MemberRefParent::MRP_TypeDef: + // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // break; + // + //case CLR_MemberRefParent::MRP_MethodDef: + // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // fGot = true; + // break; + + case TBL_TypeSpec: + typeSpec.Set(this->m_index, src->OwnerIndex()); + break; + + default: +#if !defined(BUILD_RTM) + CLR_Debug::Printf( + "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", + src->encodedOwner); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + const char* fieldName = GetString(src->Name); - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->container].m_target) == false) + if (NANOCLR_INDEX_IS_VALID(typeSpec)) { + if (typeSpecInstance.InitializeFromIndex(typeSpec) == false) + { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve Field: unknown scope: %08x\r\n", src->container); + CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); #endif -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve Field: unknown scope: %08x\r\n", src->container); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve Field: unknown scope: %08x\r\n", src->container); + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + if (!typeSpecInstance.m_assm->FindFieldDef(typeSpecInstance.m_target, fieldName, this, src->Sig, dst->Target)) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf( + "Unknown FieldRef: %s.%s.%s\r\n", + "???", + "???", + fieldName); #endif - } - const char *szName = GetString(src->name); + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } - if (inst.m_assm->FindFieldDef(inst.m_target, szName, this, src->sig, dst->m_target) == false) + // set TypeSpec + dst->GenericType.m_data = typeSpec.m_data; + } + else if (NANOCLR_INDEX_IS_VALID(typeDef)) { + if (typeDefInstance.InitializeFromIndex(m_pCrossReference_TypeRef[src->OwnerIndex()].Target) == false) + { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve: unknown field: %s\r\n", szName); + CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); #endif -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown field: %s\r\n", szName); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown field: %s\r\n", szName); + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + +#if defined(VIRTUAL_DEVICE) && defined(DEBUG_RESOLUTION) + const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; + CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + + CLR_Debug::Printf( + "Unknown scope when resolving FieldRef: %s.%s.%s\r\n", + qASSM->GetString(qTD->NameSpace), + qASSM->GetString(qTD->Name), + name); +#endif + + if (typeDefInstance.m_assm->FindFieldDef(typeDefInstance.m_target, fieldName, this, src->Sig, dst->Target) == false) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf("Unknown FieldRef: %s\r\n", fieldName); #endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + // invalidate GenericType + dst->GenericType.m_data = CLR_EmptyToken; } } @@ -2010,68 +2695,172 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() ITERATE_THROUGH_RECORDS(this, i, MethodRef, METHODREF) { - CLR_RT_TypeDef_Instance inst; - - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->container].m_target) == false) - { -#if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve Field: unknown scope: %08x\r\n", src->container); -#endif + CLR_RT_TypeDef_Index typeDef; + typeDef.Clear(); -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve Field: unknown scope: %08x\r\n", src->container); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve Field: unknown scope: %08x\r\n", src->container); -#endif - } + CLR_RT_TypeDef_Instance typeDefInstance; + + CLR_RT_TypeSpec_Index typeSpec; + typeSpec.Clear(); - const char *name = GetString(src->name); + CLR_RT_TypeSpec_Instance typeSpecInstance; + bool fGot = false; + const char* name = NULL; - while (NANOCLR_INDEX_IS_VALID(inst)) + switch (src->Owner()) { - if (inst.m_assm->FindMethodDef(inst.m_target, name, this, src->sig, dst->m_target)) - { - fGot = true; + case TBL_TypeRef: + typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; break; - } - inst.SwitchToParent(); - } - - if (fGot == false) - { - inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->container].m_target); + //case CLR_MemberRefParent::MRP_TypeDef: + // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // break; + // + //case CLR_MemberRefParent::MRP_MethodDef: + // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // fGot = true; + // break; - const CLR_RECORD_TYPEDEF *qTD = inst.m_target; - CLR_RT_Assembly *qASSM = inst.m_assm; + case TBL_TypeSpec: + typeSpec.Set(this->m_index, src->OwnerIndex()); + break; + default: #if !defined(BUILD_RTM) - CLR_Debug::Printf( - "Resolve: unknown method: %s.%s.%s\r\n", - qASSM->GetString(qTD->nameSpace), - qASSM->GetString(qTD->name), - name); -#endif - -#if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown method: %s\r\n", name); -#else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown method: %s\r\n", name); + CLR_Debug::Printf( + "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", + src->encodedOwner); #endif + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - } - NANOCLR_NOCLEANUP(); + name = GetString(src->Name); + + if (NANOCLR_INDEX_IS_VALID(typeSpec)) + { + if (typeSpecInstance.InitializeFromIndex(typeSpec) == false) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + if (typeSpecInstance.m_assm->FindMethodDef(typeSpecInstance.m_target, name, this, src->Sig, dst->Target)) + { + fGot = true; + + // set TypeSpec + dst->GenericType.m_data = typeSpec.m_data; + } + + if (fGot == false) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf( + "Unknown MethodRef: %s.%s.%s\r\n", + "???", + "???", + name); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + } + else if (NANOCLR_INDEX_IS_VALID(typeDef)) + { + if (typeDefInstance.InitializeFromIndex(typeDef) == false) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + +#if defined(VIRTUAL_DEVICE) && defined(DEBUG_RESOLUTION) + const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; + CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + + CLR_Debug::Printf( + "Unknown scope when resolving MethodRef: %s.%s.%s\r\n", + qASSM->GetString(qTD->NameSpace), + qASSM->GetString(qTD->Name), + name); +#endif + + while (NANOCLR_INDEX_IS_VALID(typeDefInstance)) + { + if (typeDefInstance.m_assm->FindMethodDef(typeDefInstance.m_target, name, this, src->Sig, dst->Target)) + { + fGot = true; + + // invalidate GenericType + dst->GenericType.m_data = CLR_EmptyToken; + + break; + } + + typeDefInstance.SwitchToParent(); + } + + if (fGot == false) + { +#if !defined(BUILD_RTM) + const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; + CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + + CLR_Debug::Printf( + "Unknown MethodRef: %s.%s.%s\r\n", + qASSM->GetString(qTD->NameSpace), + qASSM->GetString(qTD->Name), + name); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + } + } + + NANOCLR_NOCLEANUP(); +} + +HRESULT CLR_RT_Assembly::Resolve_TypeSpec() +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + int i; + + ITERATE_THROUGH_RECORDS(this, i, TypeSpec, TYPESPEC) + { + dst->GenericType.Set(m_index, i); + + CLR_RT_TypeSpec_Instance inst; + + if (inst.InitializeFromIndex(dst->GenericType) == false) + { +#if !defined(BUILD_RTM) + CLR_Debug::Printf("Resolve TypeSpec: can't create TypeSpec instance: %08x\r\n", src->Sig); +#endif + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + } + + } + + NANOCLR_NOCLEANUP(); } void CLR_RT_Assembly::Resolve_Link() { NATIVE_PROFILE_CLR_CORE(); int iStaticFields = 0; - int idxType; + int indexType; - ITERATE_THROUGH_RECORDS(this, idxType, TypeDef, TYPEDEF) + ITERATE_THROUGH_RECORDS(this, indexType, TypeDef, TYPEDEF) { int num; int i; @@ -2080,9 +2869,9 @@ void CLR_RT_Assembly::Resolve_Link() // Link static fields. // { - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->sFields_First]; + CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->FirstStaticField]; - num = src->sFields_Num; + num = src->StaticFieldsCount; for (; num; num--, fd++) { @@ -2094,15 +2883,15 @@ void CLR_RT_Assembly::Resolve_Link() // Link instance fields. // { - CLR_RT_TypeDef_Index idx; - idx.Set(m_idx, idxType); + CLR_RT_TypeDef_Index index; + index.Set(m_index, indexType); CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(idx); - CLR_IDX tot = 0; + inst.InitializeFromIndex(index); + CLR_INDEX tot = 0; do { - if (inst.m_target->flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) + if (inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) { dst->m_flags |= CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer; } @@ -2114,16 +2903,16 @@ void CLR_RT_Assembly::Resolve_Link() } #endif - tot += inst.m_target->iFields_Num; + tot += inst.m_target->InstanceFieldsCount; } while (inst.SwitchToParent()); dst->m_totalFields = tot; //--// - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->iFields_First]; + CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->FirstInstanceField]; - num = src->iFields_Num; + num = src->InstanceFieldsCount; i = tot - num + CLR_RT_HeapBlock::HB_Object_Fields_Offset; // Take into account the offset from the // beginning of the object. @@ -2137,13 +2926,59 @@ void CLR_RT_Assembly::Resolve_Link() // Link methods. // { - CLR_RT_MethodDef_CrossReference *md = &m_pCrossReference_MethodDef[src->methods_First]; + CLR_RT_MethodDef_CrossReference *md = &m_pCrossReference_MethodDef[src->FirstMethod]; - num = src->vMethods_Num + src->iMethods_Num + src->sMethods_Num; + num = src->VirtualMethodCount + src->InstanceMethodCount + src->StaticMethodCount; for (; num; num--, md++) { - md->m_data = idxType; + md->m_data = indexType; + } + } + + // + // Link generic parameters, if any + // + { + if (src->GenericParamCount) + { + CLR_RT_GenericParam_CrossReference* gp = &m_pCrossReference_GenericParam[src->FirstGenericParam]; + + // get generic parameter count for stop condition + int num = src->GenericParamCount; + CLR_UINT16 indexGenericParam = src->FirstGenericParam; + + for (; num; num--, gp++, indexGenericParam++) + { + CLR_RT_GenericParam_Index gpIndex; + gpIndex.Set(m_index, indexGenericParam); + + gp->m_target = gpIndex; + + gp->m_data = indexType; + gp->m_TypeOrMethodDef = TBL_TypeDef; + + CLR_RT_SignatureParser sub; + if (sub.Initialize_GenericParamTypeSignature(this, GetGenericParam(indexGenericParam))) + { + CLR_RT_SignatureParser::Element res; + + // get generic param type + sub.Advance(res); + + gp->DataType = res.DataType; + gp->Class = res.Class; + } + else + { + gp->DataType = DATATYPE_VOID; + + CLR_RT_TypeDef_Index td; + td.Clear(); + + gp->Class = td; + } + } } } } @@ -2388,14 +3223,14 @@ void CLR_RT_AppDomain::Relocate() CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_outOfMemoryException); } -HRESULT CLR_RT_AppDomain::VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &idx) +HRESULT CLR_RT_AppDomain::VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDef_Instance inst; - if (!inst.InitializeFromIndex(idx)) + if (!inst.InitializeFromIndex(index)) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); if (!FindAppDomainAssembly(inst.m_assm)) NANOCLR_SET_AND_LEAVE(CLR_E_APPDOMAIN_MARSHAL_EXCEPTION); @@ -2415,8 +3250,8 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock CLR_RT_HeapBlock *proxySrc = NULL; CLR_RT_HeapBlock *mbroSrc = NULL; bool fSimpleAssign = false; - CLR_RT_TypeDef_Index idxVerify = g_CLR_RT_WellKnownTypes.m_Object; - CLR_DataType dtSrc = src.DataType(); + CLR_RT_TypeDef_Index indexVerify = g_CLR_RT_WellKnownTypes.m_Object; + NanoCLRDataType dtSrc = src.DataType(); CLR_RT_AppDomain *appDomainSav = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); if (!appDomainSrc) @@ -2456,7 +3291,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock NANOCLR_CHECK_HRESULT(proxySrc->TransparentProxyValidate()); - idxVerify = proxySrc->TransparentProxyDereference()->ObjectCls(); + indexVerify = proxySrc->TransparentProxyDereference()->ObjectCls(); if (proxySrc->TransparentProxyAppDomain() != appDomainDst) { @@ -2475,7 +3310,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock if ((inst.CrossReference().m_flags & CLR_RT_TypeDef_CrossReference::TD_CR_IsMarshalByRefObject) != 0) { - idxVerify = inst; + indexVerify = inst; mbroSrc = ptr; } @@ -2486,7 +3321,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock } } - NANOCLR_CHECK_HRESULT(appDomainDst->VerifyTypeIsLoaded(idxVerify)); + NANOCLR_CHECK_HRESULT(appDomainDst->VerifyTypeIsLoaded(indexVerify)); if (fSimpleAssign) { @@ -2557,8 +3392,8 @@ HRESULT CLR_RT_AppDomain::MarshalParameters( while (count-- > 0) { - CLR_DataType dtSrc = src->DataType(); - CLR_DataType dtDst = dst->DataType(); + NanoCLRDataType dtSrc = src->DataType(); + NanoCLRDataType dtDst = dst->DataType(); if (dtSrc == DATATYPE_BYREF || dtSrc == DATATYPE_ARRAY_BYREF) { @@ -2642,14 +3477,14 @@ HRESULT CLR_RT_AppDomain::GetAssemblies(CLR_RT_HeapBlock &ref) else { CLR_RT_HeapBlock *hbObj; - CLR_RT_Assembly_Index idx; - idx.Set(pASSM->m_idx); + CLR_RT_Assembly_Index index; + index.Set(pASSM->m_index); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_Assembly)); hbObj = pArray->Dereference(); - hbObj->SetReflection(idx); + hbObj->SetReflection(index); pArray++; } @@ -2923,38 +3758,80 @@ void CLR_RT_Assembly::Resolve_MethodDef() NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODDEF *md = GetMethodDef(0); - for (int i = 0; i < m_pTablesSize[TBL_MethodDef]; i++, md++) + for (int indexMethod = 0; indexMethod < m_pTablesSize[TBL_MethodDef]; indexMethod++, md++) { const MethodIndexLookup *mil = c_MethodIndexLookup; - CLR_RT_MethodDef_Index idx; - idx.Set(m_idx, i); + CLR_RT_MethodDef_Index index; + index.Set(m_index, indexMethod); // Check for wellKnownMethods - for (size_t m = 0; m < ARRAYSIZE(c_MethodIndexLookup); m++, mil++) + for (size_t ii = 0; ii < ARRAYSIZE(c_MethodIndexLookup); ii++, mil++) { - CLR_RT_TypeDef_Index &idxType = *mil->type; - CLR_RT_MethodDef_Index &idxMethod = *mil->method; + CLR_RT_TypeDef_Index &indexType = *mil->type; + CLR_RT_MethodDef_Index &mIndex = *mil->method; - if (NANOCLR_INDEX_IS_VALID(idxType) && NANOCLR_INDEX_IS_INVALID(idxMethod)) + if (NANOCLR_INDEX_IS_VALID(indexType) && NANOCLR_INDEX_IS_INVALID(mIndex)) { CLR_RT_TypeDef_Instance instType; - _SIDE_ASSERTE(instType.InitializeFromIndex(idxType)); + _SIDE_ASSERTE(instType.InitializeFromIndex(indexType)); if (instType.m_assm == this) { - if (!strcmp(GetString(md->name), mil->name)) + if (!strcmp(GetString(md->Name), mil->name)) { - idxMethod.m_data = idx.m_data; + mIndex.m_data = index.m_data; } } } } - if (md->flags & CLR_RECORD_METHODDEF::MD_EntryPoint) + if (md->Flags & CLR_RECORD_METHODDEF::MD_EntryPoint) + { + g_CLR_RT_TypeSystem.m_entryPoint = index; + } + + // link generic parameters + if (md->GenericParamCount) { - g_CLR_RT_TypeSystem.m_entryPoint = idx; + CLR_RT_GenericParam_CrossReference* gp = &m_pCrossReference_GenericParam[md->FirstGenericParam]; + + // get generic parameter count for stop condition + int num = md->GenericParamCount; + CLR_UINT16 indexGenericParam = md->FirstGenericParam; + + for (; num; num--, gp++, indexGenericParam++) + { + CLR_RT_GenericParam_Index gpIndex; + gpIndex.Set(m_index, indexGenericParam); + + gp->m_target = gpIndex; + + gp->m_data = indexMethod; + gp->m_TypeOrMethodDef = TBL_MethodDef; + + CLR_RT_SignatureParser sub; + if (sub.Initialize_GenericParamTypeSignature(this, GetGenericParam(indexGenericParam))) + { + CLR_RT_SignatureParser::Element res; + + // get generic param type + sub.Advance(res); + + gp->DataType = res.DataType; + gp->Class = res.Class; + } + else + { + gp->DataType = DATATYPE_VOID; + + CLR_RT_TypeDef_Index td; + td.Clear(); + + gp->Class = td; + } + } } } } @@ -2968,7 +3845,7 @@ HRESULT CLR_RT_Assembly::Resolve_AllocateStaticFields(CLR_RT_HeapBlock *pStaticF for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) { - if (fd->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd->Flags & CLR_RECORD_FIELDDEF::FD_Static) { CLR_RT_FieldDef_CrossReference &res = m_pCrossReference_FieldDef[i]; @@ -3008,17 +3885,6 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() } } - if (m_header->patchEntryOffset != 0xFFFFFFFF) - { - CLR_PMETADATA ptr = GetResourceData(m_header->patchEntryOffset); - -#if defined(VIRTUAL_DEVICE) - CLR_Debug::Printf("Simulating jump into patch code...\r\n"); -#else - ((void (*)())ptr)(); -#endif - } - #if defined(NANOCLR_APPDOMAINS) // Temporary solution. All Assemblies get added to the current AppDomain // Which assemblies get loaded at boot, and when assemblies get added to AppDomain at runtime is @@ -3053,7 +3919,7 @@ CLR_UINT32 CLR_RT_Assembly::ComputeAssemblyHash(const CLR_RECORD_ASSEMBLYREF *ar //--// -bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &idx) +bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); @@ -3061,26 +3927,26 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_R for (int i = 0; i < tblSize; i++, target++) { - if (target->enclosingType == CLR_EmptyIndex) + if (!target->HasValidEnclosingType()) { - const char *szNameSpace = GetString(target->nameSpace); - const char *szName = GetString(target->name); + const char *szNameSpace = GetString(target->NameSpace); + const char *szName = GetString(target->Name); if (!strcmp(szName, name) && !strcmp(szNameSpace, nameSpace)) { - idx.Set(m_idx, i); + index.Set(m_index, i); return true; } } } - idx.Clear(); + index.Clear(); return false; } -bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_IDX scope, CLR_RT_TypeDef_Index &idx) +bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); @@ -3088,25 +3954,25 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_IDX scope, CLR_RT_TypeDe for (int i = 0; i < tblSize; i++, target++) { - if (target->enclosingType == scope) + if (target->EnclosingType() == scope) { - const char *szName = GetString(target->name); + const char *szName = GetString(target->Name); if (!strcmp(szName, name)) { - idx.Set(m_idx, i); + index.Set(m_index, i); return true; } } } - idx.Clear(); + index.Clear(); return false; } -bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &idx) +bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_CrossReference *p = m_pCrossReference_TypeDef; @@ -3121,18 +3987,115 @@ bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &idx) if (i != tblSize) { - idx.Set(m_idx, i); + index.Set(m_index, i); + + return true; + } + else + { + index.Clear(); + + return false; + } +} + +bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + const CLR_RECORD_GENERICPARAM* gp = this->GetGenericParam(0); + int tblSize = this->m_pTablesSize[TBL_GenericParam]; + + for (int i = 0; i < tblSize; i++, gp++) + { + CLR_RT_SignatureParser parserLeft; + parserLeft.Initialize_GenericParamTypeSignature(this, gp); + + CLR_RT_SignatureParser parserRight; + parserRight.Initialize_TypeSpec(this, this->GetTypeSpec(typeSpecIndex)); + + if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight)) + { + + + + return true; + } + } + + index.Clear(); + + return false; +} + +bool CLR_RT_Assembly::FindGenericParamAtTypeDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + + CLR_INDEX indexType = md.CrossReference().GetOwner(); + + CLR_INDEX paramIndex = GetTypeDef(indexType)->FirstGenericParam; + + // sanity check for valid parameter index + if (paramIndex != CLR_EmptyIndex) + { + paramIndex += genericParameterPosition; + + index.Set(m_index, paramIndex); + + return true; + } + else + { + index.Clear(); + + return false; + } +} + +bool CLR_RT_Assembly::FindGenericParamAtMethodDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + + CLR_INDEX paramIndex = GetMethodDef(md.Method())->FirstGenericParam; + + // sanity check for valid parameter index + if (paramIndex != CLR_EmptyIndex) + { + paramIndex += genericParameterPosition; + + index.Set(m_index, paramIndex); return true; } else { - idx.Clear(); + index.Clear(); return false; } } +bool CLR_RT_Assembly::FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + const CLR_RECORD_METHODSPEC* ms = this->GetMethodSpec(0); + int tblSize = this->m_pTablesSize[TBL_MethodSpec]; + + for (int i = 0; i < tblSize; i++, ms++) + { + if(ms->Container == typeSpecIndex) + { + index.Set(m_index, i); + + return true; + } + } + + index.Clear(); + + return false; +} + //--// static bool local_FindFieldDef( @@ -3141,7 +4104,7 @@ static bool local_FindFieldDef( CLR_UINT32 num, const char *szText, CLR_RT_Assembly *base, - CLR_IDX sig, + CLR_INDEX sig, CLR_RT_FieldDef_Index &res) { NATIVE_PROFILE_CLR_CORE(); @@ -3149,7 +4112,7 @@ static bool local_FindFieldDef( for (CLR_UINT32 i = 0; i < num; i++, fd++) { - const char *fieldName = assm->GetString(fd->name); + const char *fieldName = assm->GetString(fd->Name); if (!strcmp(fieldName, szText)) { @@ -3161,10 +4124,12 @@ static bool local_FindFieldDef( parserRight.Initialize_FieldDef(base, base->GetSignature(sig)); if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight) == false) + { continue; + } } - res.Set(assm->m_idx, first + i); + res.Set(assm->m_index, first + i); return true; } @@ -3179,16 +4144,60 @@ bool CLR_RT_Assembly::FindFieldDef( const CLR_RECORD_TYPEDEF *td, const char *name, CLR_RT_Assembly *base, - CLR_IDX sig, - CLR_RT_FieldDef_Index &idx) + CLR_INDEX sig, + CLR_RT_FieldDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (local_FindFieldDef(this, td->iFields_First, td->iFields_Num, name, base, sig, idx)) + if (local_FindFieldDef(this, td->FirstInstanceField, td->InstanceFieldsCount, name, base, sig, index)) return true; - if (local_FindFieldDef(this, td->sFields_First, td->sFields_Num, name, base, sig, idx)) + if (local_FindFieldDef(this, td->FirstStaticField, td->StaticFieldsCount, name, base, sig, index)) return true; - idx.Clear(); + index.Clear(); + + return false; +} + +bool CLR_RT_Assembly::FindFieldDef( + const CLR_RECORD_TYPESPEC* ts, + const char* name, + CLR_RT_Assembly* base, + CLR_SIG sig, + CLR_RT_FieldDef_Index& index) +{ + (void)ts; + + NATIVE_PROFILE_CLR_CORE(); + + const CLR_RECORD_FIELDDEF* fd = GetFieldDef(0); + + for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) + { + const char* fieldName = GetString(fd->Name); + + if (!strcmp(fieldName, name)) + { + if(base) + { + CLR_RT_SignatureParser parserLeft; + parserLeft.Initialize_FieldDef(this, fd); + + CLR_RT_SignatureParser parserRight; + parserRight.Initialize_FieldSignature(base, base->GetSignature(sig)); + + if(CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight) == false) + { + continue; + } + } + + index.Set(m_index, i); + + return true; + } + } + + index.Clear(); return false; } @@ -3198,16 +4207,16 @@ bool CLR_RT_Assembly::FindMethodDef( const char *name, CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_MethodDef_Index &idx) + CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); int i; - int num = td->vMethods_Num + td->iMethods_Num + td->sMethods_Num; - const CLR_RECORD_METHODDEF *md = GetMethodDef(td->methods_First); + int num = td->VirtualMethodCount + td->InstanceMethodCount + td->StaticMethodCount; + const CLR_RECORD_METHODDEF *md = GetMethodDef(td->FirstMethod); for (i = 0; i < num; i++, md++) { - const char *methodName = GetString(md->name); + const char *methodName = GetString(md->Name); if (!strcmp(methodName, name)) { @@ -3225,21 +4234,80 @@ bool CLR_RT_Assembly::FindMethodDef( if (fMatch) { - idx.Set(m_idx, i + td->methods_First); + index.Set(m_index, i + td->FirstMethod); return true; } } } - idx.Clear(); + index.Clear(); + + return false; +} + +bool CLR_RT_Assembly::FindMethodDef( + const CLR_RECORD_TYPESPEC* ts, + const char* name, + CLR_RT_Assembly* base, + CLR_SIG sig, + CLR_RT_MethodDef_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + + CLR_RT_TypeSpec_Index tsIndex; + base->FindTypeSpec(base->GetSignature(ts->Sig), tsIndex); + + CLR_RT_TypeSpec_Instance tsInstance; + tsInstance.InitializeFromIndex(tsIndex); + + const CLR_RECORD_TYPEDEF* td = (const CLR_RECORD_TYPEDEF*)base->GetTable(TBL_TypeDef); + td += tsInstance.TypeDefIndex; + + return CLR_RT_Assembly::FindMethodDef( + td, + name, + base, + sig, + index); +} + +bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index& index) +{ + NATIVE_PROFILE_CLR_CORE(); + + for (int i = 0; i < m_pTablesSize[TBL_TypeSpec]; i++) + { + const CLR_RECORD_TYPESPEC* ts = GetTypeSpec(i); + + CLR_RT_SignatureParser parserLeft; + parserLeft.Initialize_TypeSpec(this, sig); + CLR_RT_SignatureParser parserRight; + parserRight.Initialize_TypeSpec(this, ts); + + if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight)) + { + // found it! + // set TypeSpec index + index.Set(this->m_index, i); + + // need to advance the signature to consume it + while (parserLeft.Signature != sig) + { + sig++; + } + + return true; + } + } + index.Clear(); return false; } //////////////////////////////////////////////////////////////////////////////////////////////////// -bool CLR_RT_Assembly::FindMethodBoundaries(CLR_IDX i, CLR_OFFSET &start, CLR_OFFSET &end) +bool CLR_RT_Assembly::FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_OFFSET &end) { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODDEF *p = GetMethodDef(i); @@ -3270,27 +4338,28 @@ bool CLR_RT_Assembly::FindMethodBoundaries(CLR_IDX i, CLR_OFFSET &start, CLR_OFF return true; } -bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &idx) +bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - _ASSERTE(m_idx == idx.Assembly()); + _ASSERTE(m_index == index.Assembly()); - for (int i = idx.Method(); i < m_pTablesSize[TBL_MethodDef]; i++) + for (int i = index.Method(); i < m_pTablesSize[TBL_MethodDef]; i++) { const CLR_RECORD_METHODDEF *md = GetMethodDef(i); - idx.Set(m_idx, i); + index.Set(m_index, i); - if (md->flags & CLR_RECORD_METHODDEF::MD_StaticConstructor) + if (md->Flags & CLR_RECORD_METHODDEF::MD_StaticConstructor) { return true; } } - idx.Clear(); + index.Clear(); return false; } + //////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() @@ -3303,20 +4372,20 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() for (int i = 0; i < m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) { - CLR_RT_TypeDef_Index idx; - idx.Set(m_idx, i); + CLR_RT_TypeDef_Index index; + index.Set(m_index, i); CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(idx); - CLR_UINT32 hash = ComputeHashForName(idx, 0); + inst.InitializeFromIndex(index); + CLR_UINT32 hash = ComputeHashForName(index, 0); while (NANOCLR_INDEX_IS_VALID(inst)) { const CLR_RECORD_TYPEDEF *target = inst.m_target; - const CLR_RECORD_FIELDDEF *fd = inst.m_assm->GetFieldDef(target->iFields_First); + const CLR_RECORD_FIELDDEF *fd = inst.m_assm->GetFieldDef(target->FirstInstanceField); - for (int j = 0; j < target->iFields_Num; j++, fd++) + for (int j = 0; j < target->InstanceFieldsCount; j++, fd++) { - if ((fd->flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) + if ((fd->Flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) { CLR_RT_SignatureParser parser; parser.Initialize_FieldDef(inst.m_assm, fd); @@ -3324,19 +4393,19 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() NANOCLR_CHECK_HRESULT(parser.Advance(res)); - while (res.m_levels-- > 0) + while (res.Levels -- > 0) { hash = ComputeHashForType(DATATYPE_SZARRAY, hash); } - hash = ComputeHashForType(res.m_dt, hash); + hash = ComputeHashForType(res.DataType, hash); - if ((res.m_dt == DATATYPE_VALUETYPE) || (res.m_dt == DATATYPE_CLASS)) + if ((res.DataType == DATATYPE_VALUETYPE) || (res.DataType == DATATYPE_CLASS)) { - hash = ComputeHashForName(res.m_cls, hash); + hash = ComputeHashForName(res.Class, hash); } - const char *fieldName = inst.m_assm->GetString(fd->name); + const char *fieldName = inst.m_assm->GetString(fd->Name); hash = SUPPORT_ComputeCRC(fieldName, (CLR_UINT32)hal_strlen_s(fieldName), hash); } @@ -3365,7 +4434,7 @@ CLR_UINT32 CLR_RT_Assembly::ComputeHashForName(const CLR_RT_TypeDef_Index &td, C return hashPost; } -CLR_UINT32 CLR_RT_Assembly::ComputeHashForType(CLR_DataType et, CLR_UINT32 hash) +CLR_UINT32 CLR_RT_Assembly::ComputeHashForType(NanoCLRDataType et, CLR_UINT32 hash) { NATIVE_PROFILE_CLR_CORE(); CLR_UINT8 val = (CLR_UINT8)CLR_RT_TypeSystem::MapDataTypeToElementType(et); @@ -3444,12 +4513,12 @@ void CLR_RT_TypeSystem::Link(CLR_RT_Assembly *assm) { *ppASSM = assm; - assm->m_idx = idx; + assm->m_index = index; PostLinkageProcessing(assm); - if (m_assembliesMax < idx) - m_assembliesMax = idx; + if (m_assembliesMax < index) + m_assembliesMax = index; return; } @@ -3490,184 +4559,85 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R return pASSM; } } - // exact match was NOT required but still there version information, - // we will enforce only the first two number because (by convention) - // only the minor field is required to be bumped when native assemblies change CRC - else if ( - ver->iMajorVersion == pASSM->m_header->version.iMajorVersion && - ver->iMinorVersion == pASSM->m_header->version.iMinorVersion) - { - return pASSM; - } - } - } - NANOCLR_FOREACH_ASSEMBLY_END(); - - return NULL; -} - -bool CLR_RT_TypeSystem::FindTypeDef( - const char *name, - const char *nameSpace, - CLR_RT_Assembly *assm, - CLR_RT_TypeDef_Index &res) -{ - NATIVE_PROFILE_CLR_CORE(); - - if (assm) - { - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) - { - if (pASSM->IsSameAssembly(*assm) && pASSM->FindTypeDef(name, nameSpace, res)) - return true; - } - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); - - res.Clear(); - - return false; - } - - return FindTypeDef(name, nameSpace, res); -} - -bool CLR_RT_TypeSystem::FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &res) -{ - NATIVE_PROFILE_CLR_CORE(); - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) - { - if (pASSM->FindTypeDef(name, nameSpace, res)) - return true; - } - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); - - res.Clear(); - return false; -} - -bool CLR_RT_TypeSystem::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &res) -{ - NATIVE_PROFILE_CLR_CORE(); - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) - { - if (pASSM->FindTypeDef(hash, res)) - return true; - } - NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); - - res.Clear(); - return false; -} - -bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, CLR_RT_TypeDef_Index &res) -{ - (void)szClass; - (void)assm; - (void)res; - - NATIVE_PROFILE_CLR_CORE(); - - char rgName[MAXTYPENAMELEN]; - char rgNamespace[MAXTYPENAMELEN]; - - if (hal_strlen_s(szClass) < ARRAYSIZE(rgNamespace)) - { - const char *szPtr = szClass; - const char *szPtr_LastDot = NULL; - const char *szPtr_FirstSubType = NULL; - char c; - size_t len; - - while (true) - { - c = szPtr[0]; - if (!c) - break; - - if (c == '.') - { - szPtr_LastDot = szPtr; - } - else if (c == '+') - { - szPtr_FirstSubType = szPtr; - break; - } - - szPtr++; - } - - if (szPtr_LastDot) - { - len = szPtr_LastDot++ - szClass; - hal_strncpy_s(rgNamespace, ARRAYSIZE(rgNamespace), szClass, len); - len = szPtr - szPtr_LastDot; - hal_strncpy_s(rgName, ARRAYSIZE(rgName), szPtr_LastDot, len); - } - else - { - rgNamespace[0] = 0; - hal_strcpy_s(rgName, ARRAYSIZE(rgName), szClass); - } - - if (FindTypeDef(rgName, rgNamespace, assm, res)) - { - // - // Found the containing type, let's look for the nested type. - // - if (szPtr_FirstSubType) + // exact match was NOT required but still there version information, + // we will enforce only the first two number because (by convention) + // only the minor field is required to be bumped when native assemblies change CRC + else if ( + ver->iMajorVersion == pASSM->m_header->version.iMajorVersion && + ver->iMinorVersion == pASSM->m_header->version.iMinorVersion) { - CLR_RT_TypeDef_Instance inst; + return pASSM; + } + } + } + NANOCLR_FOREACH_ASSEMBLY_END(); - do - { - szPtr = ++szPtr_FirstSubType; + return NULL; +} - while (true) - { - c = szPtr_FirstSubType[0]; - if (!c) - break; +bool CLR_RT_TypeSystem::FindTypeDef( + const char *name, + const char *nameSpace, + CLR_RT_Assembly *assm, + CLR_RT_TypeDef_Index &res) +{ + NATIVE_PROFILE_CLR_CORE(); - if (c == '+') - break; + if (assm) + { + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) + { + if (pASSM->IsSameAssembly(*assm) && pASSM->FindTypeDef(name, nameSpace, res)) + return true; + } + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); - szPtr_FirstSubType++; - } + res.Clear(); - len = szPtr_FirstSubType - szPtr; - hal_strncpy_s(rgName, ARRAYSIZE(rgName), szPtr, len); + return false; + } - inst.InitializeFromIndex(res); + return FindTypeDef(name, nameSpace, res); +} - if (inst.m_assm->FindTypeDef(rgName, res.Type(), res) == false) - { - return false; - } +bool CLR_RT_TypeSystem::FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &res) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) + { + if (pASSM->FindTypeDef(name, nameSpace, res)) + return true; + } + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); - } while (c == '+'); - } + res.Clear(); + return false; +} +bool CLR_RT_TypeSystem::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &res) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN(*this) + { + if (pASSM->FindTypeDef(hash, res)) return true; - } } + NANOCLR_FOREACH_ASSEMBLY_IN_CURRENT_APPDOMAIN_END(); res.Clear(); - return false; } -bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, CLR_RT_ReflectionDef_Index &reflex) +bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, CLR_RT_TypeDef_Index &res) { (void)szClass; (void)assm; - (void)reflex; + (void)res; NATIVE_PROFILE_CLR_CORE(); char rgName[MAXTYPENAMELEN]; char rgNamespace[MAXTYPENAMELEN]; - CLR_RT_TypeDef_Index res; if (hal_strlen_s(szClass) < ARRAYSIZE(rgNamespace)) { @@ -3676,7 +4646,6 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, const char *szPtr_FirstSubType = NULL; char c; size_t len; - bool arrayType = false; while (true) { @@ -3693,15 +4662,6 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, szPtr_FirstSubType = szPtr; break; } - else if (c == '[') - { - char ch = szPtr[1]; - if (ch == ']') - { - arrayType = true; - break; - } - } szPtr++; } @@ -3757,10 +4717,6 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, } while (c == '+'); } - reflex.m_kind = REFLECTION_TYPE; - // make sure this works for multidimensional arrays. - reflex.m_levels = arrayType ? 1 : 0; - reflex.m_data.m_type = res; return true; } } @@ -3788,16 +4744,16 @@ int HRESULT CLR_RT_TypeSystem::LocateResourceFile( CLR_RT_Assembly_Instance assm, const char *name, - CLR_INT32 &idxResourceFile) + CLR_INT32 &indexResourceFile) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_Assembly *pAssm = assm.m_assm; - for (idxResourceFile = 0; idxResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; idxResourceFile++) + for (indexResourceFile = 0; indexResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; indexResourceFile++) { - const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(idxResourceFile); + const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(indexResourceFile); if (!strcmp(pAssm->GetString(resourceFile->name), name)) { @@ -3805,14 +4761,14 @@ HRESULT CLR_RT_TypeSystem::LocateResourceFile( } } - idxResourceFile = -1; + indexResourceFile = -1; NANOCLR_NOCLEANUP(); } HRESULT CLR_RT_TypeSystem::LocateResource( CLR_RT_Assembly_Instance assm, - CLR_INT32 idxResourceFile, + CLR_INT32 indexResourceFile, CLR_INT16 id, const CLR_RECORD_RESOURCE *&res, CLR_UINT32 &size) @@ -3829,10 +4785,10 @@ HRESULT CLR_RT_TypeSystem::LocateResource( res = NULL; size = 0; - if (idxResourceFile < 0 || idxResourceFile >= pAssm->m_pTablesSize[TBL_ResourcesFiles]) + if (indexResourceFile < 0 || indexResourceFile >= pAssm->m_pTablesSize[TBL_ResourcesFiles]) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - resourceFile = pAssm->GetResourceFile(idxResourceFile); + resourceFile = pAssm->GetResourceFile(indexResourceFile); _ASSERTE(resourceFile->numberOfResources > 0); @@ -3888,6 +4844,7 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() NANOCLR_CHECK_HRESULT(pASSM->Resolve_MethodRef()); /********************/ pASSM->Resolve_TypeDef(); /********************/ pASSM->Resolve_MethodDef(); + NANOCLR_CHECK_HRESULT(pASSM->Resolve_TypeSpec()); /********************/ pASSM->Resolve_Link(); NANOCLR_CHECK_HRESULT(pASSM->Resolve_ComputeHashes()); @@ -3962,6 +4919,9 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() offsets.iMethodDef += ROUNDTOMULTIPLE( pASSM->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), CLR_UINT32); + offsets.iGenericParam += ROUNDTOMULTIPLE( + pASSM->m_pTablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), + CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) offsets.iStaticFields += ROUNDTOMULTIPLE(pASSM->m_iStaticFields * sizeof(CLR_RT_HeapBlock), CLR_UINT32); @@ -3971,13 +4931,14 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() offsets.iDebuggingInfoMethods += ROUNDTOMULTIPLE( pASSM->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) iMetaData += pASSM->m_header->SizeOfTable(TBL_AssemblyRef) + pASSM->m_header->SizeOfTable(TBL_TypeRef) + pASSM->m_header->SizeOfTable(TBL_FieldRef) + pASSM->m_header->SizeOfTable(TBL_MethodRef) + pASSM->m_header->SizeOfTable(TBL_TypeDef) + pASSM->m_header->SizeOfTable(TBL_FieldDef) + - pASSM->m_header->SizeOfTable(TBL_MethodDef) + - pASSM->m_header->SizeOfTable(TBL_Attributes) + pASSM->m_header->SizeOfTable(TBL_TypeSpec) + + pASSM->m_header->SizeOfTable(TBL_MethodDef) + + pASSM->m_header->SizeOfTable(TBL_GenericParam) +pASSM->m_header->SizeOfTable(TBL_TypeSpec) + + pASSM->m_header->SizeOfTable(TBL_Attributes) + pASSM->m_header->SizeOfTable(TBL_Signatures); for (int tbl = 0; tbl < TBL_Max; tbl++) @@ -3992,7 +4953,8 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() NANOCLR_FOREACH_ASSEMBLY_END(); iTotalRamSize = offsets.iBase + offsets.iAssemblyRef + offsets.iTypeRef + offsets.iFieldRef + - offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef; + offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + + offsets.iGenericParam; #if !defined(NANOCLR_APPDOMAINS) iTotalRamSize += offsets.iStaticFields; @@ -4005,65 +4967,76 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() iMetaData); CLR_Debug::Printf( - " AssemblyRef = %8d bytes (%8d elements)\r\n", + " AssemblyRef = %6d bytes (%5d elements)\r\n", offsets.iAssemblyRef, pTablesSize[TBL_AssemblyRef]); CLR_Debug::Printf( - " TypeRef = %8d bytes (%8d elements)\r\n", + " TypeRef = %6d bytes (%5d elements)\r\n", offsets.iTypeRef, pTablesSize[TBL_TypeRef]); CLR_Debug::Printf( - " FieldRef = %8d bytes (%8d elements)\r\n", + " FieldRef = %6d bytes (%5d elements)\r\n", offsets.iFieldRef, pTablesSize[TBL_FieldRef]); CLR_Debug::Printf( - " MethodRef = %8d bytes (%8d elements)\r\n", + " MethodRef = %6d bytes (%5d elements)\r\n", offsets.iMethodRef, pTablesSize[TBL_MethodRef]); CLR_Debug::Printf( - " TypeDef = %8d bytes (%8d elements)\r\n", + " TypeDef = %6d bytes (%5d elements)\r\n", offsets.iTypeDef, pTablesSize[TBL_TypeDef]); CLR_Debug::Printf( - " FieldDef = %8d bytes (%8d elements)\r\n", + " FieldDef = %6d bytes (%5d elements)\r\n", offsets.iFieldDef, pTablesSize[TBL_FieldDef]); CLR_Debug::Printf( - " MethodDef = %8d bytes (%8d elements)\r\n", + " MethodDef = %6d bytes (%5d elements)\r\n", offsets.iMethodDef, pTablesSize[TBL_MethodDef]); + CLR_Debug::Printf( + " GenericParam = %6d bytes (%5d elements)\r\n", + offsets.iGenericParam, + pTablesSize[TBL_GenericParam]); + CLR_Debug::Printf( + " MethodSpec = %6d bytes (%5d elements)\r\n", + offsets.iMethodSpec, + pTablesSize[TBL_MethodSpec]); #if !defined(NANOCLR_APPDOMAINS) - CLR_Debug::Printf(" StaticFields = %8d bytes (%8d elements)\r\n", offsets.iStaticFields, iStaticFields); + CLR_Debug::Printf( + " StaticFields = %6d bytes (%5d elements)\r\n", + offsets.iStaticFields, + iStaticFields); #endif CLR_Debug::Printf("\r\n"); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - CLR_Debug::Printf(" DebuggingInfo = %8d bytes\r\n", offsets.iDebuggingInfoMethods); + CLR_Debug::Printf(" DebuggingInfo = %6d bytes\r\n", offsets.iDebuggingInfoMethods); CLR_Debug::Printf("\r\n"); -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_Debug::Printf( - " Attributes = %8d bytes (%8d elements)\r\n", + " Attributes = %6d bytes (%5d elements)\r\n", pTablesSize[TBL_Attributes] * sizeof(CLR_RECORD_ATTRIBUTE), pTablesSize[TBL_Attributes]); CLR_Debug::Printf( - " TypeSpec = %8d bytes (%8d elements)\r\n", + " TypeSpec = %6d bytes (%5d elements)\r\n", pTablesSize[TBL_TypeSpec] * sizeof(CLR_RECORD_TYPESPEC), pTablesSize[TBL_TypeSpec]); CLR_Debug::Printf( - " Resources Files = %8d bytes (%8d elements)\r\n", + " Resources Files = %6d bytes (%5d elements)\r\n", pTablesSize[TBL_ResourcesFiles] * sizeof(CLR_RECORD_RESOURCE_FILE), pTablesSize[TBL_ResourcesFiles]); CLR_Debug::Printf( - " Resources = %8d bytes (%8d elements)\r\n", + " Resources = %6d bytes (%5d elements)\r\n", pTablesSize[TBL_Resources] * sizeof(CLR_RECORD_RESOURCE), pTablesSize[TBL_Resources]); - CLR_Debug::Printf(" Resources Data = %8d bytes\r\n", pTablesSize[TBL_ResourcesData]); - CLR_Debug::Printf(" Strings = %8d bytes\r\n", pTablesSize[TBL_Strings]); - CLR_Debug::Printf(" Signatures = %8d bytes\r\n", pTablesSize[TBL_Signatures]); - CLR_Debug::Printf(" ByteCode = %8d bytes\r\n", pTablesSize[TBL_ByteCode]); + CLR_Debug::Printf(" Resources Data = %6d bytes\r\n", pTablesSize[TBL_ResourcesData]); + CLR_Debug::Printf(" Strings = %6d bytes\r\n", pTablesSize[TBL_Strings]); + CLR_Debug::Printf(" Signatures = %6d bytes\r\n", pTablesSize[TBL_Signatures]); + CLR_Debug::Printf(" ByteCode = %6d bytes\r\n", pTablesSize[TBL_ByteCode]); CLR_Debug::Printf("\r\n\r\n"); } } @@ -4098,7 +5071,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_EE_DBG_SET(BreakpointsDisabled); -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(NANOCLR_APPDOMAINS) if (g_CLR_RT_ExecutionEngine.m_outOfMemoryException == NULL) @@ -4130,7 +5103,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() CLR_EE_DBG_CLR(BreakpointsDisabled); g_CLR_RT_ExecutionEngine.Breakpoint_Assemblies_Loaded(); -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) NANOCLR_CLEANUP_END(); } @@ -4140,9 +5113,9 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() bool CLR_RT_TypeSystem::MatchSignature(CLR_RT_SignatureParser &parserLeft, CLR_RT_SignatureParser &parserRight) { NATIVE_PROFILE_CLR_CORE(); - if (parserLeft.m_type != parserRight.m_type) + if (parserLeft.Type != parserRight.Type) return false; - if (parserLeft.m_flags != parserRight.m_flags) + if (parserLeft.Flags != parserRight.Flags) return false; return MatchSignatureDirect(parserLeft, parserRight, false); @@ -4160,20 +5133,36 @@ bool CLR_RT_TypeSystem::MatchSignatureDirect( int iAvailRight = parserRight.Available(); if (iAvailLeft != iAvailRight) + { return false; + } if (!iAvailLeft) + { return true; - + } + CLR_RT_SignatureParser::Element resLeft; if (FAILED(parserLeft.Advance(resLeft))) + { return false; + } + CLR_RT_SignatureParser::Element resRight; if (FAILED(parserRight.Advance(resRight))) + { return false; + } - if (!MatchSignatureElement(resLeft, resRight, fIsInstanceOfOK)) - return false; + if (!MatchSignatureElement( + resLeft, + resRight, + parserLeft, + parserRight, + fIsInstanceOfOK)) + { + return false; + } } return true; @@ -4182,42 +5171,87 @@ bool CLR_RT_TypeSystem::MatchSignatureDirect( bool CLR_RT_TypeSystem::MatchSignatureElement( CLR_RT_SignatureParser::Element &resLeft, CLR_RT_SignatureParser::Element &resRight, + CLR_RT_SignatureParser& parserLeft, + CLR_RT_SignatureParser& parserRight, bool fIsInstanceOfOK) { NATIVE_PROFILE_CLR_CORE(); if (fIsInstanceOfOK) { - CLR_RT_ReflectionDef_Index idxLeft; + CLR_RT_ReflectionDef_Index indexLeft; CLR_RT_TypeDescriptor descLeft; - CLR_RT_ReflectionDef_Index idxRight; + CLR_RT_ReflectionDef_Index indexRight; CLR_RT_TypeDescriptor descRight; - idxLeft.m_kind = REFLECTION_TYPE; - idxLeft.m_levels = resLeft.m_levels; - idxLeft.m_data.m_type = resLeft.m_cls; + indexLeft.m_kind = REFLECTION_TYPE; + indexLeft.m_levels = resLeft.Levels; + indexLeft.m_data.m_type = resLeft.Class; - idxRight.m_kind = REFLECTION_TYPE; - idxRight.m_levels = resRight.m_levels; - idxRight.m_data.m_type = resRight.m_cls; + indexRight.m_kind = REFLECTION_TYPE; + indexRight.m_levels = resRight.Levels; + indexRight.m_data.m_type = resRight.Class; - if (FAILED(descLeft.InitializeFromReflection(idxLeft))) + if (FAILED(descLeft.InitializeFromReflection(indexLeft))) + { return false; - if (FAILED(descRight.InitializeFromReflection(idxRight))) + } + + if (FAILED(descRight.InitializeFromReflection(indexRight))) + { return false; + } if (!CLR_RT_ExecutionEngine::IsInstanceOf(descRight, descLeft, false)) + { return false; + } } else { - if (resLeft.m_fByRef != resRight.m_fByRef) + if (resLeft.IsByRef != resRight.IsByRef) + { + return false; + } + + if (resLeft.Levels != resRight.Levels) + { + return false; + } + + if (resLeft.DataType != resRight.DataType) + { + return false; + } + + if (resLeft.Class.m_data != resRight.Class.m_data) + { return false; - if (resLeft.m_levels != resRight.m_levels) + } + + if ((resLeft.DataType == DATATYPE_MVAR && resLeft.DataType == DATATYPE_MVAR) && + (resLeft.GenericParamPosition && resRight.GenericParamPosition)) + { return false; - if (resLeft.m_dt != resRight.m_dt) + } + + if ((resLeft.DataType == DATATYPE_VAR && resLeft.DataType == DATATYPE_VAR) && + (resLeft.GenericParamPosition && resRight.GenericParamPosition)) + { return false; - if (resLeft.m_cls.m_data != resRight.m_cls.m_data) + } + + if (parserLeft.IsGenericInst != parserRight.IsGenericInst) + { return false; + } + + if (parserLeft.IsGenericInst || parserRight.IsGenericInst) + { + if (resLeft.GenericParamPosition != resRight.GenericParamPosition) + { + return false; + } + } } return true; @@ -4273,10 +5307,10 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( td = inst.m_target; fFullName = flags & CLR_RT_TypeSystem::TYPENAME_FLAGS_FULL; - if (fFullName && td->enclosingType != CLR_EmptyIndex) + if (fFullName && td->HasValidEnclosingType()) { CLR_RT_TypeDef_Index clsSub; - clsSub.Set(inst.Assembly(), td->enclosingType); + clsSub.Set(inst.Assembly(), td->EnclosingTypeIndex()); NANOCLR_CHECK_HRESULT(BuildTypeName(clsSub, szBuffer, iBuffer, flags, 0)); @@ -4286,9 +5320,9 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( (flags & CLR_RT_TypeSystem::TYPENAME_NESTED_SEPARATOR_DOT) ? "." : "+")); } - if (fFullName && td->nameSpace != CLR_EmptyIndex) + if (fFullName && td->NameSpace != CLR_EmptyIndex) { - const char *szNameSpace = assm->GetString(td->nameSpace); + const char *szNameSpace = assm->GetString(td->NameSpace); if (szNameSpace[0]) { @@ -4297,7 +5331,7 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( } } - NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, assm->GetString(td->name))); + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, assm->GetString(td->Name))); while (levels-- > 0) { @@ -4307,7 +5341,7 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, char *&szBuffer, size_t &iBuffer) +HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, const CLR_RT_TypeSpec_Index* genericType, char *&szBuffer, size_t &iBuffer) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -4316,18 +5350,58 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, cha CLR_RT_TypeDef_Instance instOwner; if (inst.InitializeFromIndex(md) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + if (instOwner.InitializeFromMethod(inst) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } - NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); + if (genericType == NULL) + { + NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); + + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->Name)); + } + else + { + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(inst.m_assm, inst.m_assm->GetTypeSpec(genericType->TypeSpec())); + + CLR_RT_SignatureParser::Element element; + + // get type + parser.Advance(element); + + CLR_RT_TypeDef_Index typeDef; + typeDef.m_data = element.Class.m_data; + + BuildTypeName(typeDef, szBuffer, iBuffer); + + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, "<")); + + for (int i = 0; i < parser.GenParamCount; i++) + { + parser.Advance(element); + +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name)); +#endif + if (i + 1 < parser.GenParamCount) + { + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, ",")); + } + } - CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->name)); + CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", inst.m_assm->GetString(inst.m_target->Name)); + } NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index &fd, char *&szBuffer, size_t &iBuffer) +HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index& fd, char*& szBuffer, size_t& iBuffer) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -4336,13 +5410,167 @@ HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index &fd, char CLR_RT_TypeDef_Instance instOwner; if (inst.InitializeFromIndex(fd) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + if (instOwner.InitializeFromField(inst) == false) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); - CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->name)); + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->Name)); + + NANOCLR_NOCLEANUP(); +} + +HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char*& szBuffer, size_t& iBuffer) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_Assembly* assembly = g_CLR_RT_TypeSystem.m_assemblies[method.Assembly() - 1]; + + const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[method.Method()]; + const CLR_RECORD_METHODREF* methodRef = assembly->GetMethodRef(method.Method()); + + if (memberCrossRef.GenericType.m_data == CLR_EmptyToken) + { + // this is a MethodRef belonging to another assembly + + CLR_RT_MethodDef_Instance mdInstance; + mdInstance.m_data = memberCrossRef.Target.m_data; + mdInstance.m_assm = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; + mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); + + CLR_RT_TypeDef_Index typeOwner; + typeOwner.Set(mdInstance.Assembly(), mdInstance.m_assm->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); + + NANOCLR_CHECK_HRESULT(BuildTypeName(typeOwner, szBuffer, iBuffer)); + + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", mdInstance.m_assm->GetString(mdInstance.m_target->Name)); + } + else + { + // this is a MethodRef for a generic type + + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(assembly, assembly->GetTypeSpec(memberCrossRef.GenericType.TypeSpec())); + + CLR_RT_SignatureParser::Element element; + + // get type + parser.Advance(element); + + CLR_RT_TypeDef_Index typeDef; + typeDef.m_data = element.Class.m_data; + + BuildTypeName(typeDef, szBuffer, iBuffer); + + CLR_SafeSprintf(szBuffer, iBuffer, "<"); + + for (int i = 0; i < parser.GenParamCount; i++) + { + parser.Advance(element); + +#if defined(VIRTUAL_DEVICE) + CLR_SafeSprintf(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name); +#endif + + if (i + 1 < parser.GenParamCount) + { + CLR_SafeSprintf(szBuffer, iBuffer, ","); + } + } + + CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", assembly->GetString(methodRef->Name)); + } + + + NANOCLR_NOCLEANUP(); +} + +HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms, char *&szBuffer, size_t &iBuffer) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_MethodSpec_Instance inst; + const CLR_RECORD_METHODSPEC* msRecord; + CLR_RT_SignatureParser parser; + CLR_RT_SignatureParser::Element element; + CLR_RT_TypeDef_Index typeDef; + CLR_RT_TypeDef_Instance instOwner; + CLR_RT_Assembly* assembly; + + if (inst.InitializeFromIndex(ms) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + assembly = g_CLR_RT_TypeSystem.m_assemblies[ms.Assembly() - 1]; + + msRecord = inst.m_assm->GetMethodSpec(ms.Method()); + + parser.Initialize_TypeSpec(inst.m_assm, inst.m_assm->GetTypeSpec(msRecord->Container)); + + // get type + parser.Advance(element); + + typeDef.m_data = element.Class.m_data; + + if (instOwner.InitializeFromIndex(typeDef) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + BuildTypeName(typeDef, szBuffer, iBuffer); + + CLR_SafeSprintf(szBuffer, iBuffer, "<"); + + parser.Initialize_MethodSignature(&inst); + + for (int i = 0; i < parser.GenParamCount; i++) + { + parser.Advance(element); + +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name)); +#endif + + if (i + 1 < parser.GenParamCount) + { + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, ",")); + } + } + + CLR_SafeSprintf(szBuffer, iBuffer, ">::"); + + switch (msRecord->MethodKind()) + { + case TBL_MethodDef: + { + const CLR_RECORD_METHODDEF* md = assembly->GetMethodDef(msRecord->MethodIndex()); + CLR_SafeSprintf(szBuffer, iBuffer, "%s", assembly->GetString(md->Name)); + break; + } + case TBL_MethodRef: + { + const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; + + CLR_RT_MethodDef_Instance mdInstance; + mdInstance.m_data = memberCrossRef.Target.m_data; + mdInstance.m_assm = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; + mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); + + CLR_SafeSprintf(szBuffer, iBuffer, "%s", mdInstance.m_assm->GetString(mdInstance.CrossReference().GetOwner())); + break; + } + default: + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } NANOCLR_NOCLEANUP(); } @@ -4352,19 +5580,19 @@ HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index &fd, char bool CLR_RT_TypeSystem::FindVirtualMethodDef( const CLR_RT_TypeDef_Index &cls, const CLR_RT_MethodDef_Index &calleeMD, - CLR_RT_MethodDef_Index &idx) + CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Instance calleeInst; if (calleeInst.InitializeFromIndex(calleeMD)) { - const char *calleeName = calleeInst.m_assm->GetString(calleeInst.m_target->name); + const char *calleeName = calleeInst.m_assm->GetString(calleeInst.m_target->Name); CLR_RT_TypeDef_Instance inst; inst.InitializeFromMethod(calleeInst); - if ((inst.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Interface) { // @@ -4384,15 +5612,15 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( QueueStringToBuffer(szBuffer, iBuffer, "."); QueueStringToBuffer(szBuffer, iBuffer, calleeName); - if (FindVirtualMethodDef(cls, calleeMD, rgBuffer, idx)) + if (FindVirtualMethodDef(cls, calleeMD, rgBuffer, index)) return true; } - if (FindVirtualMethodDef(cls, calleeMD, calleeName, idx)) + if (FindVirtualMethodDef(cls, calleeMD, calleeName, index)) return true; } - idx.Clear(); + index.Clear(); return false; } @@ -4401,7 +5629,7 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( const CLR_RT_TypeDef_Index &cls, const CLR_RT_MethodDef_Index &calleeMD, const char *calleeName, - CLR_RT_MethodDef_Index &idx) + CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_Instance clsInst; @@ -4409,40 +5637,40 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( CLR_RT_MethodDef_Instance calleeInst; calleeInst.InitializeFromIndex(calleeMD); - CLR_RT_Assembly *calleeAssm = calleeInst.m_assm; const CLR_RECORD_METHODDEF *calleeMDR = calleeInst.m_target; - CLR_UINT8 calleeNumArgs = calleeMDR->numArgs; + CLR_UINT8 calleeArgumentsCount = calleeMDR->ArgumentsCount; while (NANOCLR_INDEX_IS_VALID(clsInst)) { CLR_RT_Assembly *targetAssm = clsInst.m_assm; const CLR_RECORD_TYPEDEF *targetTDR = clsInst.m_target; - const CLR_RECORD_METHODDEF *targetMDR = targetAssm->GetMethodDef(targetTDR->methods_First); - int num = targetTDR->vMethods_Num + targetTDR->iMethods_Num; + const CLR_RECORD_METHODDEF *targetMDR = targetAssm->GetMethodDef(targetTDR->FirstMethod); + int num = targetTDR->VirtualMethodCount + targetTDR->InstanceMethodCount; for (int i = 0; i < num; i++, targetMDR++) { if (targetMDR == calleeMDR) { // Shortcut for identity. - idx = calleeInst; + index = calleeInst; return true; } - if (targetMDR->numArgs == calleeNumArgs && (targetMDR->flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) + if (targetMDR->ArgumentsCount == calleeArgumentsCount && + (targetMDR->Flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) { - const char *targetName = targetAssm->GetString(targetMDR->name); + const char *targetName = targetAssm->GetString(targetMDR->Name); if (!strcmp(targetName, calleeName)) { CLR_RT_SignatureParser parserLeft; - parserLeft.Initialize_MethodSignature(calleeAssm, calleeMDR); + parserLeft.Initialize_MethodSignature(&calleeInst); CLR_RT_SignatureParser parserRight; parserRight.Initialize_MethodSignature(targetAssm, targetMDR); if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight)) { - idx.Set(targetAssm->m_idx, i + targetTDR->methods_First); + index.Set(targetAssm->m_index, i + targetTDR->FirstMethod); return true; } @@ -4453,12 +5681,12 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( clsInst.SwitchToParent(); } - idx.Clear(); + index.Clear(); return false; } -CLR_DataType CLR_RT_TypeSystem::MapElementTypeToDataType(CLR_UINT32 et) +NanoCLRDataType CLR_RT_TypeSystem::MapElementTypeToDataType(CLR_UINT32 et) { NATIVE_PROFILE_CLR_CORE(); const CLR_RT_DataTypeLookup *ptr = c_CLR_RT_DataTypeLookup; @@ -4466,7 +5694,7 @@ CLR_DataType CLR_RT_TypeSystem::MapElementTypeToDataType(CLR_UINT32 et) for (CLR_UINT32 num = 0; num < DATATYPE_FIRST_INVALID; num++, ptr++) { if (ptr->m_convertToElementType == et) - return (CLR_DataType)num; + return (NanoCLRDataType)num; } if (et == ELEMENT_TYPE_I) @@ -4477,7 +5705,7 @@ CLR_DataType CLR_RT_TypeSystem::MapElementTypeToDataType(CLR_UINT32 et) return DATATYPE_FIRST_INVALID; } -CLR_UINT32 CLR_RT_TypeSystem::MapDataTypeToElementType(CLR_DataType dt) +CLR_UINT32 CLR_RT_TypeSystem::MapDataTypeToElementType(NanoCLRDataType dt) { NATIVE_PROFILE_CLR_CORE(); return c_CLR_RT_DataTypeLookup[dt].m_convertToElementType; @@ -4498,8 +5726,8 @@ void CLR_RT_AttributeEnumerator::Initialize(CLR_RT_Assembly *assm) void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_TypeDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.ownerType = TBL_TypeDef; - m_data.ownerIdx = inst.Type(); + m_data.OwnerType = TBL_TypeDef; + m_data.ownerIndex = inst.Type(); Initialize(inst.m_assm); } @@ -4507,8 +5735,8 @@ void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_TypeDef_Instance &inst) void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_FieldDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.ownerType = TBL_FieldDef; - m_data.ownerIdx = inst.Field(); + m_data.OwnerType = TBL_FieldDef; + m_data.ownerIndex = inst.Field(); Initialize(inst.m_assm); } @@ -4516,8 +5744,8 @@ void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_FieldDef_Instance &inst void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_MethodDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.ownerType = TBL_MethodDef; - m_data.ownerIdx = inst.Method(); + m_data.OwnerType = TBL_MethodDef; + m_data.ownerIndex = inst.Method(); Initialize(inst.m_assm); } @@ -4543,14 +5771,15 @@ bool CLR_RT_AttributeEnumerator::Advance() if (ptr->Key() == key) { - CLR_IDX tk = ptr->constructor; + CLR_INDEX tk = ptr->constructor; + // check TYPEDEF if (tk & 0x8000) { - m_match = m_assm->m_pCrossReference_MethodRef[tk & 0x7FFF].m_target; + m_match = m_assm->m_pCrossReference_MethodRef[tk & 0x7FFF].Target; } else { - m_match.Set(m_assm->m_idx, tk); + m_match.Set(m_assm->m_index, tk); } m_blob = m_assm->GetSignature(ptr->data); @@ -4617,17 +5846,17 @@ HRESULT CLR_RT_AttributeParser::Initialize(const CLR_RT_AttributeEnumerator &en) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - m_parser.Initialize_MethodSignature(m_md.m_assm, m_md.m_target); + m_parser.Initialize_MethodSignature(&m_md); m_parser.Advance(m_res); // Skip return value. m_assm = en.m_assm; m_blob = en.m_blob; m_currentPos = 0; - m_fixed_Count = m_md.m_target->numArgs - 1; + m_fixed_Count = m_md.m_target->ArgumentsCount - 1; m_named_Count = -1; m_constructorParsed = false; - m_mdIdx = en.m_match; + m_mdIndex = en.m_match; NANOCLR_NOCLEANUP(); } @@ -4705,7 +5934,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) uint8_t elementType; NANOCLR_READ_UNALIGNED_UINT8(elementType, m_blob); - CLR_DataType dt = CLR_RT_TypeSystem::MapElementTypeToDataType(elementType); + NanoCLRDataType dt = CLR_RT_TypeSystem::MapElementTypeToDataType(elementType); dtl = c_CLR_RT_DataTypeLookup[dt]; @@ -4809,14 +6038,14 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // // Check for Enums. // - if (m_res.m_dt == DATATYPE_VALUETYPE) + if (m_res.DataType == DATATYPE_VALUETYPE) { CLR_RT_TypeDef_Instance td; - td.InitializeFromIndex(m_res.m_cls); + td.InitializeFromIndex(m_res.Class); - if ((td.m_target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) + if ((td.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { - m_res.m_dt = (CLR_DataType)td.m_target->dataType; + m_res.DataType = (NanoCLRDataType)td.m_target->DataType; } } @@ -4826,16 +6055,16 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) m_blob += sizeof(CLR_UINT8); { - const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_res.m_dt]; + const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_res.DataType]; if (dtl.m_flags & CLR_RT_DataTypeLookup::c_Numeric) { CLR_UINT32 size = dtl.m_sizeInBytes; CLR_RT_HeapBlock *currentParam = &m_lastValue.m_value; - NANOCLR_CHECK_HRESULT(ReadNumericValue(currentParam, m_res.m_dt, dtl.m_cls, size)); + NANOCLR_CHECK_HRESULT(ReadNumericValue(currentParam, m_res.DataType, dtl.m_cls, size)); } - else if (m_res.m_dt == DATATYPE_STRING) + else if (m_res.DataType == DATATYPE_STRING) { CLR_RT_HeapBlock *currentParam = &m_lastValue.m_value; NANOCLR_CHECK_HRESULT(ReadString(currentParam)); @@ -4872,7 +6101,7 @@ HRESULT CLR_RT_AttributeParser::ReadString(CLR_RT_HeapBlock *&value) HRESULT CLR_RT_AttributeParser::ReadNumericValue( CLR_RT_HeapBlock *&value, - const CLR_DataType dt, + const NanoCLRDataType dt, const CLR_RT_TypeDef_Index *m_cls, const CLR_UINT32 size) { diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index 3bb9bb79d8..169748982c 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -30,6 +30,10 @@ #define DT_OPT CLR_RT_DataTypeLookup::c_OptimizedValueType #define DT_MT CLR_RT_DataTypeLookup::c_ManagedType +#define DT_VAR CLR_RT_DataTypeLookup::c_Var +#define DT_GENER CLR_RT_DataTypeLookup::c_GenericInstance +#define DT_MVAR CLR_RT_DataTypeLookup::c_MVar + #define DT_U1 sizeof(CLR_UINT8) #define DT_I1 sizeof(CLR_INT8) #define DT_U2 sizeof(CLR_UINT16) @@ -47,7 +51,7 @@ #define DT_NOREL(x) NULL #define DT_REL(x) (CLR_RT_HeapBlockRelocate)&x -#if defined(VIRTUAL_DEVICE) || defined(NANOCLR_TRACE_MEMORY_STATS) +#if defined(WIN32) || defined(NANOCLR_TRACE_MEMORY_STATS) #define DT_OPT_NAME(x) , #x #else #define DT_OPT_NAME(x) @@ -60,78 +64,78 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = //// m_flags, m_sizeInBits, m_sizeInBytes, m_promoteTo, m_convertToElementType, m_cls, m_relocate, m_name //// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID + { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID // - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(m_Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(m_Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(m_UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(m_Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(m_Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(m_UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 // - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(m_Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(m_Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(m_UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(m_Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(m_Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(m_UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(m_Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(m_UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(m_Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(m_Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(m_UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(m_Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(m_Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(m_UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT, 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(m_Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 - { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT, 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(m_DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME - { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT, 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(m_TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN - { DT_REF | DT_PRIM | DT_DIR | DT_MT, DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(m_String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(m_Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 + { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(m_UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(m_Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 + { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(m_DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME + { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(m_TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN + { DT_REF | DT_PRIM | DT_DIR | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(m_String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // - { DT_REF | DT_DIR | DT_MT, DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(m_Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT - { DT_REF | DT_CLASS | DT_MT, DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS - { DT_REF | DT_VALUE | DT_MT, DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE - { DT_REF | DT_CLASS | DT_ARRAY | DT_MT, DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(m_Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY - { DT_REF | DT_MT, DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF - - DATATYPE_NOT_SUPPORTED // DATATYPE_VAR - DATATYPE_NOT_SUPPORTED // DATATYPE_GENERICINST - DATATYPE_NOT_SUPPORTED // DATATYPE_MVAR - - { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK - { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK - { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY - { DT_REF | DT_MT, DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(m_WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS - { DT_MT, DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION - { DT_MT, DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF - { DT_REF | DT_MT, DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD - { DT_REF | DT_MT, DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), NULL , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT - { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD + { DT_REF | DT_DIR | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(m_Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT + { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS + { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE + { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(m_Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF + + { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR + { DT_MT | DT_GENER, DT_NA, DT_BL, DT_T(GENERICINST ), DT_CNV(GENERICINST), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(GENERICINST ) }, // DATATYPE_GENERICINST + { DT_MT | DT_MVAR , DT_NA, DT_BL, DT_T(MVAR ), DT_CNV(MVAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(MVAR ) }, // DATATYPE_MVAR + + { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK + { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK + { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(m_WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS + { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION + { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), NULL , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT + { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD // - { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD - { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD - { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), NULL , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME - { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA + { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD + { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD + { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), NULL , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME + { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA // - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE // - { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD // DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED - { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT + { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT DATATYPE_NOT_SUPPORTED //VTU_PORT #if defined(NANOCLR_APPDOMAINS) - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD - { DT_REF | DT_MT, DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY #else DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED diff --git a/src/CLR/Core/Various.cpp b/src/CLR/Core/Various.cpp index 433d30c299..9cbdfb1831 100644 --- a/src/CLR/Core/Various.cpp +++ b/src/CLR/Core/Various.cpp @@ -123,4 +123,3 @@ HRESULT CLR_RT_ByteArrayReader::Skip( unsigned int size ) NANOCLR_NOCLEANUP(); } - diff --git a/src/CLR/Core/corhdr_private.h b/src/CLR/Core/corhdr_private.h index 92e4b36045..21f532545a 100644 --- a/src/CLR/Core/corhdr_private.h +++ b/src/CLR/Core/corhdr_private.h @@ -37,41 +37,78 @@ typedef enum CorElementType ELEMENT_TYPE_STRING = 0xe, // every type above PTR will be simple type - ELEMENT_TYPE_PTR = 0xf, // PTR - ELEMENT_TYPE_BYREF = 0x10, // BYREF + // PTR + ELEMENT_TYPE_PTR = 0xf, + // BYREF + ELEMENT_TYPE_BYREF = 0x10, // Please use ELEMENT_TYPE_VALUETYPE. ELEMENT_TYPE_VALUECLASS is deprecated. - ELEMENT_TYPE_VALUETYPE = 0x11, // VALUETYPE - ELEMENT_TYPE_CLASS = 0x12, // CLASS - ELEMENT_TYPE_VAR = 0x13, // a class type variable VAR - ELEMENT_TYPE_ARRAY = 0x14, // MDARRAY ... ... - ELEMENT_TYPE_GENERICINST = 0x15, // instantiated type - ELEMENT_TYPE_TYPEDBYREF = 0x16, // This is a simple type. - - ELEMENT_TYPE_I = 0x18, // native integer size - ELEMENT_TYPE_U = 0x19, // native unsigned integer size - ELEMENT_TYPE_FNPTR = 0x1B, // FNPTR - ELEMENT_TYPE_OBJECT = 0x1C, // Shortcut for System.Object - ELEMENT_TYPE_SZARRAY = 0x1D, // Shortcut for single dimension zero lower bound array - // SZARRAY - ELEMENT_TYPE_MVAR = 0x1e, // a method type variable MVAR + + // VALUETYPE + ELEMENT_TYPE_VALUETYPE = 0x11, + + // CLASS + ELEMENT_TYPE_CLASS = 0x12, + + // a class type variable VAR + ELEMENT_TYPE_VAR = 0x13, + + // MDARRAY ... ... + ELEMENT_TYPE_ARRAY = 0x14, + + // instantiated type + // GENERICINST ... + ELEMENT_TYPE_GENERICINST = 0x15, + + // This is a simple type. + // TYPEDREF (it takes no args) a typed reference to some other type + ELEMENT_TYPE_TYPEDBYREF = 0x16, + + // native integer size + ELEMENT_TYPE_I = 0x18, + + // native unsigned integer size + ELEMENT_TYPE_U = 0x19, + + // FNPTR + ELEMENT_TYPE_FNPTR = 0x1B, + + // Shortcut for System.Object + ELEMENT_TYPE_OBJECT = 0x1C, + + // Shortcut for single dimension zero lower bound array + // SZARRAY + ELEMENT_TYPE_SZARRAY = 0x1D, + + + // a method type variable MVAR + ELEMENT_TYPE_MVAR = 0x1e, // This is only for binding - ELEMENT_TYPE_CMOD_REQD = 0x1F, // required C modifier : E_T_CMOD_REQD - ELEMENT_TYPE_CMOD_OPT = 0x20, // optional C modifier : E_T_CMOD_OPT + // required C modifier : E_T_CMOD_REQD + ELEMENT_TYPE_CMOD_REQD = 0x1F, + // optional C modifier : E_T_CMOD_OPT + ELEMENT_TYPE_CMOD_OPT = 0x20, // This is for signatures generated internally (which will not be persisted in any way). - ELEMENT_TYPE_INTERNAL = 0x21, // INTERNAL + // INTERNAL + ELEMENT_TYPE_INTERNAL = 0x21, // Note that this is the max of base type excluding modifiers - ELEMENT_TYPE_MAX = 0x22, // first invalid element type + // first invalid element type + ELEMENT_TYPE_MAX = 0x22, ELEMENT_TYPE_MODIFIER = 0x40, - ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, // sentinel for varargs + // sentinel for varargs + ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER, ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER, - ELEMENT_TYPE_R4_HFA = 0x06 | ELEMENT_TYPE_MODIFIER, // used only internally for R4 HFA types - ELEMENT_TYPE_R8_HFA = 0x07 | ELEMENT_TYPE_MODIFIER, // used only internally for R8 HFA types + + // used only internally for R4 HFA types + ELEMENT_TYPE_R4_HFA = 0x06 | ELEMENT_TYPE_MODIFIER, + + // used only internally for R8 HFA types + ELEMENT_TYPE_R8_HFA = 0x07 | ELEMENT_TYPE_MODIFIER, } CorElementType; diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index b71606bfe1..d7e9aa4d6b 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -17,6 +17,9 @@ //--// +extern const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[]; +extern uint16_t g_CLR_InteropAssembliesCount; + CLR_DBG_Debugger *g_CLR_DBG_Debugger; BlockStorageDevice *CLR_DBG_Debugger::m_deploymentStorageDevice = NULL; @@ -300,7 +303,7 @@ HRESULT CLR_DBG_Debugger::CreateListOfCalls( dst.m_IP = (CLR_UINT32)(call->m_inlineFrame->m_frame.m_IP - call->m_inlineFrame->m_frame.m_IPStart); #if defined(NANOCLR_APPDOMAINS) dst.m_appDomainID = call->m_appDomain->m_id; - dst.m_flags = call->m_flags; + dst.Flags = call->m_flags; #endif } #endif @@ -319,7 +322,7 @@ HRESULT CLR_DBG_Debugger::CreateListOfCalls( #if defined(NANOCLR_APPDOMAINS) dst.m_appDomainID = call->m_appDomain->m_id; - dst.m_flags = call->m_flags; + dst.Flags = call->m_flags; #endif } @@ -1772,10 +1775,14 @@ static bool FillValues( { NATIVE_PROFILE_CLR_DEBUGGER(); if (!ptr) + { return true; + } if (!array || num == 0) + { return false; + } CLR_DBG_Commands::Debugging_Value *dst = array++; num--; @@ -1856,6 +1863,10 @@ static bool FillValues( dst->m_td = ptr->ObjectCls(); break; + case DATATYPE_GENERICINST: + dst->m_ts = ptr->ObjectGenericType(); + break; + case DATATYPE_SZARRAY: { CLR_RT_HeapBlock_Array *ptr2 = (CLR_RT_HeapBlock_Array *)ptr; @@ -1913,6 +1924,10 @@ static bool FillValues( case DATATYPE_APPDOMAIN_ASSEMBLY: #endif + break; + default: + return false; + break; } @@ -2000,12 +2015,12 @@ bool CLR_DBG_Debugger::Debugging_Execution_BreakpointStatus(WP_Message *msg) //--// -CLR_RT_Assembly *CLR_DBG_Debugger::IsGoodAssembly(CLR_IDX idxAssm) +CLR_RT_Assembly *CLR_DBG_Debugger::IsGoodAssembly(CLR_INDEX indexAssm) { NATIVE_PROFILE_CLR_DEBUGGER(); NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - if (pASSM->m_idx == idxAssm) + if (pASSM->m_index == indexAssm) return pASSM; } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -2110,16 +2125,16 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT { CLR_RT_StackFrame *stack = th->CurrentFrame(); const CLR_RECORD_METHODDEF *target = stack->m_call.m_target; - CLR_UINT8 numArgs = target->numArgs; + CLR_UINT8 numArgs = target->ArgumentsCount; if (numArgs) { CLR_RT_SignatureParser parser; - parser.Initialize_MethodSignature(stack->m_call.m_assm, target); + parser.Initialize_MethodSignature(&stack->m_call); CLR_RT_SignatureParser::Element res; CLR_RT_HeapBlock *args = stack->m_arguments; - if (parser.m_flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) + if (parser.Flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) { args->SetObjectReference(NULL); @@ -2142,7 +2157,7 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT { NANOCLR_CHECK_HRESULT(parser2.Advance(res)); - if (res.m_fByRef) + if (res.IsByRef) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2389,7 +2404,9 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) } // try to get value - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL); + return true; } @@ -2409,7 +2426,8 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) } // try to get value - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); return true; } @@ -2463,8 +2481,8 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) { cmdReply.m_md = call->m_inlineFrame->m_frame.m_call; cmdReply.m_IP = (CLR_UINT32)(call->m_inlineFrame->m_frame.m_IP - call->m_inlineFrame->m_frame.m_IPStart); - cmdReply.m_numOfArguments = call->m_inlineFrame->m_frame.m_call.m_target->numArgs; - cmdReply.m_numOfLocals = call->m_inlineFrame->m_frame.m_call.m_target->numLocals; + cmdReply.m_numOfArguments = call->m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount; + cmdReply.m_numOfLocals = call->m_inlineFrame->m_frame.m_call.m_target->LocalsCount; cmdReply.m_depthOfEvalStack = (CLR_UINT32)(call->m_evalStack - call->m_inlineFrame->m_frame.m_evalStack); } else @@ -2472,8 +2490,8 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) { cmdReply.m_md = call->m_call; cmdReply.m_IP = (CLR_UINT32)(call->m_IP - call->m_IPstart); - cmdReply.m_numOfArguments = call->m_call.m_target->numArgs; - cmdReply.m_numOfLocals = call->m_call.m_target->numLocals; + cmdReply.m_numOfArguments = call->m_call.m_target->ArgumentsCount; + cmdReply.m_numOfLocals = call->m_call.m_target->LocalsCount; cmdReply.m_depthOfEvalStack = (CLR_UINT32)call->TopValuePosition(); } @@ -2529,19 +2547,19 @@ static bool IsBlockEnumMaybe(CLR_RT_HeapBlock *blk) if (FAILED(desc.InitializeFromObject(*blk))) return false; - const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[desc.m_handlerCls.m_target->dataType]; + const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[desc.m_handlerCls.m_target->DataType]; return (dtl.m_flags & c_MaskForPrimitive) == c_MaskForPrimitive; } -static bool SetBlockHelper(CLR_RT_HeapBlock *blk, CLR_DataType dt, CLR_UINT8 *builtinValue) +static bool SetBlockHelper(CLR_RT_HeapBlock *blk, NanoCLRDataType dt, CLR_UINT8 *builtinValue) { NATIVE_PROFILE_CLR_DEBUGGER(); bool fCanAssign = false; if (blk) { - CLR_DataType dtDst; + NanoCLRDataType dtDst; CLR_RT_HeapBlock src; dtDst = blk->DataType(); @@ -2586,7 +2604,7 @@ static bool SetBlockHelper(CLR_RT_HeapBlock *blk, CLR_DataType dt, CLR_UINT8 *bu return fCanAssign; } -static CLR_RT_HeapBlock *GetScratchPad_Helper(int idx) +static CLR_RT_HeapBlock *GetScratchPad_Helper(int index) { NATIVE_PROFILE_CLR_DEBUGGER(); CLR_RT_HeapBlock_Array *array = g_CLR_RT_ExecutionEngine.m_scratchPadArray; @@ -2595,9 +2613,9 @@ static CLR_RT_HeapBlock *GetScratchPad_Helper(int idx) tmp.SetObjectReference(array); - if (SUCCEEDED(ref.InitializeArrayReference(tmp, idx))) + if (SUCCEEDED(ref.InitializeArrayReference(tmp, index))) { - return (CLR_RT_HeapBlock *)array->GetElement(idx); + return (CLR_RT_HeapBlock *)array->GetElement(index); } return NULL; @@ -2669,20 +2687,20 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) case CLR_DBG_Commands::Debugging_Value_GetStack::c_Argument: #ifndef NANOCLR_NO_IL_INLINE array = isInline ? call->m_inlineFrame->m_frame.m_args : call->m_arguments; - num = isInline ? md.m_target->numArgs : md.m_target->numArgs; + num = isInline ? md.m_target->ArgumentsCount : md.m_target->ArgumentsCount; #else array = call->m_arguments; - num = call->m_call.m_target->numArgs; + num = call->m_call.m_target->ArgumentsCount; #endif break; case CLR_DBG_Commands::Debugging_Value_GetStack::c_Local: #ifndef NANOCLR_NO_IL_INLINE array = isInline ? call->m_inlineFrame->m_frame.m_locals : call->m_locals; - num = isInline ? md.m_target->numLocals : md.m_target->numLocals; + num = isInline ? md.m_target->LocalsCount : md.m_target->LocalsCount; #else array = call->m_locals; - num = call->m_call.m_target->numLocals; + num = call->m_call.m_target->LocalsCount; #endif break; @@ -2718,14 +2736,16 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) CLR_RT_SignatureParser parser; CLR_RT_SignatureParser::Element res; CLR_RT_TypeDescriptor desc; + CLR_RT_TypeDef_Index targetClass; + NanoCLRDataType targetDataType; if (cmd->m_kind == CLR_DBG_Commands::Debugging_Value_GetStack::c_Argument) { - parser.Initialize_MethodSignature(md.m_assm, md.m_target); + parser.Initialize_MethodSignature(&md); iElement++; // Skip the return value, always at the head of the signature. - if (parser.m_flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) + if (parser.Flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) { if (iElement == 0) { @@ -2746,33 +2766,83 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) parser.Advance(res); } while (iElement--); + // handle generic parameters + if (res.DataType == DATATYPE_VAR) + { + // Generic parameter in a generic TypeDef + CLR_RT_Assembly *assembly = md.m_assm; + + CLR_RT_GenericParam_Index gpIndex; + assembly->FindGenericParamAtTypeDef(md, res.GenericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = + assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + targetClass = gp.Class; + targetDataType = gp.DataType; + + // isGenericInstance = true; + } + else if (res.DataType == DATATYPE_MVAR) + { + // Generic parameter in a generic method definition + CLR_RT_Assembly *assembly = md.m_assm; + + CLR_RT_GenericParam_Index gpIndex; + assembly->FindGenericParamAtMethodDef(md, res.GenericParamPosition, gpIndex); + + CLR_RT_GenericParam_CrossReference gp = + assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + + targetClass = gp.Class; + targetDataType = gp.DataType; + + // isGenericInstance = true; + } + else + { + // all the rest get it from parser element + targetClass = res.Class; + targetDataType = res.DataType; + } + // // Arguments to a methods come from the eval stack and we don't fix up the eval stack for each call. // So some arguments have the wrong datatype, since an eval stack push always promotes to 32 bits. // if (c_CLR_RT_DataTypeLookup[blk->DataType()].m_sizeInBytes == sizeof(CLR_INT32) && - c_CLR_RT_DataTypeLookup[res.m_dt].m_sizeInBytes < sizeof(CLR_INT32)) + c_CLR_RT_DataTypeLookup[targetDataType].m_sizeInBytes < sizeof(CLR_INT32)) { tmp.Assign(*blk); - tmp.ChangeDataType(res.m_dt); + tmp.ChangeDataType(targetDataType); reference = blk; blk = &tmp; } - // - // Check for enum. - // - desc.InitializeFromType(res.m_cls); + if (res.DataType == DATATYPE_VAR || res.DataType == DATATYPE_MVAR) + { + tmp.Assign(*blk); + tmp.ChangeDataType(targetDataType); - if (desc.m_handlerCls.m_target->IsEnum()) + reference = blk; + blk = &tmp; + } + else { - td = desc.m_handlerCls; - pTD = &td; + desc.InitializeFromType(targetClass); + + // Check for enum + if (desc.m_handlerCls.m_target->IsEnum()) + { + td = desc.m_handlerCls; + pTD = &td; + } } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); return true; } @@ -2806,7 +2876,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) while (true) { - CLR_UINT32 iFields = td.m_target->iFields_Num; + CLR_UINT32 iFields = td.m_target->InstanceFieldsCount; CLR_UINT32 totalFields = td.CrossReference().m_totalFields; CLR_UINT32 dFields = totalFields - iFields; @@ -2822,7 +2892,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) } } - cmd->m_fd.Set(td.Assembly(), td.m_target->iFields_First + offset); + cmd->m_fd.Set(td.Assembly(), td.m_target->FirstInstanceField + offset); } if (!g_CLR_DBG_Debugger->CheckFieldDef(cmd->m_fd, inst)) @@ -2884,7 +2954,9 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); + return true; } @@ -2934,7 +3006,9 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); + return true; } @@ -2946,7 +3020,8 @@ bool CLR_DBG_Debugger::Debugging_Value_GetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_GetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_GetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); return true; } @@ -2957,7 +3032,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetScratchPad(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_GetScratchPad *cmd = (CLR_DBG_Commands::Debugging_Value_GetScratchPad *)msg->m_payload; - CLR_RT_HeapBlock *blk = GetScratchPad_Helper(cmd->m_idx); + CLR_RT_HeapBlock *blk = GetScratchPad_Helper(cmd->m_index); WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); @@ -2971,7 +3046,9 @@ bool CLR_DBG_Debugger::Debugging_Value_SetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_SetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_SetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - WP_ReplyToCommand(msg, SetBlockHelper(blk, (CLR_DataType)cmd->m_dt, cmd->m_builtinValue), false, NULL, 0); + //WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + return true; } @@ -3030,7 +3107,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + return true; } @@ -3062,7 +3141,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + return true; } @@ -3090,7 +3171,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) } } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + return true; } @@ -3302,7 +3385,9 @@ bool CLR_DBG_Debugger::Debugging_Value_Assign(WP_Message *msg) blkDst = NULL; } - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL), false, NULL, 0); + //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL), false, NULL, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL); + return true; } @@ -3318,7 +3403,7 @@ bool CLR_DBG_Debugger::Debugging_TypeSys_Assemblies(WP_Message *msg) NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - assemblies[num++].Set(pASSM->m_idx); + assemblies[num++].Set(pASSM->m_index); } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -3389,7 +3474,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_AppDomain(WP_Message *msg) NANOCLR_FOREACH_ASSEMBLY_IN_APPDOMAIN(appDomain) { - pAssemblyIndex->Set(pASSM->m_idx); + pAssemblyIndex->Set(pASSM->m_index); pAssemblyIndex++; numAssemblies++; } @@ -3422,7 +3507,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Assembly(WP_Message *msg) CLR_DBG_Commands::Debugging_Resolve_Assembly::Reply *cmdReply; CLR_DBG_Commands::Debugging_Resolve_Assembly *cmd = (CLR_DBG_Commands::Debugging_Resolve_Assembly *)msg->m_payload; - CLR_RT_Assembly *assm = g_CLR_DBG_Debugger->IsGoodAssembly(cmd->m_idx.Assembly()); + CLR_RT_Assembly *assm = g_CLR_DBG_Debugger->IsGoodAssembly(cmd->m_index.Assembly()); #ifdef TARGET_RAM_CONSTRAINED // try allocating memory for reply struct @@ -3599,7 +3684,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Method(WP_Message *msg) cmdReply->m_td = instOwner; - CLR_SafeSprintf(szBuffer, iBuffer, "%s", inst.m_assm->GetString(inst.m_target->name)); + CLR_SafeSprintf(szBuffer, iBuffer, "%s", inst.m_assm->GetString(inst.m_target->Name)); WP_ReplyToCommand(msg, true, false, cmdReply, sizeof(CLR_DBG_Commands::Debugging_Resolve_Method::Reply)); @@ -3740,11 +3825,11 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC_Type(const CLR_RT_TypeDef_Index &id return false; td = inst.m_target; - totMethods = td->vMethods_Num + td->iMethods_Num + td->sMethods_Num; + totMethods = td->VirtualMethodCount + td->InstanceMethodCount + td->StaticFieldsCount; for (int i = 0; i < totMethods; i++) { - md.Set(idx.Assembly(), td->methods_First + i); + md.Set(idx.Assembly(), td->FirstMethod + i); Debugging_Info_SetJMC_Method(md, fJMC); } diff --git a/src/CLR/Diagnostics/Diagnostics_stub.cpp b/src/CLR/Diagnostics/Diagnostics_stub.cpp index 80689e4670..dc1d9d48cf 100644 --- a/src/CLR/Diagnostics/Diagnostics_stub.cpp +++ b/src/CLR/Diagnostics/Diagnostics_stub.cpp @@ -179,9 +179,10 @@ __nfweak void CLR_RT_DUMP::TYPE( const CLR_RT_ReflectionDef_Index& reflex ) NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::METHOD( const CLR_RT_MethodDef_Index& method ) +__nfweak void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index& method, const CLR_RT_TypeSpec_Index *genericType) { (void)method; + (void)genericType; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index a7e023d0d0..8fe2884397 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -440,31 +440,31 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE #endif //////////////////////////////////////////////////////////////////////////////////////////////////// -#define LOOKUP_ELEMENT(idx, tblName, tblNameUC) const CLR_RECORD_##tblNameUC *p = Get##tblName(idx) +#define LOOKUP_ELEMENT(index, tblName, tblNameUC) const CLR_RECORD_##tblNameUC *p = Get##tblName(index) -#define LOOKUP_ELEMENT_REF(idx, tblName, tblNameUC, tblName2) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ - const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[idx].m_target; \ +#define LOOKUP_ELEMENT_REF(index, tblName, tblNameUC, tblName2) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ + const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[index].Target; \ if (s->m_data == 0) \ s = NULL -#define LOOKUP_ELEMENT_IDX(idx, tblName, tblNameUC) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ +#define LOOKUP_ELEMENT_IDX(index, tblName, tblNameUC) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ CLR_RT_##tblName##_Index s; \ - s.Set(m_idx, idx) + s.Set(m_index, index) #if defined(NANOCLR_TRACE_INSTRUCTIONS) void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_UINT32 idx = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(tk); switch (CLR_TypeFromTk(tk)) { case TBL_AssemblyRef: { - LOOKUP_ELEMENT(idx, AssemblyRef, ASSEMBLYREF); + LOOKUP_ELEMENT(index, AssemblyRef, ASSEMBLYREF); { CLR_Debug::Printf("[%s]", GetString(p->name)); } @@ -472,64 +472,63 @@ void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) } case TBL_TypeRef: { - LOOKUP_ELEMENT_REF(idx, TypeRef, TYPEREF, TypeDef); + LOOKUP_ELEMENT_REF(index, TypeRef, TYPEREF, TypeDef); if (s) { CLR_RT_DUMP::TYPE(*s); } else { - CLR_Debug::Printf("%s.%s", GetString(p->nameSpace), GetString(p->name)); + CLR_Debug::Printf("%s.%s", GetString(p->NameSpace), GetString(p->Name)); } break; } case TBL_FieldRef: { - LOOKUP_ELEMENT_REF(idx, FieldRef, FIELDREF, FieldDef); + LOOKUP_ELEMENT_REF(index, FieldRef, FIELDREF, FieldDef); if (s) { CLR_RT_DUMP::FIELD(*s); } else { - CLR_Debug::Printf("%s", GetString(p->name)); + CLR_Debug::Printf("%s", GetString(p->Name)); } break; } case TBL_MethodRef: { - LOOKUP_ELEMENT_REF(idx, MethodRef, METHODREF, MethodDef); - if (s) - { - CLR_RT_DUMP::METHOD(*s); - } - else - { - CLR_Debug::Printf("%s", GetString(p->name)); - } + LOOKUP_ELEMENT_IDX(index, MethodRef, METHODREF); + CLR_RT_DUMP::METHODREF(s); break; } case TBL_TypeDef: { - LOOKUP_ELEMENT_IDX(idx, TypeDef, TYPEDEF); + LOOKUP_ELEMENT_IDX(index, TypeDef, TYPEDEF); CLR_RT_DUMP::TYPE(s); break; } case TBL_FieldDef: { - LOOKUP_ELEMENT_IDX(idx, FieldDef, FIELDDEF); + LOOKUP_ELEMENT_IDX(index, FieldDef, FIELDDEF); CLR_RT_DUMP::FIELD(s); break; } case TBL_MethodDef: { - LOOKUP_ELEMENT_IDX(idx, MethodDef, METHODDEF); - CLR_RT_DUMP::METHOD(s); + LOOKUP_ELEMENT_IDX(index, MethodDef, METHODDEF); + CLR_RT_DUMP::METHOD(s, NULL); + break; + } + case TBL_MethodSpec: + { + LOOKUP_ELEMENT_IDX(index, MethodSpec, METHODSPEC); + CLR_RT_DUMP::METHODSPEC(s); break; } case TBL_Strings: { - const char *p = GetString(idx); + const char *p = GetString(index); CLR_Debug::Printf("'%s'", p); break; } @@ -581,7 +580,7 @@ void CLR_RT_Assembly::DumpSignature(CLR_SIG sig) void CLR_RT_Assembly::DumpSignature(const CLR_UINT8 *&p) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_DataType opt = CLR_UncompressElementType(p); + NanoCLRDataType opt = CLR_UncompressElementType(p); switch (opt) { @@ -690,12 +689,12 @@ void CLR_RT_Assembly::DumpOpcodeDirect( int pid) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_Debug::Printf(" [%04x:%04x:%08x", pid, (int)(ip - ipStart), (size_t)ip); + CLR_Debug::Printf(" [%04x:%04x", pid, (int)(ip - ipStart)); if (NANOCLR_INDEX_IS_VALID(call)) { CLR_Debug::Printf(":"); - CLR_RT_DUMP::METHOD(call); + CLR_RT_DUMP::METHOD(call, call.genericType); } CLR_OPCODE op = CLR_ReadNextOpcodeCompressed(ip); @@ -773,14 +772,14 @@ void CLR_RT_DUMP::TYPE(const CLR_RT_ReflectionDef_Index &reflex) } } -void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index &method) +void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index &method, const CLR_RT_TypeSpec_Index *genericType) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); char rgBuffer[512]; char *szBuffer = rgBuffer; size_t iBuffer = MAXSTRLEN(rgBuffer); - g_CLR_RT_TypeSystem.BuildMethodName(method, szBuffer, iBuffer); + g_CLR_RT_TypeSystem.BuildMethodName(method, genericType, szBuffer, iBuffer); CLR_Debug::Printf("%s", rgBuffer); } @@ -843,7 +842,7 @@ void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) { CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; - CLR_RT_DUMP::METHOD(dlg->DelegateFtn()); + CLR_RT_DUMP::METHOD(dlg->DelegateFtn(), NULL); } break; @@ -892,6 +891,32 @@ void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) #undef PELEMENT_TO_STRING } +void CLR_RT_DUMP::METHODREF(const CLR_RT_MethodRef_Index &method) +{ + NATIVE_PROFILE_CLR_DIAGNOSTICS(); + + char rgBuffer[512]; + char* szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildMethodRefName(method, szBuffer, iBuffer); + + CLR_Debug::Printf("%s", rgBuffer); +} + +void CLR_RT_DUMP::METHODSPEC(const CLR_RT_MethodSpec_Index& method) +{ + NATIVE_PROFILE_CLR_DIAGNOSTICS(); + + char rgBuffer[512]; + char* szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildMethodSpecName(method, szBuffer, iBuffer); + + CLR_Debug::Printf("%s", rgBuffer); +} + #endif // defined(NANOCLR_TRACE_ERRORS) //--// @@ -929,7 +954,7 @@ void CLR_RT_DUMP::EXCEPTION(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock &ref) while (depth-- > 0) { CLR_Debug::Printf(" ++++ "); - CLR_RT_DUMP::METHOD(stackTrace->m_md); + CLR_RT_DUMP::METHOD(stackTrace->m_md, NULL); CLR_Debug::Printf(" [IP: %04x] ++++\r\n", stackTrace->m_IP); stackTrace++; diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index fbaaec1e1d..940195d7d8 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -16,12 +16,13 @@ HRESULT CLR_PRF_Profiler::CreateInstance() g_CLR_PRF_Profiler.m_packetSeqId = 0; g_CLR_PRF_Profiler.m_stream = NULL; - g_CLR_PRF_Profiler.m_lastTimestamp = (CLR_UINT32)((CLR_UINT64)(HAL_Time_CurrentTime() + ((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1)) - >> CLR_PRF_CMDS::Bits::TimestampShift); + g_CLR_PRF_Profiler.m_lastTimestamp = (CLR_UINT32)( + (CLR_UINT64)(HAL_Time_CurrentTime() + ((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1)) >> + CLR_PRF_CMDS::Bits::TimestampShift); g_CLR_PRF_Profiler.m_currentAssembly = 0; g_CLR_PRF_Profiler.m_currentThreadPID = 0; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(g_CLR_PRF_Profiler.m_stream, NULL, 0)); - + NANOCLR_NOCLEANUP(); } @@ -41,9 +42,9 @@ HRESULT CLR_PRF_Profiler::Profiler_Cleanup() void CLR_PRF_Profiler::SendMemoryLayout() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - //Send Memory Layout - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_Memory_Layout, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( 0 ); + // Send Memory Layout + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Memory_Layout, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(0); PackAndWriteBits(s_CLR_RT_Heap.m_size); Stream_Send(); } @@ -57,45 +58,48 @@ HRESULT CLR_PRF_Profiler::DumpHeap() CLR_UINT32 heapSize = 0; - if(CLR_EE_PRF_IS_NOT(Enabled)) { NANOCLR_SET_AND_LEAVE(S_OK); } + if (CLR_EE_PRF_IS_NOT(Enabled)) + { + NANOCLR_SET_AND_LEAVE(S_OK); + } { - //Send HeapDump Begin Marker - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapDump_Start, CLR_PRF_CMDS::Bits::CommandHeader ); + // Send HeapDump Begin Marker + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapDump_Start, CLR_PRF_CMDS::Bits::CommandHeader); NANOCLR_CHECK_HRESULT(Stream_Send()); } DumpRoots(); - NANOCLR_FOREACH_NODE(CLR_RT_HeapCluster,hc,g_CLR_RT_ExecutionEngine.m_heap) + NANOCLR_FOREACH_NODE(CLR_RT_HeapCluster, hc, g_CLR_RT_ExecutionEngine.m_heap) { - CLR_RT_HeapBlock_Node* ptr; + CLR_RT_HeapBlock_Node *ptr; CLR_UINT32 size; - CLR_RT_HeapBlock_Node* end = hc->m_payloadEnd; + CLR_RT_HeapBlock_Node *end = hc->m_payloadEnd; - for(ptr = hc->m_payloadStart, size = ptr->DataSize(); ptr < end; ptr+= size, size = ptr->DataSize()) + for (ptr = hc->m_payloadStart, size = ptr->DataSize(); ptr < end; ptr += size, size = ptr->DataSize()) { - if(ptr->DataType() != DATATYPE_FREEBLOCK && ptr->DataType() != DATATYPE_CACHEDBLOCK) + if (ptr->DataType() != DATATYPE_FREEBLOCK && ptr->DataType() != DATATYPE_CACHEDBLOCK) { heapSize += ptr->DataSize(); } DumpObject(ptr); - //Don't let the stream get too big. + // Don't let the stream get too big. NANOCLR_CHECK_HRESULT(Stream_Send()); } } NANOCLR_FOREACH_NODE_END(); { - //Send HeapDump End Marker - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapDump_Stop, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( heapSize ); + // Send HeapDump End Marker + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapDump_Stop, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(heapSize); NANOCLR_CHECK_HRESULT(Stream_Send()); } NANOCLR_CLEANUP(); - //Flush out all data we've collected. Stopping the device without informing the program is a bad idea. + // Flush out all data we've collected. Stopping the device without informing the program is a bad idea. Stream_Flush(); NANOCLR_CLEANUP_END(); @@ -106,14 +110,14 @@ HRESULT CLR_PRF_Profiler::DumpRoots() NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_HEADER(); - //Root proto: - //8bits: CLR_PRF_CMDS::c_Profiling_HeapDump_Root - //32bits: Address of Root - //3bits: Source of Root: Finalizer, AppDomain, Assembly, Thread, Stack? - //Only when source is Stack??: 32bits: CLR_RT_MethodDef_Index + // Root proto: + // 8bits: CLR_PRF_CMDS::c_Profiling_HeapDump_Root + // 32bits: Address of Root + // 3bits: Source of Root: Finalizer, AppDomain, Assembly, Thread, Stack? + // Only when source is Stack??: 32bits: CLR_RT_MethodDef_Index - //Iterate through all the finalizers - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer,fin,g_CLR_RT_ExecutionEngine.m_finalizersPending) + // Iterate through all the finalizers + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer, fin, g_CLR_RT_ExecutionEngine.m_finalizersPending) { _ASSERTE(fin->m_object); _ASSERTE(fin->m_object->DataType() != DATATYPE_FREEBLOCK); @@ -123,7 +127,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() } NANOCLR_FOREACH_NODE_END(); - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer,fin,g_CLR_RT_ExecutionEngine.m_finalizersAlive) + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Finalizer, fin, g_CLR_RT_ExecutionEngine.m_finalizersAlive) { _ASSERTE(fin->m_object); _ASSERTE(fin->m_object->DataType() != DATATYPE_FREEBLOCK); @@ -134,28 +138,30 @@ HRESULT CLR_PRF_Profiler::DumpRoots() NANOCLR_FOREACH_NODE_END(); #if defined(NANOCLR_APPDOMAINS) - //Iterate through all the appdomains - NANOCLR_FOREACH_NODE(CLR_RT_AppDomain,appDomain,g_CLR_RT_ExecutionEngine.m_appDomains) + // Iterate through all the appdomains + NANOCLR_FOREACH_NODE(CLR_RT_AppDomain, appDomain, g_CLR_RT_ExecutionEngine.m_appDomains) { DumpRoot(appDomain, CLR_PRF_CMDS::RootTypes::Root_AppDomain, 0, NULL); } NANOCLR_FOREACH_NODE_END(); #endif - //Iterate through all the assemblies. + // Iterate through all the assemblies. NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - DumpRoot( pASSM, CLR_PRF_CMDS::RootTypes::Root_Assembly, 0, NULL ); + DumpRoot(pASSM, CLR_PRF_CMDS::RootTypes::Root_Assembly, 0, NULL); } NANOCLR_FOREACH_ASSEMBLY_END(); - { //Iterate through all threads. - CLR_RT_DblLinkedList* threadLists[ 2 ] = { &g_CLR_RT_ExecutionEngine.m_threadsReady, &g_CLR_RT_ExecutionEngine.m_threadsWaiting }; - for(int list = 0; list < 2; list++) + { // Iterate through all threads. + CLR_RT_DblLinkedList *threadLists[2] = { + &g_CLR_RT_ExecutionEngine.m_threadsReady, + &g_CLR_RT_ExecutionEngine.m_threadsWaiting}; + for (int list = 0; list < 2; list++) { - NANOCLR_FOREACH_NODE(CLR_RT_Thread,th,*threadLists[ list ]) + NANOCLR_FOREACH_NODE(CLR_RT_Thread, th, *threadLists[list]) { - DumpRoot( th, CLR_PRF_CMDS::RootTypes::Root_Thread, 0, NULL ); + DumpRoot(th, CLR_PRF_CMDS::RootTypes::Root_Thread, 0, NULL); } NANOCLR_FOREACH_NODE_END(); } @@ -166,26 +172,32 @@ HRESULT CLR_PRF_Profiler::DumpRoots() NANOCLR_NOCLEANUP(); } -void CLR_PRF_Profiler::DumpRoot( CLR_RT_HeapBlock* root, CLR_UINT32 type, CLR_UINT32 flags, CLR_RT_MethodDef_Index* source ) +void CLR_PRF_Profiler::DumpRoot( + CLR_RT_HeapBlock *root, + CLR_UINT32 type, + CLR_UINT32 flags, + CLR_RT_MethodDef_Index *source) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapDump_Root, CLR_PRF_CMDS::Bits::CommandHeader ); - DumpPointer( root ); - m_stream->WriteBits( type, CLR_PRF_CMDS::Bits::RootTypes ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapDump_Root, CLR_PRF_CMDS::Bits::CommandHeader); + DumpPointer(root); + m_stream->WriteBits(type, CLR_PRF_CMDS::Bits::RootTypes); _ASSERTE(!flags); - if(type == CLR_PRF_CMDS::RootTypes::Root_Stack) + if (type == CLR_PRF_CMDS::RootTypes::Root_Stack) { PackAndWriteBits(*source); - } else { + } + else + { _ASSERTE(source == NULL); } } -void CLR_PRF_Profiler::DumpObject( CLR_RT_HeapBlock* ptr ) +void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - //Object Proto: + // Object Proto: // Free blocked and cached blocks are considered free memory and are not dumped. // All other types: // 8 bits - Profiling_HeapDump_Object @@ -198,18 +210,20 @@ void CLR_PRF_Profiler::DumpObject( CLR_RT_HeapBlock* ptr ) // 0 - No more references. End of Packet // 1 - 32-bit pointer to reference follows. Repeat. - CLR_DataType dt = ptr->DataType(); + NanoCLRDataType dt = ptr->DataType(); _ASSERTE(dt < DATATYPE_FIRST_INVALID); - _ASSERTE(sizeof(CLR_RT_HeapBlock) == 12); //HeapBlockObjectPacket in ProfilerPackets.cs assumes sizeof(CLR_RT_HeapBlock) == 12 + _ASSERTE( + sizeof(CLR_RT_HeapBlock) == + 12); // HeapBlockObjectPacket in ProfilerPackets.cs assumes sizeof(CLR_RT_HeapBlock) == 12 - if(dt != DATATYPE_FREEBLOCK && dt != DATATYPE_CACHEDBLOCK) + if (dt != DATATYPE_FREEBLOCK && dt != DATATYPE_CACHEDBLOCK) { - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapDump_Object, CLR_PRF_CMDS::Bits::CommandHeader ); - DumpPointer( ptr ); - PackAndWriteBits( ptr->DataSize() ); - m_stream->WriteBits( (CLR_UINT32)dt,CLR_PRF_CMDS::Bits::DataType ); - - switch(dt) + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapDump_Object, CLR_PRF_CMDS::Bits::CommandHeader); + DumpPointer(ptr); + PackAndWriteBits(ptr->DataSize()); + m_stream->WriteBits((CLR_UINT32)dt, CLR_PRF_CMDS::Bits::DataType); + + switch (dt) { case DATATYPE_BOOLEAN: case DATATYPE_I1: @@ -226,23 +240,25 @@ void CLR_PRF_Profiler::DumpObject( CLR_RT_HeapBlock* ptr ) case DATATYPE_DATETIME: case DATATYPE_TIMESPAN: case DATATYPE_STRING: - //Boxed primitives.. All are non-pointer types -- no references. + // Boxed primitives.. All are non-pointer types -- no references. case DATATYPE_REFLECTION: - //Has a reference to an assembly, but it's unlikely to be the only thing keeping the assembly alive. + // Has a reference to an assembly, but it's unlikely to be the only thing keeping the assembly alive. case DATATYPE_BINARY_BLOB_HEAD: - //Unknown/unmanaged data-type. No references. + // Unknown/unmanaged data-type. No references. case DATATYPE_SUBTHREAD: - //Owned by a DATATYPE_THREAD; Don't dump back-reference. + // Owned by a DATATYPE_THREAD; Don't dump back-reference. case DATATYPE_MEMORY_STREAM_DATA: - //No references at all -- usually, and when not, its a pointer to an externally shown character buffer used for deserialization. + // No references at all -- usually, and when not, its a pointer to an externally shown character buffer + // used for deserialization. case DATATYPE_IO_PORT: - //No references for normal GPIO; there is a structure for interrupts, but that doesn't seem to be stored on the managed heap. + // No references for normal GPIO; there is a structure for interrupts, but that doesn't seem to be + // stored on the managed heap. case DATATYPE_TIMER_HEAD: case DATATYPE_LOCK_OWNER_HEAD: case DATATYPE_LOCK_REQUEST_HEAD: case DATATYPE_SERIALIZER_DUPLICATE: case DATATYPE_SERIALIZER_STATE: - //No unique forward-looking references. + // No unique forward-looking references. break; case DATATYPE_OBJECT: @@ -251,199 +267,206 @@ void CLR_PRF_Profiler::DumpObject( CLR_RT_HeapBlock* ptr ) #if defined(NANOCLR_APPDOMAINS) case DATATYPE_TRANSPARENT_PROXY: #endif - { - DumpSingleReference( ptr ); - break; - } + { + DumpSingleReference(ptr); + break; + } case DATATYPE_CLASS: case DATATYPE_VALUETYPE: - { - CLR_RT_TypeDef_Index idx = ptr->ObjectCls(); - _ASSERTE(NANOCLR_INDEX_IS_VALID(idx)); - PackAndWriteBits( idx ); - DumpSingleReference( ptr->ObjectLock() ); - DumpListOfReferences( ptr + 1, ptr->DataSize() - 1 ); //All items in list should have DataSize() == 1 therefore ptr->DataSize() - 1 == number of items in list. - break; - } + { + CLR_RT_TypeDef_Index index = ptr->ObjectCls(); + _ASSERTE(NANOCLR_INDEX_IS_VALID(index)); + PackAndWriteBits(index); + DumpSingleReference(ptr->ObjectLock()); + DumpListOfReferences( + ptr + 1, + ptr->DataSize() - 1); // All items in list should have DataSize() == 1 therefore ptr->DataSize() - 1 + // == number of items in list. + break; + } case DATATYPE_SZARRAY: + { + // Special case needed to dump out array data type and levels. + CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + + PackAndWriteBits(array->ReflectionDataConst().m_data.m_type); + PackAndWriteBits(array->ReflectionDataConst().m_levels); + + if (array->m_fReference) { - //Special case needed to dump out array data type and levels. - CLR_RT_HeapBlock_Array* array = (CLR_RT_HeapBlock_Array*)ptr; - - PackAndWriteBits( array->ReflectionDataConst().m_data.m_type ); - PackAndWriteBits( array->ReflectionDataConst().m_levels ); - - if(array->m_fReference) - { - DumpListOfReferences( (CLR_RT_HeapBlock*)array->GetFirstElement(), array->m_numOfElements ); - } - break; + DumpListOfReferences((CLR_RT_HeapBlock *)array->GetFirstElement(), array->m_numOfElements); } + break; + } case DATATYPE_ASSEMBLY: - { - CLR_RT_Assembly* assembly = (CLR_RT_Assembly*)ptr; - DumpSingleReference( assembly->m_pFile ); + { + CLR_RT_Assembly *assembly = (CLR_RT_Assembly *)ptr; + DumpSingleReference(assembly->m_pFile); #if !defined(NANOCLR_APPDOMAINS) - DumpListOfReferences( assembly->m_pStaticFields, assembly->m_iStaticFields ); + DumpListOfReferences(assembly->m_pStaticFields, assembly->m_iStaticFields); #endif - break; - } + break; + } case DATATYPE_WEAKCLASS: - { - CLR_RT_HeapBlock_WeakReference* wr = (CLR_RT_HeapBlock_WeakReference*)ptr; - DumpSingleReference( wr->m_targetDirect ); - break; - } + { + CLR_RT_HeapBlock_WeakReference *wr = (CLR_RT_HeapBlock_WeakReference *)ptr; + DumpSingleReference(wr->m_targetDirect); + break; + } case DATATYPE_DELEGATE_HEAD: - { - CLR_RT_HeapBlock_Delegate* dlg = (CLR_RT_HeapBlock_Delegate*)ptr; - DumpSingleReference( &dlg->m_object ); - break; - } + { + CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; + DumpSingleReference(&dlg->m_object); + break; + } case DATATYPE_DELEGATELIST_HEAD: - { - CLR_RT_HeapBlock_Delegate_List* dlgList = (CLR_RT_HeapBlock_Delegate_List*)ptr; - DumpListOfReferences( dlgList->GetDelegates(), dlgList->m_length ); - break; - } + { + CLR_RT_HeapBlock_Delegate_List *dlgList = (CLR_RT_HeapBlock_Delegate_List *)ptr; + DumpListOfReferences(dlgList->GetDelegates(), dlgList->m_length); + break; + } case DATATYPE_THREAD: + { + CLR_RT_Thread *th = (CLR_RT_Thread *)ptr; + + DumpSingleReference(th->m_dlg); + DumpSingleReference(th->m_currentException.Dereference()); + + for (int i = 0; i < th->m_nestedExceptionsPos; i++) { - CLR_RT_Thread* th = (CLR_RT_Thread*)ptr; - - DumpSingleReference( th->m_dlg ); - DumpSingleReference( th->m_currentException.Dereference() ); - - for(int i=0; im_nestedExceptionsPos; i++) - { - CLR_RT_HeapBlock* except = th->m_nestedExceptions[ i ].m_exception; - _ASSERTE(!except || except->DataType() == DATATYPE_CLASS || except->DataType() == DATATYPE_OBJECT); - DumpSingleReference( except ); - } - - DumpListOfReferences( th->m_locks); - DumpSingleReference ( th->m_waitForObject ); - DumpListOfReferences( th->m_stackFrames ); - DumpListOfReferences( th->m_subThreads ); - break; + CLR_RT_HeapBlock *except = th->m_nestedExceptions[i].m_exception; + _ASSERTE(!except || except->DataType() == DATATYPE_CLASS || except->DataType() == DATATYPE_OBJECT); + DumpSingleReference(except); } + DumpListOfReferences(th->m_locks); + DumpSingleReference(th->m_waitForObject); + DumpListOfReferences(th->m_stackFrames); + DumpListOfReferences(th->m_subThreads); + break; + } + case DATATYPE_STACK_FRAME: - { - CLR_RT_StackFrame* stack = (CLR_RT_StackFrame*)ptr; - DumpListOfReferences( stack->m_arguments, stack->m_call.m_target->numArgs ); - DumpListOfReferences( stack->m_locals , stack->m_call.m_target->numLocals ); - DumpListOfReferences( stack->m_evalStack, stack->TopValuePosition() ); - break; - } + { + CLR_RT_StackFrame *stack = (CLR_RT_StackFrame *)ptr; + DumpListOfReferences(stack->m_arguments, stack->m_call.m_target->ArgumentsCount); + DumpListOfReferences(stack->m_locals, stack->m_call.m_target->LocalsCount); + DumpListOfReferences(stack->m_evalStack, stack->TopValuePosition()); + break; + } case DATATYPE_OBJECT_TO_EVENT: - { - CLR_RT_ObjectToEvent_Source* otes = (CLR_RT_ObjectToEvent_Source*)ptr; - DumpSingleReference( otes->m_eventPtr ); //The managed object should reference this obj, which references the event. - break; - } + { + CLR_RT_ObjectToEvent_Source *otes = (CLR_RT_ObjectToEvent_Source *)ptr; + DumpSingleReference( + otes->m_eventPtr); // The managed object should reference this obj, which references the event. + break; + } case DATATYPE_LOCK_HEAD: - { - //Object points to Lock Head, Thread points to Lock Head, Lock Head points to list of lock owners and requests - CLR_RT_HeapBlock_Lock* lock = (CLR_RT_HeapBlock_Lock*)ptr; - DumpListOfReferences( lock->m_owners ); - DumpListOfReferences( lock->m_requests ); - break; - } + { + // Object points to Lock Head, Thread points to Lock Head, Lock Head points to list of lock owners and + // requests + CLR_RT_HeapBlock_Lock *lock = (CLR_RT_HeapBlock_Lock *)ptr; + DumpListOfReferences(lock->m_owners); + DumpListOfReferences(lock->m_requests); + break; + } case DATATYPE_ENDPOINT_HEAD: - { - CLR_RT_HeapBlock_EndPoint* ep = (CLR_RT_HeapBlock_EndPoint*)ptr; - DumpListOfReferences( ep->m_messages ); - break; - } + { + CLR_RT_HeapBlock_EndPoint *ep = (CLR_RT_HeapBlock_EndPoint *)ptr; + DumpListOfReferences(ep->m_messages); + break; + } case DATATYPE_WAIT_FOR_OBJECT_HEAD: - { - CLR_RT_HeapBlock_WaitForObject* wfo = (CLR_RT_HeapBlock_WaitForObject*)ptr; - DumpListOfReferences(wfo->GetWaitForObjects(), wfo->m_cObjects); - break; - } + { + CLR_RT_HeapBlock_WaitForObject *wfo = (CLR_RT_HeapBlock_WaitForObject *)ptr; + DumpListOfReferences(wfo->GetWaitForObjects(), wfo->m_cObjects); + break; + } case DATATYPE_FINALIZER_HEAD: - { - CLR_RT_HeapBlock_Finalizer* f = (CLR_RT_HeapBlock_Finalizer*)ptr; - DumpSingleReference( f->m_object ); - break; - } + { + CLR_RT_HeapBlock_Finalizer *f = (CLR_RT_HeapBlock_Finalizer *)ptr; + DumpSingleReference(f->m_object); + break; + } case DATATYPE_MEMORY_STREAM_HEAD: - { - CLR_RT_HeapBlock_MemoryStream* ms = (CLR_RT_HeapBlock_MemoryStream*)ptr; - DumpListOfReferences( ms->m_buffers ); - break; - } + { + CLR_RT_HeapBlock_MemoryStream *ms = (CLR_RT_HeapBlock_MemoryStream *)ptr; + DumpListOfReferences(ms->m_buffers); + break; + } case DATATYPE_SERIALIZER_HEAD: - { - CLR_RT_BinaryFormatter* bf = (CLR_RT_BinaryFormatter*)ptr; - DumpSingleReference ( bf->m_stream ); - DumpListOfReferences( bf->m_duplicates ); - DumpListOfReferences( bf->m_states ); - break; - } + { + CLR_RT_BinaryFormatter *bf = (CLR_RT_BinaryFormatter *)ptr; + DumpSingleReference(bf->m_stream); + DumpListOfReferences(bf->m_duplicates); + DumpListOfReferences(bf->m_states); + break; + } #if defined(NANOCLR_APPDOMAINS) - case DATATYPE_APPDOMAIN_HEAD: + case DATATYPE_APPDOMAIN_HEAD: { - CLR_RT_AppDomain* appDomain = (CLR_RT_AppDomain*)ptr; - DumpListOfReferences( appDomain->m_appDomainAssemblies ); - DumpSingleReference ( appDomain->m_globalLock ); - DumpSingleReference ( appDomain->m_strName ); - DumpSingleReference ( appDomain->m_outOfMemoryException ); + CLR_RT_AppDomain *appDomain = (CLR_RT_AppDomain *)ptr; + DumpListOfReferences(appDomain->m_appDomainAssemblies); + DumpSingleReference(appDomain->m_globalLock); + DumpSingleReference(appDomain->m_strName); + DumpSingleReference(appDomain->m_outOfMemoryException); break; } - case DATATYPE_APPDOMAIN_ASSEMBLY: + case DATATYPE_APPDOMAIN_ASSEMBLY: { - CLR_RT_AppDomainAssembly* appDomainAssembly = (CLR_RT_AppDomainAssembly*)ptr; - DumpListOfReferences( appDomainAssembly->m_pStaticFields, appDomainAssembly->m_assembly->m_iStaticFields ); + CLR_RT_AppDomainAssembly *appDomainAssembly = (CLR_RT_AppDomainAssembly *)ptr; + DumpListOfReferences( + appDomainAssembly->m_pStaticFields, + appDomainAssembly->m_assembly->m_iStaticFields); break; } #endif - default: + default: _ASSERTE(false); break; } DumpEndOfRefsList(); - } //if(dt != DATATYPE_FREEBLOCK && dt != DATATYPE_CACHEDBLOCK) + } // if(dt != DATATYPE_FREEBLOCK && dt != DATATYPE_CACHEDBLOCK) } -CLR_RT_HeapBlock* CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlock* ref) +CLR_RT_HeapBlock *CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlock *ref) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - while(ref) + while (ref) { - CLR_DataType dt = ref->DataType(); - switch(dt) + NanoCLRDataType dt = ref->DataType(); + switch (dt) { - case DATATYPE_BYREF: - case DATATYPE_OBJECT: - ref = ref->Dereference(); - break; + case DATATYPE_BYREF: + case DATATYPE_OBJECT: + ref = ref->Dereference(); + break; #if defined(NANOCLR_APPDOMAINS) - case DATATYPE_TRANSPARENT_PROXY: - ref = ref->TransparentProxyDereference(); - break; + case DATATYPE_TRANSPARENT_PROXY: + ref = ref->TransparentProxyDereference(); + break; #endif - case DATATYPE_ARRAY_BYREF: - ref = ref->Array(); - default: - return ref; + case DATATYPE_ARRAY_BYREF: + ref = ref->Array(); + default: + return ref; } } return NULL; @@ -455,34 +478,34 @@ void CLR_PRF_Profiler::DumpEndOfRefsList() SendFalse(); } -void CLR_PRF_Profiler::DumpPointer(void* ptr) +void CLR_PRF_Profiler::DumpPointer(void *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - PackAndWriteBits( (CLR_UINT32)((CLR_UINT8*)ptr - s_CLR_RT_Heap.m_location) ); + PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.m_location)); } -void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock* ptr) +void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); ptr = FindReferencedObject(ptr); - if(ptr) + if (ptr) { SendTrue(); DumpPointer(ptr); } } -void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_HeapBlock* firstItem, CLR_UINT16 count) +void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_HeapBlock *firstItem, CLR_UINT16 count) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_RT_HeapBlock* ptr; - for(ptr = firstItem; count > 0; ptr += ptr->DataSize(), count--) + CLR_RT_HeapBlock *ptr; + for (ptr = firstItem; count > 0; ptr += ptr->DataSize(), count--) { DumpSingleReference(ptr); } } -void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_DblLinkedList& list) +void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_DblLinkedList &list) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Node, ptr, list) @@ -497,10 +520,11 @@ void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_DblLinkedList& list) void CLR_PRF_Profiler::Timestamp() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - //Send Profiling Timestamp - CLR_UINT32 time = (CLR_UINT32)((HAL_Time_CurrentTime() + ((CLR_UINT64)((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1))) - >> CLR_PRF_CMDS::Bits::TimestampShift); - if(time > m_lastTimestamp) + // Send Profiling Timestamp + CLR_UINT32 time = (CLR_UINT32)( + (HAL_Time_CurrentTime() + ((CLR_UINT64)((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1))) >> + CLR_PRF_CMDS::Bits::TimestampShift); + if (time > m_lastTimestamp) { m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Timestamp, CLR_PRF_CMDS::Bits::CommandHeader); PackAndWriteBits(time - m_lastTimestamp); @@ -512,7 +536,7 @@ void CLR_PRF_Profiler::Timestamp() //--// #if defined(NANOCLR_PROFILE_NEW_CALLS) -HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread* nextThread) +HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread *nextThread) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_HEADER(); @@ -520,11 +544,11 @@ HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread* nextThread) CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); - if(CLR_EE_PRF_IS(Calls)) + if (CLR_EE_PRF_IS(Calls)) { Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_Calls_CtxSwitch, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( nextThread->m_pid ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Calls_CtxSwitch, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(nextThread->m_pid); m_currentThreadPID = nextThread->m_pid; NANOCLR_CHECK_HRESULT(Stream_Send()); } @@ -532,19 +556,19 @@ HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread* nextThread) NANOCLR_NOCLEANUP(); } -HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread* th, CLR_RT_MethodDef_Index md) +HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread *th, CLR_RT_MethodDef_Index md) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_HEADER(); _ASSERTE(th); - if(CLR_EE_PRF_IS(Calls)) + if (CLR_EE_PRF_IS(Calls)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); - if(th->m_pid != m_currentThreadPID) + if (th->m_pid != m_currentThreadPID) { - NANOCLR_CHECK_HRESULT(RecordContextSwitch( th )); + NANOCLR_CHECK_HRESULT(RecordContextSwitch(th)); } else { @@ -555,7 +579,7 @@ HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread* th, CLR_RT_MethodDef m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Calls_Call, CLR_PRF_CMDS::Bits::CommandHeader); - if(md.Assembly() == m_currentAssembly) + if (md.Assembly() == m_currentAssembly) { SendFalse(); } @@ -572,19 +596,19 @@ HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread* th, CLR_RT_MethodDef NANOCLR_NOCLEANUP(); } -HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread* th, CLR_PROF_CounterCallChain& prof) +HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread *th, CLR_PROF_CounterCallChain &prof) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_HEADER(); _ASSERTE(th); - if(CLR_EE_PRF_IS(Calls)) + if (CLR_EE_PRF_IS(Calls)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); - if(th->m_pid != m_currentThreadPID) + if (th->m_pid != m_currentThreadPID) { - NANOCLR_CHECK_HRESULT(RecordContextSwitch( th )); + NANOCLR_CHECK_HRESULT(RecordContextSwitch(th)); } else { @@ -606,52 +630,52 @@ HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread* th, CLR_PROF_Count #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) -void CLR_PRF_Profiler::TrackObjectCreation( CLR_RT_HeapBlock* ptr ) +void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); _ASSERTE(ptr); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); CLR_UINT8 dt = ptr->DataType(); - if(dt != DATATYPE_STACK_FRAME && dt != DATATYPE_BINARY_BLOB_HEAD) + if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_BINARY_BLOB_HEAD) { Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_Allocs_Alloc, CLR_PRF_CMDS::Bits::CommandHeader ); - DumpPointer( ptr ); - PackAndWriteBits( ptr->DataSize() ); - m_stream->WriteBits( (CLR_UINT32)dt, CLR_PRF_CMDS::Bits::DataType ); - if(dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Allocs_Alloc, CLR_PRF_CMDS::Bits::CommandHeader); + DumpPointer(ptr); + PackAndWriteBits(ptr->DataSize()); + m_stream->WriteBits((CLR_UINT32)dt, CLR_PRF_CMDS::Bits::DataType); + if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) { - PackAndWriteBits( ptr->ObjectCls() ); + PackAndWriteBits(ptr->ObjectCls()); } - else if(dt == DATATYPE_SZARRAY) + else if (dt == DATATYPE_SZARRAY) { - CLR_RT_HeapBlock_Array* array = (CLR_RT_HeapBlock_Array*)ptr; - PackAndWriteBits( array->ReflectionDataConst().m_data.m_type ); - PackAndWriteBits( array->ReflectionDataConst().m_levels ); + CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + PackAndWriteBits(array->ReflectionDataConst().m_data.m_type); + PackAndWriteBits(array->ReflectionDataConst().m_levels); } Stream_Send(); } } } -void CLR_PRF_Profiler::TrackObjectDeletion( CLR_RT_HeapBlock* ptr ) +void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); _ASSERTE(ptr); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); CLR_UINT8 dt = ptr->DataType(); - if(dt != DATATYPE_STACK_FRAME && dt != DATATYPE_CACHEDBLOCK ) + if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_CACHEDBLOCK) { Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_Allocs_Delete, CLR_PRF_CMDS::Bits::CommandHeader ); - DumpPointer( ptr ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Allocs_Delete, CLR_PRF_CMDS::Bits::CommandHeader); + DumpPointer(ptr); Stream_Send(); } } @@ -660,22 +684,22 @@ void CLR_PRF_Profiler::TrackObjectDeletion( CLR_RT_HeapBlock* ptr ) void CLR_PRF_Profiler::TrackObjectRelocation() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); - CLR_RT_GarbageCollector::RelocationRegion* relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; + CLR_RT_GarbageCollector::RelocationRegion *relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; size_t relocCount = g_CLR_RT_GarbageCollector.m_relocCount; Timestamp(); m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Allocs_Relloc, CLR_PRF_CMDS::Bits::CommandHeader); - PackAndWriteBits(( CLR_UINT32)relocCount ); + PackAndWriteBits((CLR_UINT32)relocCount); - for(size_t i = 0; i < relocCount; i++) + for (size_t i = 0; i < relocCount; i++) { - DumpPointer( relocBlocks[ i ].m_start); - DumpPointer( relocBlocks[ i ].m_end ); - PackAndWriteBits( relocBlocks[i].m_offset ); + DumpPointer(relocBlocks[i].m_start); + DumpPointer(relocBlocks[i].m_end); + PackAndWriteBits(relocBlocks[i].m_offset); } } } @@ -683,13 +707,13 @@ void CLR_PRF_Profiler::TrackObjectRelocation() void CLR_PRF_Profiler::RecordGarbageCollectionBegin() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_GarbageCollect_Begin, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( g_CLR_RT_GarbageCollector.m_freeBytes ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_GarbageCollect_Begin, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); } } @@ -697,13 +721,13 @@ void CLR_PRF_Profiler::RecordGarbageCollectionBegin() void CLR_PRF_Profiler::RecordGarbageCollectionEnd() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_GarbageCollect_End, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( g_CLR_RT_GarbageCollector.m_freeBytes ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_GarbageCollect_End, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); } } @@ -711,13 +735,13 @@ void CLR_PRF_Profiler::RecordGarbageCollectionEnd() void CLR_PRF_Profiler::RecordHeapCompactionBegin() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapCompact_Begin, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( g_CLR_RT_GarbageCollector.m_freeBytes ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapCompact_Begin, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); } } @@ -725,13 +749,13 @@ void CLR_PRF_Profiler::RecordHeapCompactionBegin() void CLR_PRF_Profiler::RecordHeapCompactionEnd() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - if(CLR_EE_PRF_IS(Allocations)) + if (CLR_EE_PRF_IS(Allocations)) { CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); Timestamp(); - m_stream->WriteBits( CLR_PRF_CMDS::c_Profiling_HeapCompact_End, CLR_PRF_CMDS::Bits::CommandHeader ); - PackAndWriteBits( g_CLR_RT_GarbageCollector.m_freeBytes ); + m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_HeapCompact_End, CLR_PRF_CMDS::Bits::CommandHeader); + PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); } } @@ -743,13 +767,13 @@ void CLR_PRF_Profiler::RecordHeapCompactionEnd() void CLR_PRF_Profiler::SendTrue() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - m_stream->WriteBits( (CLR_UINT32)1, 1 ); + m_stream->WriteBits((CLR_UINT32)1, 1); } void CLR_PRF_Profiler::SendFalse() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - m_stream->WriteBits( (CLR_UINT32)0, 1 ); + m_stream->WriteBits((CLR_UINT32)0, 1); } void CLR_PRF_Profiler::PackAndWriteBits(CLR_UINT32 value) @@ -761,32 +785,53 @@ void CLR_PRF_Profiler::PackAndWriteBits(CLR_UINT32 value) */ _ASSERTE(sizeof(CLR_UINT32) == 4); - const CLR_UINT32 SHIFT_PER_NIBBLE = 2; //2^2 = 4 bits per nibble + const CLR_UINT32 SHIFT_PER_NIBBLE = 2; // 2^2 = 4 bits per nibble CLR_UINT32 nibbles = 1; - if( value & 0xF0000000) { nibbles = 8; } - else if(value & 0x0F000000) { nibbles = 7; } - else if(value & 0x00F00000) { nibbles = 6; } - else if(value & 0x000F0000) { nibbles = 5; } - else if(value & 0x0000F000) { nibbles = 4; } - else if(value & 0x00000F00) { nibbles = 3; } - else if(value & 0x000000F0) { nibbles = 2; } + if (value & 0xF0000000) + { + nibbles = 8; + } + else if (value & 0x0F000000) + { + nibbles = 7; + } + else if (value & 0x00F00000) + { + nibbles = 6; + } + else if (value & 0x000F0000) + { + nibbles = 5; + } + else if (value & 0x0000F000) + { + nibbles = 4; + } + else if (value & 0x00000F00) + { + nibbles = 3; + } + else if (value & 0x000000F0) + { + nibbles = 2; + } - m_stream->WriteBits( nibbles - 1, CLR_PRF_CMDS::Bits::NibbleCount ); - m_stream->WriteBits( value, nibbles << SHIFT_PER_NIBBLE ); + m_stream->WriteBits(nibbles - 1, CLR_PRF_CMDS::Bits::NibbleCount); + m_stream->WriteBits(value, nibbles << SHIFT_PER_NIBBLE); } -void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_TypeDef_Index& typeDef) +void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_TypeDef_Index &typeDef) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - PackAndWriteBits( typeDef.Assembly() ); - PackAndWriteBits( typeDef.Type() ); + PackAndWriteBits(typeDef.Assembly()); + PackAndWriteBits(typeDef.Type()); } -void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_MethodDef_Index& methodDef) +void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_MethodDef_Index &methodDef) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - PackAndWriteBits( methodDef.Assembly() ); - PackAndWriteBits( methodDef.Method() ); + PackAndWriteBits(methodDef.Assembly()); + PackAndWriteBits(methodDef.Method()); } //--// @@ -797,13 +842,13 @@ HRESULT CLR_PRF_Profiler::Stream_Send() NANOCLR_HEADER(); const int BUFFER_THRESHOLD_BYTES = CLR_RT_HeapBlock_MemoryStream::Buffer::c_PayloadSize * 2 / 3; - const int BUFFER_THRESHOLD_BITS = BUFFER_THRESHOLD_BYTES << 3; + const int BUFFER_THRESHOLD_BITS = BUFFER_THRESHOLD_BYTES << 3; - if(m_stream->BitsWritten() >= BUFFER_THRESHOLD_BITS) + if (m_stream->BitsWritten() >= BUFFER_THRESHOLD_BITS) { NANOCLR_CHECK_HRESULT(Stream_Flush()); - } - //else { Stream isn't above threshold; allow to cache. } + } + // else { Stream isn't above threshold; allow to cache. } NANOCLR_NOCLEANUP(); } @@ -813,39 +858,43 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() NATIVE_PROFILE_CLR_DIAGNOSTICS(); NANOCLR_HEADER(); - //These need to be paired; If this function is ever used to send multiple stream types, each should get their own packet sequence id. + // These need to be paired; If this function is ever used to send multiple stream types, each should get their own + // packet sequence id. const CLR_UINT32 messageType = CLR_DBG_Commands::c_Profiling_Stream; - CLR_UINT8 buffer[ 2*sizeof(CLR_UINT16) + CLR_RT_HeapBlock_MemoryStream::Buffer::c_PayloadSize ]; - CLR_DBG_Commands::Profiling_Stream* packet = (CLR_DBG_Commands::Profiling_Stream*)buffer; + CLR_UINT8 buffer[2 * sizeof(CLR_UINT16) + CLR_RT_HeapBlock_MemoryStream::Buffer::c_PayloadSize]; + CLR_DBG_Commands::Profiling_Stream *packet = (CLR_DBG_Commands::Profiling_Stream *)buffer; NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_MemoryStream::Buffer, ptr, m_stream->m_buffers) { int payloadLength = ptr->m_length; - if(payloadLength > 0) + if (payloadLength > 0) { _ASSERTE(sizeof(ptr->m_payload) == CLR_RT_HeapBlock_MemoryStream::Buffer::c_PayloadSize); int bitLength = payloadLength * 8; - if(ptr == m_stream->m_current) + if (ptr == m_stream->m_current) { bitLength -= m_stream->m_avail; } packet->m_bitLen = bitLength; packet->m_seqId = m_packetSeqId++; - memcpy(&packet[ 1 ], ptr->m_payload, payloadLength); + memcpy(&packet[1], ptr->m_payload, payloadLength); int packetLength = sizeof(CLR_DBG_Commands::Profiling_Stream) + payloadLength; - if(!CLR_EE_DBG_EVENT_SEND(messageType, packetLength, buffer, WP_Flags_c_NonCritical)) + if (!CLR_EE_DBG_EVENT_SEND(messageType, packetLength, buffer, WP_Flags_c_NonCritical)) { _ASSERTE(false); NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } } - //Don't go past the cursor. - if(ptr == m_stream->m_current) { break; } + // Don't go past the cursor. + if (ptr == m_stream->m_current) + { + break; + } } NANOCLR_FOREACH_NODE_END(); @@ -855,4 +904,3 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() } #endif //#if defined(NANOCLR_PROFILE_NEW) - diff --git a/src/CLR/Include/nanoCLR_Checks.h b/src/CLR/Include/nanoCLR_Checks.h index 2633835bc4..1ba83bc334 100644 --- a/src/CLR/Include/nanoCLR_Checks.h +++ b/src/CLR/Include/nanoCLR_Checks.h @@ -8,6 +8,8 @@ #include +// clang-format off + #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -19,16 +21,16 @@ struct CLR_RT_DUMP #if defined(NANOCLR_TRACE_ERRORS) #define DECL_POSTFIX #else -#define DECL_POSTFIX \ - { \ - } +#define DECL_POSTFIX {} #endif - static void TYPE(const CLR_RT_TypeDef_Index &cls) DECL_POSTFIX; - static void TYPE(const CLR_RT_ReflectionDef_Index &reflex) DECL_POSTFIX; - static void METHOD(const CLR_RT_MethodDef_Index &method) DECL_POSTFIX; - static void FIELD(const CLR_RT_FieldDef_Index &field) DECL_POSTFIX; - static void OBJECT(CLR_RT_HeapBlock *ptr, const char *text) DECL_POSTFIX; + static void TYPE (const CLR_RT_TypeDef_Index& cls ) DECL_POSTFIX; + static void TYPE (const CLR_RT_ReflectionDef_Index& reflex ) DECL_POSTFIX; + static void METHOD (const CLR_RT_MethodDef_Index& method, const CLR_RT_TypeSpec_Index *genericType) DECL_POSTFIX; + static void FIELD (const CLR_RT_FieldDef_Index& field ) DECL_POSTFIX; + static void OBJECT ( CLR_RT_HeapBlock* ptr , const char* text ) DECL_POSTFIX; + static void METHODREF (const CLR_RT_MethodRef_Index& method ) DECL_POSTFIX; + static void METHODSPEC(const CLR_RT_MethodSpec_Index& method ) DECL_POSTFIX; //--// @@ -36,16 +38,14 @@ struct CLR_RT_DUMP #if defined(NANOCLR_TRACE_EXCEPTIONS) #define DECL_POSTFIX #else -#define DECL_POSTFIX \ - { \ - } +#define DECL_POSTFIX {} #endif - static void EXCEPTION(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock &ref) DECL_POSTFIX; - static void POST_PROCESS_EXCEPTION(CLR_RT_HeapBlock &ref) DECL_POSTFIX; + static void EXCEPTION ( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock& ref ) DECL_POSTFIX; + static void POST_PROCESS_EXCEPTION( CLR_RT_HeapBlock& ref ) DECL_POSTFIX; - static const char *GETERRORMESSAGE(HRESULT hrError); + static const char* GETERRORMESSAGE( HRESULT hrError ); #if defined(VIRTUAL_DEVICE) - static const char *GETERRORDETAIL(); + static const char* GETERRORDETAIL (); #endif }; @@ -53,17 +53,14 @@ struct CLR_RT_DUMP struct CLR_Checks { - static HRESULT VerifyStackOK(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *top, int num) - { - return S_OK; - } + static HRESULT VerifyStackOK( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock* top, int num ) { return S_OK; } - static HRESULT VerifyObject(CLR_RT_HeapBlock &top); + static HRESULT VerifyObject ( CLR_RT_HeapBlock& top ); - static HRESULT VerifyArrayReference(CLR_RT_HeapBlock &ref); + static HRESULT VerifyArrayReference ( CLR_RT_HeapBlock& ref ); - static HRESULT VerifyUnknownInstruction(CLR_OPCODE op); - static HRESULT VerifyUnsupportedInstruction(CLR_OPCODE op); + static HRESULT VerifyUnknownInstruction ( CLR_OPCODE op ); + static HRESULT VerifyUnsupportedInstruction( CLR_OPCODE op ); }; #ifdef __GNUC__ @@ -72,4 +69,6 @@ struct CLR_Checks //////////////////////////////////////////////////////////////////////////////////////////////////// +// clang-format on + #endif // NANOCLR_CHECKS_H diff --git a/src/CLR/Include/nanoCLR_Debugging.h b/src/CLR/Include/nanoCLR_Debugging.h index bc1b4ec08a..2bdd8c06db 100644 --- a/src/CLR/Include/nanoCLR_Debugging.h +++ b/src/CLR/Include/nanoCLR_Debugging.h @@ -548,6 +548,11 @@ struct CLR_DBG_Commands //--// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // !!! KEEP IN SYNC WITH nanoFramework.Tools.Debugger.WireProtocol.Commands.Debugging_Value (in managed code) !!! // + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + struct Debugging_Value { CLR_RT_HeapBlock * m_referenceID; @@ -571,6 +576,11 @@ struct CLR_DBG_Commands // CLR_RT_TypeDef_Index m_td; + // + // For DATATYPE_GENERICINST + // + CLR_RT_TypeSpec_Index m_ts; + // // For DATATYPE_SZARRAY // @@ -642,7 +652,7 @@ struct CLR_DBG_Commands struct Debugging_Value_GetScratchPad { - CLR_UINT32 m_idx; + CLR_UINT32 m_index; // @@ -740,7 +750,7 @@ struct CLR_DBG_Commands struct Debugging_Resolve_Assembly { - CLR_RT_Assembly_Index m_idx; + CLR_RT_Assembly_Index m_index; struct Reply { @@ -895,12 +905,12 @@ struct CLR_DBG_Debugger HRESULT CreateListOfThreads( CLR_DBG_Commands::Debugging_Thread_List ::Reply*& cmdReply, int& totLen ); HRESULT CreateListOfCalls ( CLR_INT32 pid, CLR_DBG_Commands::Debugging_Thread_Stack::Reply*& cmdReply, int& totLen ); - CLR_RT_Assembly *IsGoodAssembly( CLR_IDX idxAssm ); + CLR_RT_Assembly *IsGoodAssembly( CLR_INDEX indexAssm ); bool CheckTypeDef ( const CLR_RT_TypeDef_Index& td , CLR_RT_TypeDef_Instance& inst ); bool CheckFieldDef ( const CLR_RT_FieldDef_Index& fd , CLR_RT_FieldDef_Instance& inst ); bool CheckMethodDef( const CLR_RT_MethodDef_Index& md , CLR_RT_MethodDef_Instance& inst ); - bool GetValue( WP_Message *msg, CLR_RT_HeapBlock *ptr, CLR_RT_HeapBlock *reference, CLR_RT_TypeDef_Instance *pTD ); + bool GetValue( WP_Message *msg, CLR_RT_HeapBlock *ptr, CLR_RT_HeapBlock *reference, CLR_RT_TypeDef_Instance *pTD); bool AllocateAndQueueMessage( CLR_UINT32 cmd, unsigned int length, unsigned char *data, CLR_RT_HeapBlock_EndPoint::Port port, CLR_RT_HeapBlock_EndPoint::Address addr, CLR_UINT32 found ); @@ -989,8 +999,8 @@ struct CLR_DBG_Debugger #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) static bool Debugging_Info_SetJMC ( WP_Message *msg ); - bool Debugging_Info_SetJMC_Type ( const CLR_RT_TypeDef_Index& idx, bool fJMC ); - bool Debugging_Info_SetJMC_Method ( const CLR_RT_MethodDef_Index& idx, bool fJMC ); + bool Debugging_Info_SetJMC_Type ( const CLR_RT_TypeDef_Index& index, bool fJMC ); + bool Debugging_Info_SetJMC_Method ( const CLR_RT_MethodDef_Index& index, bool fJMC ); #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) static bool Profiling_Command ( WP_Message *msg ); diff --git a/src/CLR/Include/nanoCLR_Interop.h b/src/CLR/Include/nanoCLR_Interop.h index bb4f5ff4e3..88ae915845 100644 --- a/src/CLR/Include/nanoCLR_Interop.h +++ b/src/CLR/Include/nanoCLR_Interop.h @@ -668,7 +668,7 @@ void SaveNativeEventToHALQueue(CLR_RT_HeapBlock_NativeEventDispatcher *pContext, // Cleans up the data in the queue after interrupts were closed and no managed callbacks are expected. void CleanupNativeEventsFromHALQueue(CLR_RT_HeapBlock_NativeEventDispatcher *pContext); -void CLR_RetrieveCurrentMethod(unsigned int &assmIdx, unsigned int &methodIdx); +void CLR_RetrieveCurrentMethod(unsigned int &assmIndex, unsigned int &methodIndex); void CLR_SoftReboot(); diff --git a/src/CLR/Include/nanoCLR_Profiling.h b/src/CLR/Include/nanoCLR_Profiling.h index dd248a2d92..3dbe8346f8 100644 --- a/src/CLR/Include/nanoCLR_Profiling.h +++ b/src/CLR/Include/nanoCLR_Profiling.h @@ -6,6 +6,8 @@ #ifndef NANOCLR_PROFILING_H #define NANOCLR_PROFILING_H +// clang-format off + #if defined(NANOCLR_PROFILE_NEW) /* @@ -19,9 +21,9 @@ int = 32BIT long = 64BIT pointer = 32BIT datatype = 8BIT -typedef-idx = 32BIT -method-idx = 32BIT - nanoCLR Method_Idx value for identifying a specific function +typedef-index = 32BIT +method-index = 32BIT + nanoCLR Method_Index value for identifying a specific function stream-packet = sequence-id length stream-payload A chunk of data sent out over the WireProtocol. @@ -53,9 +55,9 @@ memory-layout-heap-length = int Contains heap layout information useful for showing memory usage statistics. heapdump = heapdump-start-packet *heapdump-root-packet *heapdump-object-packet heapdump-stop-packet - Heapdumps always occur in this form. All roots are listed before all objects, and both roots and objects fall between - a pair of 'start' and 'stop' packets. Heap dumps may be split up across stream-payload boundaries, but they may not be - nested, and packets may not be sent in any other order. + Heapdumps always occur in this form. All roots are listed before all objects, and both roots and objects fall +between a pair of 'start' and 'stop' packets. Heap dumps may be split up across stream-payload boundaries, but they may +not be nested, and packets may not be sent in any other order. heapdump-start-header = "00000011" heapdump-start-packet = heapdump-start-header @@ -65,7 +67,7 @@ heapdump-start-packet = heapdump-start-header heapdump-root-packet = heapdump-root-header ( heapdump-root-stack / heapdump-root-other ) heapdump-root-header = "00000011" -heapdump-root-stack = heapdump-root-stack-header method-idx +heapdump-root-stack = heapdump-root-stack-header method-index heapdump-root-stack-header = "101" heapdump-root-other = heapdump-root-finalizer / heapdump-root-appdomain / heapdump-root-assembly / heapdump-root-thread @@ -84,17 +86,18 @@ heapdump-object-type = heapdump-object-classvaluetype / heapdump-object-array / heapdump-object-classvaluetype = heapdump-object-classvaluetype-header heapdump-object-classvaluetype-typedef heapdump-object-classvaluetype-header = "00010001" / "00010010" -heapdump-object-classvaluetype-typedef = typedef-idx +heapdump-object-classvaluetype-typedef = typedef-index heapdump-object-array = heapdump-object-array-header heapdump-object-array-datatype heapdump-object-array-levels heapdump-object-array-header = "00010011" -heapdump-object-array-typedef = typedef-idx +heapdump-object-array-typedef = typedef-index heapdump-object-array-levels = short Rank of the array heapdump-object-special-cases = heapdump-object-classvaluetype-header / heapdump-object-array-header heapdump-object-other = datatype - datatype must not be one of ; If it is, the appropriate special case should be used instead. + datatype must not be one of ; If it is, the appropriate special case should be used +instead. heapdump-object-references = *heapdump-object-reference heapdump-object-end-of-references heapdump-object-reference = "1" pointer @@ -106,7 +109,8 @@ heapdump-stop-packet = heapdump-stop-header heapdump-stop-blocks-used heapdump-stop-header = "00000110" heapdump-stop-blocks-used = int - Reports how many heap-blocks were used by objects, including objects that might have been filtered out from reporting. + Reports how many heap-blocks were used by objects, including objects that might have been filtered out from +reporting. */ @@ -161,59 +165,61 @@ struct CLR_PRF_Profiler { // This is not implemented: // Write formatter functions to send only as many bits as needed for uint32,uint64 numbers, cast bytes, etc. - static HRESULT CreateInstance(); - static HRESULT DeleteInstance(); + static HRESULT CreateInstance(); + static HRESULT DeleteInstance(); - HRESULT Stream_Send(); - HRESULT Stream_Flush(); + HRESULT Stream_Send(); + HRESULT Stream_Flush(); - HRESULT Profiler_Cleanup(); - HRESULT DumpHeap(); + HRESULT Profiler_Cleanup(); + HRESULT DumpHeap(); #if defined(NANOCLR_PROFILE_NEW_CALLS) - HRESULT RecordContextSwitch( CLR_RT_Thread* nextThread ); - HRESULT RecordFunctionCall( CLR_RT_Thread* th, CLR_RT_MethodDef_Index md ); - HRESULT RecordFunctionReturn( CLR_RT_Thread* th, CLR_PROF_CounterCallChain& prof ); + HRESULT RecordContextSwitch(CLR_RT_Thread *nextThread); + HRESULT RecordFunctionCall(CLR_RT_Thread *th, CLR_RT_MethodDef_Index md); + HRESULT RecordFunctionReturn(CLR_RT_Thread *th, CLR_PROF_CounterCallChain &prof); #endif #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) - void TrackObjectCreation( CLR_RT_HeapBlock* ptr ); - void TrackObjectDeletion( CLR_RT_HeapBlock* ptr ); - void TrackObjectRelocation(); - void RecordGarbageCollectionBegin(); - void RecordGarbageCollectionEnd(); - void RecordHeapCompactionBegin(); - void RecordHeapCompactionEnd(); + void TrackObjectCreation(CLR_RT_HeapBlock *ptr); + void TrackObjectDeletion(CLR_RT_HeapBlock *ptr); + void TrackObjectRelocation(); + void RecordGarbageCollectionBegin(); + void RecordGarbageCollectionEnd(); + void RecordHeapCompactionBegin(); + void RecordHeapCompactionEnd(); #endif - void SendMemoryLayout(); - -private: - void SendTrue(); - void SendFalse(); - void Timestamp(); - void PackAndWriteBits( CLR_UINT32 value ); - void PackAndWriteBits( const CLR_RT_TypeDef_Index& typeDef ); - void PackAndWriteBits( const CLR_RT_MethodDef_Index& methodDef ); - CLR_RT_HeapBlock* FindReferencedObject( CLR_RT_HeapBlock* ref ); - HRESULT DumpRoots(); - void DumpRoot( CLR_RT_HeapBlock* root, CLR_UINT32 type, CLR_UINT32 flags, CLR_RT_MethodDef_Index* source ); - void DumpObject( CLR_RT_HeapBlock* ptr ); - void DumpEndOfRefsList(); - void DumpPointer( void* ref ); - void DumpSingleReference( CLR_RT_HeapBlock* ptr ); - void DumpListOfReferences( CLR_RT_DblLinkedList& list ); - void DumpListOfReferences( CLR_RT_HeapBlock* firstItem, CLR_UINT16 count ); - - CLR_RT_HeapBlock_MemoryStream* m_stream; - CLR_UINT16 m_packetSeqId; - CLR_UINT32 m_lastTimestamp; - CLR_IDX m_currentAssembly; - int m_currentThreadPID; + void SendMemoryLayout(); + + private: + void SendTrue(); + void SendFalse(); + void Timestamp(); + void PackAndWriteBits(CLR_UINT32 value); + void PackAndWriteBits(const CLR_RT_TypeDef_Index &typeDef); + void PackAndWriteBits(const CLR_RT_MethodDef_Index &methodDef); + CLR_RT_HeapBlock *FindReferencedObject(CLR_RT_HeapBlock *ref); + HRESULT DumpRoots(); + void DumpRoot(CLR_RT_HeapBlock *root, CLR_UINT32 type, CLR_UINT32 flags, CLR_RT_MethodDef_Index *source); + void DumpObject(CLR_RT_HeapBlock *ptr); + void DumpEndOfRefsList(); + void DumpPointer(void *ref); + void DumpSingleReference(CLR_RT_HeapBlock *ptr); + void DumpListOfReferences(CLR_RT_DblLinkedList &list); + void DumpListOfReferences(CLR_RT_HeapBlock *firstItem, CLR_UINT16 count); + + CLR_RT_HeapBlock_MemoryStream *m_stream; + CLR_UINT16 m_packetSeqId; + CLR_UINT32 m_lastTimestamp; + CLR_INDEX m_currentAssembly; + int m_currentThreadPID; }; extern CLR_PRF_Profiler g_CLR_PRF_Profiler; +// clang-format on + #endif //defined(NANOCLR_PROFILE_NEW) #endif // NANOCLR_PROFILING_H diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 0e04bb4995..af5c020aef 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -24,7 +24,7 @@ extern const CLR_RADIAN c_CLR_radians[]; //--// -#if defined(_WIN32) +#if defined(VIRTUAL_DEVICE) #include #include @@ -56,13 +56,13 @@ typedef CLR_RT_AddressToSymbolMap::iterator CLR_RT_AddressToSymbolMapIter; #include #endif -#endif // #if defined(_WIN32) +#endif // #if defined(VIRTUAL_DEVICE) #if defined(_MSC_VER) -#pragma pack(push, __NANOCLR_RUNTIME_H__, 4) +#pragma pack(push, NANOCLR_RUNTIME_H, 4) #endif -#if defined(_WIN32) +#if defined(VIRTUAL_DEVICE) //--// #define _COM_SMRT_PTR(i) typedef _com_ptr_t<_com_IIID> i##Ptr @@ -338,6 +338,7 @@ struct CLR_RT_HeapBlock_Timer; struct CLR_RT_HeapBlock_WaitForObject; struct CLR_RT_HeapBlock_Finalizer; struct CLR_RT_HeapBlock_MemoryStream; +struct CLR_RT_HeapBlock_GenericInstance; struct CLR_RT_HeapCluster; struct CLR_RT_GarbageCollector; @@ -358,6 +359,8 @@ struct CLR_RT_TypeSpec_Instance; struct CLR_RT_TypeDef_Instance; struct CLR_RT_MethodDef_Instance; struct CLR_RT_FieldDef_Instance; +struct CLR_RT_GenericParam_Instance; +struct CLR_RT_MethodSpec_Instance; struct CLR_RT_StackFrame; struct CLR_RT_SubThread; @@ -592,8 +595,8 @@ static const int MAXTYPENAMELEN = 256; // Including terminating null byte. Enfor //////////////////////////////////////////////////////////////////////////////////////////////////// -#define NANOCLR_INDEX_IS_VALID(idx) ((idx).m_data != 0) -#define NANOCLR_INDEX_IS_INVALID(idx) ((idx).m_data == 0) +#define NANOCLR_INDEX_IS_VALID(index) ((index).m_data != 0) +#define NANOCLR_INDEX_IS_INVALID(index) ((index).m_data == 0) // // IMPORTANT: THE ASSEMBLY IDX IN ALL THE CLR_RT_*_Index STRUCTURES SHOULD ALWAYS BE ENCODED THE SAME WAY!!! @@ -613,16 +616,16 @@ struct CLR_RT_Assembly_Index m_data = 0; } - void Set(CLR_UINT32 idxAssm) + void Set(CLR_UINT32 indexAssm) { - m_data = idxAssm << 16; + m_data = indexAssm << 16; } //--// - CLR_IDX Assembly() const + CLR_INDEX Assembly() const { - return (CLR_IDX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 16); } }; @@ -637,20 +640,21 @@ struct CLR_RT_TypeSpec_Index m_data = 0; } - void Set(CLR_UINT32 idxAssm, CLR_UINT32 idxType) + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) { - m_data = idxAssm << 16 | idxType; + m_data = indexAssm << 16 | indexType; } //--// - CLR_IDX Assembly() const + CLR_INDEX Assembly() const { - return (CLR_IDX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 16); } - CLR_IDX TypeSpec() const + + CLR_INDEX TypeSpec() const { - return (CLR_IDX)(m_data); + return (CLR_INDEX)(m_data); } }; @@ -665,20 +669,50 @@ struct CLR_RT_TypeDef_Index m_data = 0; } - void Set(CLR_UINT32 idxAssm, CLR_UINT32 idxType) + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) + { + m_data = indexAssm << 16 | indexType; + } + + //--// + + CLR_INDEX Assembly() const + { + return (CLR_INDEX)(m_data >> 16); + } + + CLR_INDEX Type() const + { + return (CLR_INDEX)(m_data); + } +}; + +struct CLR_RT_MethodSpec_Index +{ + CLR_UINT32 m_data; + + //--// + + void Clear() + { + m_data = 0; + } + + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = idxAssm << 16 | idxType; + m_data = indexAssm << 16 | indexMethod; } //--// - CLR_IDX Assembly() const + CLR_INDEX Assembly() const { - return (CLR_IDX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 16); } - CLR_IDX Type() const + + CLR_INDEX Method() const { - return (CLR_IDX)(m_data); + return (m_data & 0x7FFF); } }; @@ -693,20 +727,21 @@ struct CLR_RT_FieldDef_Index m_data = 0; } - void Set(CLR_UINT32 idxAssm, CLR_UINT32 idxField) + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexField) { - m_data = idxAssm << 16 | idxField; + m_data = indexAssm << 16 | indexField; } //--// - CLR_IDX Assembly() const + CLR_INDEX Assembly() const { - return (CLR_IDX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 16); } - CLR_IDX Field() const + + CLR_INDEX Field() const { - return (CLR_IDX)(m_data); + return (CLR_INDEX)(m_data); } }; @@ -721,20 +756,79 @@ struct CLR_RT_MethodDef_Index m_data = 0; } - void Set(CLR_UINT32 idxAssm, CLR_UINT32 idxMethod) + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) + { + m_data = indexAssm << 16 | indexMethod; + } + + //--// + + CLR_INDEX Assembly() const + { + return (CLR_INDEX)(m_data >> 16); + } + + CLR_INDEX Method() const + { + return (CLR_INDEX)(m_data); + } +}; + +struct CLR_RT_MethodRef_Index +{ + CLR_UINT32 m_data; + + //--// + + void Clear() + { + m_data = 0; + } + + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) + { + m_data = indexAssm << 16 | indexMethod; + } + + //--// + + CLR_INDEX Assembly() const + { + return (CLR_INDEX)(m_data >> 16); + } + + CLR_INDEX Method() const + { + return (CLR_INDEX)(m_data); + } +}; + +struct CLR_RT_GenericParam_Index +{ + CLR_UINT32 m_data; + + //--// + + void Clear() + { + m_data = 0; + } + + void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexGenericParam) { - m_data = idxAssm << 16 | idxMethod; + m_data = indexAssm << 16 | indexGenericParam; } //--// - CLR_IDX Assembly() const + CLR_INDEX Assembly() const { - return (CLR_IDX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 16); } - CLR_IDX Method() const + + CLR_UINT8 GenericParam() const { - return (CLR_IDX)(m_data); + return (CLR_UINT8)(m_data); } }; @@ -748,6 +842,7 @@ struct CLR_RT_ReflectionDef_Index CLR_RT_TypeDef_Index m_type; CLR_RT_MethodDef_Index m_method; CLR_RT_FieldDef_Index m_field; + CLR_RT_TypeSpec_Index m_genericType; CLR_UINT32 m_raw; } m_data; @@ -768,6 +863,7 @@ struct CLR_RT_ReflectionDef_Index static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_TypeDef_Instance &inst, CLR_UINT32 *levels); static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_MethodDef_Instance &inst); static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_FieldDef_Instance &inst); + static bool Convert(CLR_RT_HeapBlock& ref, CLR_RT_TypeSpec_Instance& inst); static bool Convert(CLR_RT_HeapBlock &ref, CLR_UINT32 &hash); }; @@ -780,22 +876,24 @@ struct CLR_RT_AssemblyRef_CrossReference struct CLR_RT_TypeRef_CrossReference { - CLR_RT_TypeDef_Index m_target; + CLR_RT_TypeDef_Index Target; }; struct CLR_RT_FieldRef_CrossReference { - CLR_RT_FieldDef_Index m_target; + CLR_RT_FieldDef_Index Target; + CLR_RT_TypeSpec_Index GenericType; }; struct CLR_RT_MethodRef_CrossReference { - CLR_RT_MethodDef_Index m_target; + CLR_RT_MethodDef_Index Target; + CLR_RT_TypeSpec_Index GenericType; }; struct CLR_RT_FieldDef_CrossReference { - CLR_IDX m_offset; + CLR_INDEX m_offset; }; struct CLR_RT_TypeDef_CrossReference @@ -805,7 +903,7 @@ struct CLR_RT_TypeDef_CrossReference static const CLR_UINT32 TD_CR_IsMarshalByRefObject = 0x0004; CLR_UINT16 m_flags; - CLR_IDX m_totalFields; + CLR_INDEX m_totalFields; CLR_UINT32 m_hash; }; @@ -816,16 +914,59 @@ struct CLR_RT_MethodDef_CrossReference CLR_UINT16 m_data; - CLR_IDX GetOwner() const + CLR_INDEX GetOwner() const { - return (CLR_IDX)(m_data); + return (CLR_INDEX)(m_data); } }; +struct CLR_RT_GenericParam_CrossReference +{ + /// @brief Generic Parameter Owner -> Index to TypeDef or MethodDef + /// + CLR_UINT16 m_data; + + /// @brief Tag for owner (TypeDef or MethodDef) + /// + NanoCLRTable m_TypeOrMethodDef; + + CLR_RT_GenericParam_Index m_target; + + /// @brief DataType for the generic parameter + /// + NanoCLRDataType DataType; + + /// @brief Class of the generic parameter + /// + CLR_RT_TypeDef_Index Class; +}; + +struct CLR_RT_MethodSpec_CrossReference +{ + CLR_RT_TypeSpec_Index GenericType; + + CLR_RT_MethodDef_Index MethodDef; + CLR_RT_MethodRef_Index MethodRef; + + CLR_INDEX Signature; + + CLR_UINT16 m_data; + + //CLR_INDEX GetMethod() const + //{ + // return (CLR_INDEX)(m_data); + //} +}; + +struct CLR_RT_TypeSpec_CrossReference +{ + CLR_RT_TypeSpec_Index GenericType; +}; + struct CLR_RT_MethodDef_Patch { - CLR_IDX m_orig; - CLR_IDX m_patched; + CLR_INDEX m_orig; + CLR_INDEX m_patched; }; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -881,7 +1022,7 @@ struct CLR_RT_MethodDef_DebuggingInfo //////////////////////////////////////////////////////////////////////////////////////////////////// -#include +#include "nanoCLR_Runtime__HeapBlock.h" // TODO: Change this to an extern method that is defined in the HAL #if defined(PLATFORM_WINDOWS_EMULATOR) @@ -1020,40 +1161,67 @@ struct CLR_RT_SignatureParser static const int c_Method = 3; static const int c_Locals = 4; static const int c_Object = 5; + static const int c_GenericParamType = 6; + static const int c_MethodSpec = 7; struct Element { - bool m_fByRef; - int m_levels; - CLR_DataType m_dt; - CLR_RT_TypeDef_Index m_cls; + bool IsByRef; + int Levels; + NanoCLRDataType DataType; + CLR_RT_TypeDef_Index Class; + CLR_RT_TypeSpec_Index TypeSpec; + + /// @brief Generic Parameter position + CLR_INDEX GenericParamPosition; }; - CLR_RT_HeapBlock *m_lst; - CLR_RT_Assembly *m_assm; - CLR_PMETADATA m_sig; + CLR_RT_HeapBlock *ObjectList; + CLR_RT_Assembly *Assembly; + CLR_PMETADATA Signature; - int m_type; - CLR_UINT32 m_flags; - int m_count; + /// @brief Signature type being processed, from the constants. + int Type; + + /// @brief Flags for signature parsing. For methods this is the ECMA-335 calling convention. + CLR_UINT8 Flags; + + /// @brief Parameters count + int ParamCount; + + /// @brief Signature is from a GenericInstance + bool IsGenericInst; + + /// @brief Generic parameters count + int GenParamCount; + + /// @brief Index into MetodDef table + CLR_INDEX Method; //--// + void Initialize_TypeSpec(CLR_RT_Assembly* assm, CLR_PMETADATA ts); void Initialize_TypeSpec(CLR_RT_Assembly *assm, const CLR_RECORD_TYPESPEC *ts); + void Initialize_Interfaces(CLR_RT_Assembly *assm, const CLR_RECORD_TYPEDEF *td); - void Initialize_FieldDef(CLR_RT_Assembly *assm, const CLR_RECORD_FIELDDEF *fd); - void Initialize_MethodSignature(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md); void Initialize_MethodLocals(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md); + bool Initialize_GenericParamTypeSignature(CLR_RT_Assembly* assm, const CLR_RECORD_GENERICPARAM* gp); - void Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMETADATA ts); + void Initialize_FieldDef(CLR_RT_Assembly* assm, const CLR_RECORD_FIELDDEF* fd); void Initialize_FieldDef(CLR_RT_Assembly *assm, CLR_PMETADATA fd); - void Initialize_MethodSignature(CLR_RT_Assembly *assm, CLR_PMETADATA md); + + void Initialize_FieldSignature(CLR_RT_Assembly* assm, CLR_PMETADATA md); + + void Initialize_MethodSignature(CLR_RT_Assembly* assm, const CLR_RECORD_METHODDEF* md); + void Initialize_MethodSignature(CLR_RT_Assembly* assm, CLR_PMETADATA md); + void Initialize_MethodSignature(CLR_RT_MethodDef_Instance* mdInstance); + void Initialize_MethodSignature(CLR_RT_MethodSpec_Instance* msInstance); void Initialize_Objects(CLR_RT_HeapBlock *lst, int count, bool fTypes); int Available() const { - return m_count; + return ParamCount; } HRESULT Advance(Element &res); @@ -1078,8 +1246,8 @@ struct CLR_RT_SignatureParser { \ CLR_RT_Assembly **ppASSM = (ts).m_assemblies; \ size_t iASSM = ARRAYSIZE((ts).m_assemblies); \ - CLR_IDX idx = 1; \ - for (; iASSM--; ppASSM++, idx++) \ + CLR_INDEX index = 1; \ + for (; iASSM--; ppASSM++, index++) \ { \ if (*ppASSM == NULL) @@ -1126,6 +1294,9 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT size_t iTypeDef; size_t iFieldDef; size_t iMethodDef; + size_t iGenericParam; + size_t iMethodSpec; + size_t iTypeSpec; #if !defined(NANOCLR_APPDOMAINS) size_t iStaticFields; @@ -1133,7 +1304,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) size_t iDebuggingInfoMethods; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif }; //--// @@ -1152,7 +1323,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT // this flag should be set when the m_header was malloc'ed static const CLR_UINT32 FreeOnDestroy = 0x00000100; - CLR_UINT32 m_idx; // Relative to the type system (for static fields access). + CLR_UINT32 m_index; // Relative to the type system (for static fields access). CLR_UINT32 m_flags; const CLR_RECORD_ASSEMBLY *m_header; // ANY HEAP - DO RELOCATION - @@ -1184,6 +1355,12 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT *m_pCrossReference_FieldDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodDef_CrossReference *m_pCrossReference_MethodDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + CLR_RT_GenericParam_CrossReference * + m_pCrossReference_GenericParam; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + CLR_RT_MethodSpec_CrossReference + *m_pCrossReference_MethodSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + CLR_RT_TypeSpec_CrossReference + * m_pCrossReference_TypeSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_MethodDef_DebuggingInfo @@ -1223,6 +1400,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT HRESULT Resolve_TypeRef(); HRESULT Resolve_FieldRef(); HRESULT Resolve_MethodRef(); + HRESULT Resolve_TypeSpec(); void Resolve_TypeDef(); void Resolve_MethodDef(); void Resolve_Link(); @@ -1234,26 +1412,43 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT CLR_UINT32 ComputeAssemblyHash(); CLR_UINT32 ComputeAssemblyHash(const CLR_RECORD_ASSEMBLYREF *ar); - bool FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &idx); - bool FindTypeDef(const char *name, CLR_IDX scope, CLR_RT_TypeDef_Index &idx); - bool FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &idx); + bool FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &index); + bool FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_TypeDef_Index &index); + bool FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index); + bool FindTypeSpec(const CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &index); + bool FindGenericParamAtTypeDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index &index); + bool FindGenericParamAtMethodDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index &index); + bool FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index& index); + bool FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index& index); bool FindFieldDef( const CLR_RECORD_TYPEDEF *src, const char *name, CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_FieldDef_Index &idx); + CLR_RT_FieldDef_Index &index); + bool FindFieldDef( + const CLR_RECORD_TYPESPEC* ts, + const char* name, + CLR_RT_Assembly* base, + CLR_SIG sig, + CLR_RT_FieldDef_Index& index); bool FindMethodDef( const CLR_RECORD_TYPEDEF *src, const char *name, CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_MethodDef_Index &idx); + CLR_RT_MethodDef_Index &index); + bool FindMethodDef( + const CLR_RECORD_TYPESPEC* ts, + const char* name, + CLR_RT_Assembly* base, + CLR_SIG sig, + CLR_RT_MethodDef_Index& index); - bool FindNextStaticConstructor(CLR_RT_MethodDef_Index &idx); + bool FindNextStaticConstructor(CLR_RT_MethodDef_Index &index); - bool FindMethodBoundaries(CLR_IDX i, CLR_OFFSET &start, CLR_OFFSET &end); + bool FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_OFFSET &end); void Relocate(); @@ -1263,54 +1458,62 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT //--// - CLR_PMETADATA GetTable(CLR_TABLESENUM tbl) + CLR_PMETADATA GetTable(NanoCLRTable tbl) { return (CLR_PMETADATA)m_header + m_header->startOfTables[tbl]; } -#define NANOCLR_ASSEMBLY_RESOLVE(cls, tbl, idx) \ - (const cls *)((CLR_UINT8 *)m_header + m_header->startOfTables[tbl] + (sizeof(cls) * idx)) - const CLR_RECORD_ASSEMBLYREF *GetAssemblyRef(CLR_IDX i) +#define NANOCLR_ASSEMBLY_RESOLVE(cls, tbl, index) \ + (const cls *)((CLR_UINT8 *)m_header + m_header->startOfTables[tbl] + (sizeof(cls) * index)) + const CLR_RECORD_ASSEMBLYREF *GetAssemblyRef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_ASSEMBLYREF, TBL_AssemblyRef, i); } - const CLR_RECORD_TYPEREF *GetTypeRef(CLR_IDX i) + const CLR_RECORD_TYPEREF *GetTypeRef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPEREF, TBL_TypeRef, i); } - const CLR_RECORD_FIELDREF *GetFieldRef(CLR_IDX i) + const CLR_RECORD_FIELDREF *GetFieldRef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_FIELDREF, TBL_FieldRef, i); } - const CLR_RECORD_METHODREF *GetMethodRef(CLR_IDX i) + const CLR_RECORD_METHODREF *GetMethodRef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODREF, TBL_MethodRef, i); } - const CLR_RECORD_TYPEDEF *GetTypeDef(CLR_IDX i) + const CLR_RECORD_TYPEDEF *GetTypeDef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPEDEF, TBL_TypeDef, i); } - const CLR_RECORD_FIELDDEF *GetFieldDef(CLR_IDX i) + const CLR_RECORD_FIELDDEF *GetFieldDef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_FIELDDEF, TBL_FieldDef, i); } - const CLR_RECORD_METHODDEF *GetMethodDef(CLR_IDX i) + const CLR_RECORD_METHODDEF *GetMethodDef(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODDEF, TBL_MethodDef, i); } - const CLR_RECORD_ATTRIBUTE *GetAttribute(CLR_IDX i) + const CLR_RECORD_GENERICPARAM *GetGenericParam(CLR_INDEX i) + { + return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_GENERICPARAM, TBL_GenericParam, i); + } + const CLR_RECORD_METHODSPEC *GetMethodSpec(CLR_INDEX i) + { + return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODSPEC, TBL_MethodSpec, i); + } + const CLR_RECORD_ATTRIBUTE *GetAttribute(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_ATTRIBUTE, TBL_Attributes, i); } - const CLR_RECORD_TYPESPEC *GetTypeSpec(CLR_IDX i) + const CLR_RECORD_TYPESPEC *GetTypeSpec(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPESPEC, TBL_TypeSpec, i); } - const CLR_RECORD_RESOURCE_FILE *GetResourceFile(CLR_IDX i) + const CLR_RECORD_RESOURCE_FILE *GetResourceFile(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_RESOURCE_FILE, TBL_ResourcesFiles, i); } - const CLR_RECORD_RESOURCE *GetResource(CLR_IDX i) + const CLR_RECORD_RESOURCE *GetResource(CLR_INDEX i) { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_RESOURCE, TBL_Resources, i); } @@ -1397,8 +1600,8 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT private: #if defined(VIRTUAL_DEVICE) void Dump_Token(CLR_UINT32 tk); - void Dump_FieldOwner(CLR_UINT32 idx); - void Dump_MethodOwner(CLR_UINT32 idx); + void Dump_FieldOwner(CLR_UINT32 index); + void Dump_MethodOwner(CLR_UINT32 index); void Dump_Signature(CLR_SIG sig); void Dump_Signature(CLR_PMETADATA &p); void Dump_SignatureToken(CLR_PMETADATA &p); @@ -1413,7 +1616,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT private: CLR_UINT32 ComputeHashForName(const CLR_RT_TypeDef_Index &td, CLR_UINT32 hash); - static CLR_UINT32 ComputeHashForType(CLR_DataType dt, CLR_UINT32 hash); + static CLR_UINT32 ComputeHashForType(NanoCLRDataType dt, CLR_UINT32 hash); }; #ifdef __GNUC__ @@ -1462,7 +1665,7 @@ struct CLR_RT_AppDomain : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP bool fOnReturn, CLR_RT_AppDomain *appDomainSrc = NULL); - HRESULT VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &idx); + HRESULT VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &index); HRESULT GetAssemblies(CLR_RT_HeapBlock &ref); HRESULT LoadAssembly(CLR_RT_Assembly *assm); HRESULT GetManagedObject(CLR_RT_HeapBlock &obj); @@ -1602,31 +1805,44 @@ extern CLR_RT_WellKnownMethods g_CLR_RT_WellKnownMethods; typedef void (CLR_RT_HeapBlock::*CLR_RT_HeapBlockRelocate)(); +// clang-format off + struct CLR_RT_DataTypeLookup { - static const CLR_UINT8 c_NA = 0x00; - static const CLR_UINT8 c_VariableSize = 0xFF; - - static const CLR_UINT32 c_Primitive = 0x00000001; - static const CLR_UINT32 c_Interface = 0x00000002; - static const CLR_UINT32 c_Class = 0x00000004; - static const CLR_UINT32 c_ValueType = 0x00000008; - static const CLR_UINT32 c_Enum = 0x00000010; - static const CLR_UINT32 c_SemanticMask = 0x0000001F; - - static const CLR_UINT32 c_Array = 0x00000020; - static const CLR_UINT32 c_ArrayList = 0x00000040; - static const CLR_UINT32 c_SemanticMask2 = 0x0000007F; - - static const CLR_UINT32 c_Reference = 0x00010000; - static const CLR_UINT32 c_Numeric = 0x00020000; - static const CLR_UINT32 c_Integer = 0x00040000; - static const CLR_UINT32 c_Signed = 0x00080000; - static const CLR_UINT32 c_Direct = 0x00100000; // This isn't an indirect reference. - static const CLR_UINT32 c_OptimizedValueType = 0x00200000; // A value type that is kept in a single HeapBlock. - static const CLR_UINT32 c_ManagedType = 0x00400000; // this dt represents a managed type, or a pointer to a managed - // type More specificly, TypeDescriptor::InitializeFromObject - // will succeed when starting from an object of with this dt + static const CLR_UINT8 c_NA = 0x00; + static const CLR_UINT8 c_VariableSize = 0xFF; + + static const CLR_UINT32 c_Primitive = 0x00000001; + static const CLR_UINT32 c_Interface = 0x00000002; + static const CLR_UINT32 c_Class = 0x00000004; + static const CLR_UINT32 c_ValueType = 0x00000008; + static const CLR_UINT32 c_Enum = 0x00000010; + static const CLR_UINT32 c_SemanticMask = 0x0000001F; + + static const CLR_UINT32 c_Array = 0x00000020; + static const CLR_UINT32 c_ArrayList = 0x00000040; + static const CLR_UINT32 c_SemanticMask2 = 0x0000007F; + + static const CLR_UINT32 c_Var = 0x00000100; + static const CLR_UINT32 c_GenericInstance = 0x00000200; + static const CLR_UINT32 c_MVar = 0x00000400; + + static const CLR_UINT32 c_Reference = 0x00010000; + static const CLR_UINT32 c_Numeric = 0x00020000; + static const CLR_UINT32 c_Integer = 0x00040000; + static const CLR_UINT32 c_Signed = 0x00080000; + + // This isn't an indirect reference. + static const CLR_UINT32 c_Direct = 0x00100000; + + // A value type that is kept in a single HeapBlock. + static const CLR_UINT32 c_OptimizedValueType = 0x00200000; + + + // This DataType represents a managed type, or a pointer to a managed + // type More specifically, TypeDescriptor::InitializeFromObject + // will succeed when starting from an object of with this DataType + static const CLR_UINT32 c_ManagedType = 0x00400000; CLR_UINT32 m_flags; CLR_UINT8 m_sizeInBits; @@ -1642,6 +1858,8 @@ struct CLR_RT_DataTypeLookup #endif }; +// clang-format on + extern const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[]; //--// @@ -1690,7 +1908,7 @@ struct CLR_RT_OpcodeLookup #if defined(NANOCLR_OPCODE_PARSER) CLR_LOGICAL_OPCODE m_logicalOpcode; - CLR_DataType m_dt; + NanoCLRDataType m_dt; CLR_INT8 m_index; CLR_UINT16 m_flags; #endif @@ -1804,10 +2022,10 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - bool FindTypeDef(const char *name, CLR_RT_TypeDef_Index &res); bool FindTypeDef(const char *name, CLR_RT_Assembly *assm, CLR_RT_ReflectionDef_Index &reflex); - HRESULT LocateResourceFile(CLR_RT_Assembly_Instance assm, const char *name, CLR_INT32 &idxResourceFile); + HRESULT LocateResourceFile(CLR_RT_Assembly_Instance assm, const char *name, CLR_INT32 &indexResourceFile); HRESULT LocateResource( CLR_RT_Assembly_Instance assm, - CLR_INT32 idxResourceFile, + CLR_INT32 indexResourceFile, CLR_INT16 id, const CLR_RECORD_RESOURCE *&res, CLR_UINT32 &size); @@ -1819,19 +2037,22 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - CLR_UINT32 flags, CLR_UINT32 levels); HRESULT BuildTypeName(const CLR_RT_TypeDef_Index &cls, char *&szBuffer, size_t &size); - HRESULT BuildMethodName(const CLR_RT_MethodDef_Index &md, char *&szBuffer, size_t &size); + HRESULT BuildMethodName(const CLR_RT_MethodDef_Index &md, const CLR_RT_TypeSpec_Index* genericType, char *&szBuffer, size_t &size); HRESULT BuildFieldName(const CLR_RT_FieldDef_Index &fd, char *&szBuffer, size_t &size); + HRESULT BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char*& szBuffer, size_t& iBuffer); + HRESULT BuildMethodSpecName(const CLR_RT_MethodSpec_Index& ms, char*& szBuffer, size_t& iBuffer); + HRESULT QueueStringToBuffer(char *&szBuffer, size_t &size, const char *szText); bool FindVirtualMethodDef( const CLR_RT_TypeDef_Index &cls, const CLR_RT_MethodDef_Index &calleeMD, - CLR_RT_MethodDef_Index &idx); + CLR_RT_MethodDef_Index &index); bool FindVirtualMethodDef( const CLR_RT_TypeDef_Index &cls, const CLR_RT_MethodDef_Index &calleeMD, const char *calleeName, - CLR_RT_MethodDef_Index &idx); + CLR_RT_MethodDef_Index &index); static bool MatchSignature(CLR_RT_SignatureParser &parserLeft, CLR_RT_SignatureParser &parserRight); static bool MatchSignatureDirect( @@ -1841,10 +2062,12 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - static bool MatchSignatureElement( CLR_RT_SignatureParser::Element &resLeft, CLR_RT_SignatureParser::Element &resRight, + CLR_RT_SignatureParser& parserLeft, + CLR_RT_SignatureParser& parserRight, bool fIsInstanceOfOK); - static CLR_DataType MapElementTypeToDataType(CLR_UINT32 et); - static CLR_UINT32 MapDataTypeToElementType(CLR_DataType dt); + static NanoCLRDataType MapElementTypeToDataType(CLR_UINT32 et); + static CLR_UINT32 MapDataTypeToElementType(NanoCLRDataType dt); #if defined(VIRTUAL_DEVICE) void Dump(const wchar_t *szFileName, bool fNoByteCode); @@ -1865,18 +2088,20 @@ struct CLR_RT_Assembly_Instance : public CLR_RT_Assembly_Index //--// - bool InitializeFromIndex(const CLR_RT_Assembly_Index &idx); + bool InitializeFromIndex(const CLR_RT_Assembly_Index &index); void Clear(); }; struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index { CLR_RT_Assembly *m_assm; - CLR_PMETADATA m_target; + const CLR_RECORD_TYPESPEC* m_target; + + CLR_INDEX TypeDefIndex; //--// - bool InitializeFromIndex(const CLR_RT_TypeSpec_Index &idx); + bool InitializeFromIndex(const CLR_RT_TypeSpec_Index &index); void Clear(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); @@ -1892,13 +2117,14 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index //--// bool InitializeFromReflection(const CLR_RT_ReflectionDef_Index &reflex, CLR_UINT32 *levels); - bool InitializeFromIndex(const CLR_RT_TypeDef_Index &idx); + bool InitializeFromIndex(const CLR_RT_TypeDef_Index &index); bool InitializeFromMethod(const CLR_RT_MethodDef_Instance &md); bool InitializeFromField(const CLR_RT_FieldDef_Instance &fd); + bool InitializeFromMethod(const CLR_RT_MethodSpec_Instance& ms); void Clear(); - bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_HeapBlock *sampleData = NULL); + bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance* caller = NULL); //--// @@ -1920,9 +2146,11 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index CLR_RT_Assembly *m_assm; const CLR_RECORD_FIELDDEF *m_target; + const CLR_RT_TypeSpec_Index* genericType; + //--// - bool InitializeFromIndex(const CLR_RT_FieldDef_Index &idx); + bool InitializeFromIndex(const CLR_RT_FieldDef_Index &index); void Clear(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); @@ -1942,9 +2170,11 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index CLR_RT_Assembly *m_assm; const CLR_RECORD_METHODDEF *m_target; + const CLR_RT_TypeSpec_Index *genericType; + //--// - bool InitializeFromIndex(const CLR_RT_MethodDef_Index &idx); + bool InitializeFromIndex(const CLR_RT_MethodDef_Index &index); void Clear(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); @@ -1968,6 +2198,51 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) }; +struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index +{ + CLR_RT_Assembly *m_assm; + const CLR_RECORD_GENERICPARAM *m_target; + + //--// + + bool InitializeFromIndex(const CLR_RT_GenericParam_Index& index); + + void Clear(); + + CLR_INDEX OwnerType(); + + //--// + + CLR_RT_GenericParam_CrossReference &CrossReference() const + { + return m_assm->m_pCrossReference_GenericParam[GenericParam()]; + } +}; + +struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index +{ + CLR_RT_Assembly* m_assm; + const CLR_RECORD_METHODSPEC* m_target; + + //--// + + bool InitializeFromIndex(const CLR_RT_MethodSpec_Index& index); + + void Clear(); + + CLR_RT_MethodSpec_CrossReference& CrossReference() const + { + return m_assm->m_pCrossReference_MethodSpec[Method()]; + } + + CLR_INDEX Container(); + + CLR_INDEX Instantiation(); + + CLR_EncodedMethodDefOrRef InstanceOfMethod; +}; + + //////////////////////////////////////////////////////////////////////////////////////////////////// struct CLR_RT_AttributeEnumerator @@ -2016,7 +2291,7 @@ struct CLR_RT_AttributeParser CLR_PMETADATA m_blob; CLR_RT_MethodDef_Instance m_md; - CLR_RT_MethodDef_Index m_mdIdx; + CLR_RT_MethodDef_Index m_mdIndex; CLR_RT_TypeDef_Instance m_td; CLR_RT_SignatureParser m_parser; CLR_RT_SignatureParser::Element m_res; @@ -2035,7 +2310,7 @@ struct CLR_RT_AttributeParser HRESULT ReadNumericValue( CLR_RT_HeapBlock *&value, - const CLR_DataType dt, + const NanoCLRDataType dt, const CLR_RT_TypeDef_Index *m_cls, const CLR_UINT32 size); HRESULT ReadString(CLR_RT_HeapBlock *&value); @@ -2050,22 +2325,31 @@ struct CLR_RT_TypeDescriptor { CLR_UINT32 m_flags; CLR_RT_TypeDef_Instance m_handlerCls; + CLR_RT_TypeSpec_Instance m_handlerGenericType; CLR_RT_ReflectionDef_Index m_reflex; - CLR_DataType GetDataType() const + NanoCLRDataType GetDataType() const { - return (CLR_DataType)m_handlerCls.m_target->dataType; + if (m_handlerCls.m_data != 0) + { + return (NanoCLRDataType)m_handlerCls.m_target->DataType; + } + else + { + return DATATYPE_GENERICINST; + } } //--// void TypeDescriptor_Initialize(); - HRESULT InitializeFromDataType(CLR_DataType dt); + HRESULT InitializeFromDataType(NanoCLRDataType dt); HRESULT InitializeFromReflection(const CLR_RT_ReflectionDef_Index &reflex); HRESULT InitializeFromTypeSpec(const CLR_RT_TypeSpec_Index &sig); HRESULT InitializeFromType(const CLR_RT_TypeDef_Index &cls); + HRESULT InitializeFromGenericType(const CLR_RT_TypeSpec_Index& genericType); HRESULT InitializeFromFieldDefinition(const CLR_RT_FieldDef_Instance &fd); HRESULT InitializeFromSignatureParser(CLR_RT_SignatureParser &parser); HRESULT InitializeFromObject(const CLR_RT_HeapBlock &ref); @@ -2076,10 +2360,10 @@ struct CLR_RT_TypeDescriptor bool GetElementType(CLR_RT_TypeDescriptor &sub); static HRESULT ExtractTypeIndexFromObject(const CLR_RT_HeapBlock &ref, CLR_RT_TypeDef_Index &res); - static HRESULT ExtractObjectAndDataType(CLR_RT_HeapBlock *&ref, CLR_DataType &dt); + static HRESULT ExtractObjectAndDataType(CLR_RT_HeapBlock *&ref, NanoCLRDataType &dt); }; -#include +#include "nanoCLR_Runtime__Serialization.h" //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2292,7 +2576,7 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC HRESULT HandleSynchronized(bool fAcquire, bool fGlobal); - void SetResult(CLR_INT32 val, CLR_DataType dataType); + void SetResult(CLR_INT32 val, NanoCLRDataType dataType); void SetResult_I1(CLR_UINT8 val); void SetResult_I2(CLR_INT16 val); void SetResult_I4(CLR_INT32 val); @@ -2424,11 +2708,6 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC SetResult_I4(val); } - inline void PushValueU4(CLR_UINT32 val) - { - SetResult_U4(val); - } - //--// CLR_RT_StackFrame *Caller() @@ -2453,47 +2732,20 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC // The use of offsetof below throwns an "invalid offset warning" because CLR_RT_StackFrame is not POD type // C+17 is the first standard that allow this, so until we are using it we have to disable it to keep GCC happy -#ifdef _MSC_VER - -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_owningThread) + sizeof(CLR_RT_Thread *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_IP)) - -#else - #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" #endif -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_owningThread) + sizeof(CLR_RT_Thread *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals)) -CT_ASSERT( - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals) + sizeof(CLR_RT_HeapBlock *) == - offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_IP)) +CT_ASSERT(offsetof(CLR_RT_StackFrame, m_owningThread) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_evalStack)) +CT_ASSERT(offsetof(CLR_RT_StackFrame, m_evalStack) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_arguments)) +CT_ASSERT(offsetof(CLR_RT_StackFrame, m_arguments) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_locals)) +CT_ASSERT(offsetof(CLR_RT_StackFrame, m_locals) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_IP)) #ifdef __GNUC__ #pragma GCC diagnostic pop #endif -#endif // _MSC_VER - //////////////////////////////////////////////////////////////////////////////// struct CLR_RT_ProtectFromGC @@ -2608,6 +2860,8 @@ struct CLR_RT_GarbageCollector static const int c_minimumSpaceForGC = 128; static const int c_minimumSpaceForCompact = 128; static const CLR_UINT32 c_pressureThreshold = 10; + static const CLR_UINT32 c_memoryThreshold = HEAP_SIZE_THRESHOLD; + static const CLR_UINT32 c_memoryThreshold2 = HEAP_SIZE_THRESHOLD_UPPER; static const CLR_UINT32 c_StartGraphEvent = 0x00000001; static const CLR_UINT32 c_StopGraphEvent = 0x00000002; @@ -3303,7 +3557,7 @@ struct CLR_RT_EventCache return m_entriesMRU[LinkMRUArraySize() - 1].m_prev; } - static void MoveEntryToTop(Link *entries, CLR_UINT32 slot, CLR_UINT32 idx); + static void MoveEntryToTop(Link *entries, CLR_UINT32 slot, CLR_UINT32 index); }; #endif @@ -3450,8 +3704,7 @@ struct CLR_RT_ExecutionEngine static const int c_fDebugger_StateResolutionFailed = 0x00000001; static const int c_fDebugger_StateProgramRunning = 0x00000400; static const int c_fDebugger_StateProgramExited = 0x00000800; - static const int c_fDebugger_StateMask = - c_fDebugger_StateProgramRunning + c_fDebugger_StateProgramExited + c_fDebugger_StateResolutionFailed; + static const int c_fDebugger_StateMask = c_fDebugger_StateProgramRunning + c_fDebugger_StateProgramExited; // static const int c_fDebugger_BreakpointsDisabled = 0x00001000; // @@ -3580,8 +3833,8 @@ struct CLR_RT_ExecutionEngine struct ExecutionConstraintCompensation { CLR_INT32 m_recursion; - CLR_INT64 m_start; - CLR_INT64 m_cumulative; + CLR_INT32 m_start; + CLR_INT32 m_cumulative; void Suspend() { @@ -3714,6 +3967,10 @@ struct CLR_RT_ExecutionEngine CLR_UINT32 flags, const CLR_RT_TypeDef_Index &cls, CLR_UINT32 length); + CLR_RT_HeapBlock* ExtractHeapBlocksForGenericInstance( + CLR_UINT32 flags, + const CLR_RT_TypeSpec_Index& genericType, + CLR_UINT32 length); CLR_RT_HeapBlock *ExtractHeapBytesForObjects(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length); CLR_RT_HeapBlock *ExtractHeapBlocksForObjects(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length); CLR_RT_HeapBlock_Node *ExtractHeapBlocksForEvents(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length); @@ -3730,12 +3987,15 @@ struct CLR_RT_ExecutionEngine HRESULT InitializeReference(CLR_RT_HeapBlock &ref, CLR_RT_SignatureParser &parser); HRESULT InitializeReference(CLR_RT_HeapBlock &ref, const CLR_RECORD_FIELDDEF *target, CLR_RT_Assembly *assm); - HRESULT InitializeLocals(CLR_RT_HeapBlock *locals, CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md); + HRESULT InitializeLocals(CLR_RT_HeapBlock *locals, const CLR_RT_MethodDef_Instance &methodDefInstance); HRESULT NewObjectFromIndex(CLR_RT_HeapBlock &reference, const CLR_RT_TypeDef_Index &cls); HRESULT NewObject(CLR_RT_HeapBlock &reference, const CLR_RT_TypeDef_Instance &inst); HRESULT NewObject(CLR_RT_HeapBlock &reference, CLR_UINT32 token, CLR_RT_Assembly *assm); + HRESULT NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, const CLR_RT_TypeSpec_Index& genericType); + HRESULT NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, CLR_RT_TypeSpec_Instance& genericInstance); + HRESULT CloneObject(CLR_RT_HeapBlock &reference, const CLR_RT_HeapBlock &source); HRESULT CopyValueType(CLR_RT_HeapBlock *destination, const CLR_RT_HeapBlock *source); @@ -3815,9 +4075,9 @@ struct CLR_RT_ExecutionEngine bool SpawnStaticConstructorHelper( CLR_RT_AppDomain *appDomain, CLR_RT_AppDomainAssembly *appDomainAssembly, - const CLR_RT_MethodDef_Index &idx); + const CLR_RT_MethodDef_Index &index); #else - bool SpawnStaticConstructorHelper(CLR_RT_Assembly *assembly, const CLR_RT_MethodDef_Index &idx); + bool SpawnStaticConstructorHelper(CLR_RT_Assembly *assembly, const CLR_RT_MethodDef_Index &index); #endif static void FinalizerTerminationCallback(void *arg); static void StaticConstructorTerminationCallback(void *arg); @@ -3873,7 +4133,7 @@ struct CLR_RT_ExecutionEngine // It is used to Thread.Sleep(0) imlementation. The thread is still ready, but is last to execute. void UpdateToLowestExecutionCounter(CLR_RT_Thread *pThread) const; - void RetrieveCurrentMethod(CLR_UINT32 &assmIdx, CLR_UINT32 &methodIdx); + void RetrieveCurrentMethod(CLR_UINT32 &assmIndex, CLR_UINT32 &methodIndex); }; extern CLR_RT_ExecutionEngine g_CLR_RT_ExecutionEngine; @@ -3884,17 +4144,11 @@ extern CLR_UINT32 g_buildCRC; // // CT_ASSERT macro generates a compiler error in case the size of any structure changes. // - -#ifdef _WIN64 -CT_ASSERT(sizeof(CLR_RT_HeapBlock) == 20) -#else CT_ASSERT(sizeof(CLR_RT_HeapBlock) == 12) -#endif // _WIN64 - CT_ASSERT(sizeof(CLR_RT_HeapBlock_Raw) == sizeof(CLR_RT_HeapBlock)) #if defined(NANOCLR_TRACE_MEMORY_STATS) -#define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE sizeof(const char *) +#define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE 4 #else #define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE 0 #endif @@ -3903,12 +4157,7 @@ CT_ASSERT(sizeof(CLR_RT_HeapBlock_Raw) == sizeof(CLR_RT_HeapBlock)) CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 20 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) #elif defined(PLATFORM_WINDOWS_EMULATOR) || defined(NANOCLR_TRACE_MEMORY_STATS) - -#ifdef _WIN64 -CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 24 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) -#else -CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) -#endif // _WIN64 +CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + 4) #else @@ -3922,7 +4171,4 @@ CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + NANOCLR_TRACE_MEMORY_STATS_EXTRA #pragma pack(pop, __NANOCLR_RUNTIME_H__) #endif -extern const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[]; -extern const uint16_t g_CLR_InteropAssembliesCount; - #endif // NANOCLR_RUNTIME_H diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 008acd5393..eb86a7a547 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -47,7 +47,7 @@ #define CLR_RT_HEAPBLOCK_RELOCATE(ptr) \ { \ - CLR_DataType dt = ptr->DataType(); \ + NanoCLRDataType dt = ptr->DataType(); \ \ if (dt > DATATYPE_LAST_NONPOINTER && dt < DATATYPE_FIRST_INVALID) \ { \ @@ -64,17 +64,10 @@ // // This is used in memory move operations. // -#ifdef _WIN64 -struct CLR_RT_HeapBlock_Raw -{ - CLR_UINT32 data[5]; -}; -#else struct CLR_RT_HeapBlock_Raw { CLR_UINT32 data[3]; }; -#endif // _WIN64 #ifdef __GNUC__ #pragma GCC diagnostic push @@ -142,7 +135,7 @@ struct CLR_RT_HeapBlock union CLR_RT_HeapBlock_Id { struct Type { - CLR_UINT8 dataType; // CLR_DataType + CLR_UINT8 dataType; // NanoCLRDataType CLR_UINT8 flags; // HB_* CLR_UINT16 size; } type; @@ -150,6 +143,7 @@ struct CLR_RT_HeapBlock CLR_UINT32 raw; } m_id; + union CLR_RT_HeapBlock_AtomicData { struct NodeLink { @@ -750,6 +744,16 @@ struct CLR_RT_HeapBlock CLR_RT_RelocationHandler m_relocate; } binaryBlob; + //--// + + struct GenericInstance + { + CLR_RT_TypeSpec_Index genericType; + CLR_RT_HeapBlock_GenericInstance *ptr; + } genericInstance; + + //--// + } m_data; public: @@ -759,9 +763,9 @@ struct CLR_RT_HeapBlock //--// - CLR_DataType DataType() const + NanoCLRDataType DataType() const { - return (CLR_DataType)m_id.type.dataType; + return (NanoCLRDataType)m_id.type.dataType; } CLR_UINT8 DataFlags() const @@ -1026,7 +1030,7 @@ struct CLR_RT_HeapBlock m_data.objectReference.ptr = obj; } - bool IsAReferenceOfThisType(CLR_DataType dataType) const + bool IsAReferenceOfThisType(NanoCLRDataType dataType) const { if (DataType() == DATATYPE_OBJECT) { @@ -1151,6 +1155,21 @@ struct CLR_RT_HeapBlock //--// + void SetGenericType(const CLR_RT_TypeSpec_Index& genericType) + { + m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_GENERICINST, 0, 1); + m_data.genericInstance.genericType.m_data = genericType.m_data; + } + + const CLR_RT_TypeSpec_Index& ObjectGenericType() const + { + return m_data.genericInstance.genericType; + } + + HRESULT SetGenericInstanceObject(const CLR_RT_TypeSpec_Index& genericType); + + //--// + CLR_RT_HeapBlock_Array *Array() const { return m_data.arrayReference.array; @@ -1274,7 +1293,7 @@ struct CLR_RT_HeapBlock // Since it is rare case, the code is not inlined to save code size. void AssignAndPinReferencedObject(const CLR_RT_HeapBlock &value); - HRESULT Convert(CLR_DataType et, bool fOverflow, bool fUnsigned) + HRESULT Convert(NanoCLRDataType et, bool fOverflow, bool fUnsigned) { // // For V1, we don't throw on overflow. @@ -1327,7 +1346,7 @@ struct CLR_RT_HeapBlock static CLR_INT32 Compare_Values(const CLR_RT_HeapBlock &left, const CLR_RT_HeapBlock &right, bool fSigned); - HRESULT Convert_Internal(CLR_DataType et); + HRESULT Convert_Internal(NanoCLRDataType et); HRESULT NumericAdd(const CLR_RT_HeapBlock &right); HRESULT NumericSub(const CLR_RT_HeapBlock &right); HRESULT NumericMul(const CLR_RT_HeapBlock &right); @@ -2346,6 +2365,15 @@ struct CLR_RT_HeapBlock_WeakReference : public CLR_RT_HeapBlock_Node // OBJECT H //--// +struct CLR_RT_HeapBlock_GenericInstance : public CLR_RT_HeapBlock_Node // OBJECT HEAP - DO RELOCATION - +{ + static HRESULT CreateInstance(CLR_RT_HeapBlock& reference, const CLR_RT_TypeSpec_Index& tsIndex); + + void Relocate(); +}; + +//--// + #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" diff --git a/src/CLR/Include/nanoCLR_Runtime__Serialization.h b/src/CLR/Include/nanoCLR_Runtime__Serialization.h index 32446403f6..9dd4304ef2 100644 --- a/src/CLR/Include/nanoCLR_Runtime__Serialization.h +++ b/src/CLR/Include/nanoCLR_Runtime__Serialization.h @@ -155,7 +155,7 @@ struct CLR_RT_BinaryFormatter : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO bool CompareTypes( CLR_RT_TypeDescriptor* left, CLR_RT_TypeDescriptor* right ); - static CLR_DataType GetDataType ( CLR_RT_TypeDescriptor* type ); + static NanoCLRDataType GetDataType ( CLR_RT_TypeDescriptor* type ); static CLR_UINT32 GetSizeOfType( CLR_RT_TypeDescriptor* type ); static bool GetSignOfType( CLR_RT_TypeDescriptor* type ); @@ -220,13 +220,13 @@ struct CLR_RT_BinaryFormatter : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO struct DuplicateTracker : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCATION - { CLR_RT_HeapBlock* m_ptr; - CLR_UINT32 m_idx; + CLR_UINT32 m_index; }; //--// CLR_RT_HeapBlock_MemoryStream* m_stream; - CLR_UINT32 m_idx; + CLR_UINT32 m_index; CLR_UINT32 m_lastTypeRead; CLR_RT_DblLinkedList m_duplicates; // EVENT HEAP - NO RELOCATION - list of CLR_RT_BinaryFormatter::DuplicateTracker CLR_RT_DblLinkedList m_states; // EVENT HEAP - NO RELOCATION - list of CLR_RT_BinaryFormatter::State @@ -247,12 +247,12 @@ struct CLR_RT_BinaryFormatter : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO HRESULT Advance (); static HRESULT Serialize ( CLR_RT_HeapBlock& refData, CLR_RT_HeapBlock& object ); - static HRESULT Deserialize( CLR_RT_HeapBlock& refData, CLR_RT_HeapBlock& object , CLR_UINT32* unknownType , CLR_UINT32 flags ); + static HRESULT Deserialize( CLR_RT_HeapBlock& refData, CLR_RT_HeapBlock& object , CLR_UINT32* unknownType, CLR_UINT32 flags ); static HRESULT Deserialize( CLR_RT_HeapBlock& refData, CLR_UINT8* data, CLR_UINT32 size, CLR_RT_HeapBlock* cls, CLR_UINT32* unknownType, CLR_UINT32 flags ); HRESULT TrackDuplicate ( CLR_RT_HeapBlock* object ); CLR_UINT32 SearchDuplicate( CLR_RT_HeapBlock* object ); - CLR_RT_HeapBlock* GetDuplicate ( CLR_UINT32 idx ); + CLR_RT_HeapBlock* GetDuplicate ( CLR_UINT32 index ); //--// diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index a833605d67..9218f75d93 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -106,10 +106,15 @@ typedef signed __int64 CLR_INT64; typedef CLR_UINT16 CLR_OFFSET; typedef CLR_UINT32 CLR_OFFSET_LONG; -typedef CLR_UINT16 CLR_IDX; +typedef CLR_UINT16 CLR_INDEX; typedef CLR_UINT16 CLR_STRING; typedef CLR_UINT16 CLR_SIG; typedef const CLR_UINT8 *CLR_PMETADATA; +typedef CLR_UINT16 CLR_TYPEORMETHODDEF; +typedef CLR_UINT16 CLR_ENCODEDNANOTYPE; +typedef CLR_UINT16 CLR_EncodedMethodDefOrRef; +typedef CLR_UINT16 CLR_EncodedTypeDefOrRef; +typedef CLR_UINT16 CLR_EncodedTypeRefOrSpec; //--// // may need to change later @@ -220,7 +225,7 @@ enum CLR_LOGICAL_OPCODE /////////////////////////////////////////////////////////////////////////////////////////////////// -static const CLR_IDX CLR_EmptyIndex = 0xFFFF; +static const CLR_INDEX CLR_EmptyIndex = 0xFFFF; static const CLR_UINT32 CLR_EmptyToken = 0xFFFFFFFF; static const size_t CLR_MaxStreamSize_AssemblyRef = 0x0000FFFF; static const size_t CLR_MaxStreamSize_TypeRef = 0x0000FFFF; @@ -229,6 +234,8 @@ static const size_t CLR_MaxStreamSize_MethodRef = 0x0000FFFF; static const size_t CLR_MaxStreamSize_TypeDef = 0x0000FFFF; static const size_t CLR_MaxStreamSize_FieldDef = 0x0000FFFF; static const size_t CLR_MaxStreamSize_MethodDef = 0x0000FFFF; +static const size_t CLR_MaxStreamSize_GenericParam = 0x0000FFFF; +static const size_t CLR_MaxStreamSize_MethodSpec = 0x0000FFFF; static const size_t CLR_MaxStreamSize_Attributes = 0x0000FFFF; static const size_t CLR_MaxStreamSize_TypeSpec = 0x0000FFFF; static const size_t CLR_MaxStreamSize_Resources = 0x0000FFFF; @@ -282,7 +289,11 @@ enum CLR_FlowControl /////////////////////////////////////////////////////////////////////////////////////////////////// -enum CLR_TABLESENUM +////////////////////////////////////////////////////////////////////////////////////// +// !!! KEEP IN SYNC WITH enum NanoCLRTable (in nanoCLR_TypeSystem VS extension) !!! // +// !!! KEEP IN SYNC WITH enum NanoCLRTable (in MDP) !!! // +////////////////////////////////////////////////////////////////////////////////////// +enum NanoCLRTable { TBL_AssemblyRef = 0x00000000, TBL_TypeRef = 0x00000001, @@ -291,16 +302,18 @@ enum CLR_TABLESENUM TBL_TypeDef = 0x00000004, TBL_FieldDef = 0x00000005, TBL_MethodDef = 0x00000006, - TBL_Attributes = 0x00000007, - TBL_TypeSpec = 0x00000008, - TBL_Resources = 0x00000009, - TBL_ResourcesData = 0x0000000A, - TBL_Strings = 0x0000000B, - TBL_Signatures = 0x0000000C, - TBL_ByteCode = 0x0000000D, - TBL_ResourcesFiles = 0x0000000E, - TBL_EndOfAssembly = 0x0000000F, - TBL_Max = 0x00000010, + TBL_GenericParam = 0x00000007, + TBL_MethodSpec = 0x00000008, + TBL_TypeSpec = 0x00000009, + TBL_Attributes = 0x0000000A, + TBL_Resources = 0x0000000B, + TBL_ResourcesData = 0x0000000C, + TBL_Strings = 0x0000000D, + TBL_Signatures = 0x0000000E, + TBL_ByteCode = 0x0000000F, + TBL_ResourcesFiles = 0x00000010, + TBL_EndOfAssembly = 0x000000011, + TBL_Max = 0x00000012, }; enum CLR_CorCallingConvention @@ -309,6 +322,7 @@ enum CLR_CorCallingConvention // // This is based on CorCallingConvention. // + PIMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0, PIMAGE_CEE_CS_CALLCONV_VARARG = 0x5, @@ -316,66 +330,132 @@ enum CLR_CorCallingConvention PIMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7, PIMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8, PIMAGE_CEE_CS_CALLCONV_UNMGD = 0x9, - PIMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa, // generic method instantiation - PIMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb, // used ONLY for 64bit vararg PInvoke calls - PIMAGE_CEE_CS_CALLCONV_MAX = 0xc, // first invalid calling convention + + /// @brief generic method instantiation + /// + PIMAGE_CEE_CS_CALLCONV_GENERICINST = 0xA, + + /// @brief used ONLY for 64bit vararg PInvoke calls + /// + PIMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xB, + + /// @brief first invalid calling convention + /// + PIMAGE_CEE_CS_CALLCONV_MAX = 0xC, // The high bits of the calling convention convey additional info - PIMAGE_CEE_CS_CALLCONV_MASK = 0x0f, // Calling convention is bottom 4 bits - PIMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20, // Top bit indicates a 'this' parameter - PIMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40, // This parameter is explicitly in the signature - PIMAGE_CEE_CS_CALLCONV_GENERIC = - 0x10, // Generic method sig with explicit number of type arguments (precedes ordinary parameter count) - // - // End of overlap with CorCallingConvention. - // - ///////////////////////////////////////////////////////////////////////////////////////////// + + /// @brief Calling convention is bottom 4 bits + /// + PIMAGE_CEE_CS_CALLCONV_MASK = 0x0F, + + /// @brief Top bit indicates a 'this' parameter + /// + PIMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20, + + /// @brief This parameter is explicitly in the signature + /// + PIMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40, + + /// @brief Generic method sig with explicit number of type arguments (precedes ordinary parameter count) + /// + PIMAGE_CEE_CS_CALLCONV_GENERIC = 0x10, + + // + // End of overlap with CorCallingConvention. + // + ///////////////////////////////////////////////////////////////////////////////////////////// }; -enum CLR_DataType // KEEP IN SYNC WITH nanoCLR_DataType enum in nanoFramework.Tools.MetadataProcessor!! +///////////////////////////////////////////////////////////////////////////////////////// +// !!! KEEP IN SYNC WITH enum NanoCLRDataType (in nanoCLR_TypeSystem VS extension) !!! // +// !!! KEEP IN SYNC WITH enum NanoCLRDataType (in nanoCLR_TypeSystem Debugger) !!! // +///////////////////////////////////////////////////////////////////////////////////////// + +enum NanoCLRDataType // KEEP IN SYNC WITH nanoCLR_DataType enum in nanoFramework.Tools.MetadataProcessor!! { - DATATYPE_VOID, // 0 bytes + /// @brief 0 bytes + DATATYPE_VOID, - DATATYPE_BOOLEAN, // 1 byte - DATATYPE_I1, // 1 byte - DATATYPE_U1, // 1 byte + /// @brief 1 byte + DATATYPE_BOOLEAN, - DATATYPE_CHAR, // 2 bytes - DATATYPE_I2, // 2 bytes - DATATYPE_U2, // 2 bytes + /// @brief 1 byte + DATATYPE_I1, - DATATYPE_I4, // 4 bytes - DATATYPE_U4, // 4 bytes - DATATYPE_R4, // 4 bytes + /// @brief 1 byte + DATATYPE_U1, - DATATYPE_I8, // 8 bytes - DATATYPE_U8, // 8 bytes - DATATYPE_R8, // 8 bytes - DATATYPE_DATETIME, // 8 bytes // Shortcut for System.DateTime - DATATYPE_TIMESPAN, // 8 bytes // Shortcut for System.TimeSpan + /// @brief 2 bytes + DATATYPE_CHAR, + + /// @brief 2 bytes + DATATYPE_I2, + + /// @brief 2 bytes + DATATYPE_U2, + + /// @brief 4 bytes + DATATYPE_I4, + + /// @brief 4 bytes + DATATYPE_U4, + + /// @brief 4 bytes + DATATYPE_R4, + + /// @brief 8 bytes + DATATYPE_I8, + + /// @brief 8 bytes + DATATYPE_U8, + + /// @brief 8 bytes + DATATYPE_R8, + + /// @brief 8 bytes (Shortcut for System.DateTime) + DATATYPE_DATETIME, + + /// @brief 8 bytes (Shortcut for System.TimeSpan) + DATATYPE_TIMESPAN, DATATYPE_STRING, - DATATYPE_LAST_NONPOINTER = DATATYPE_TIMESPAN, // This is the last type that doesn't need to be relocated. - DATATYPE_LAST_PRIMITIVE_TO_PRESERVE = DATATYPE_R8, // All the above types don't need fix-up on assignment. + /// @brief This is the last type that doesn't need to be relocated. + DATATYPE_LAST_NONPOINTER = DATATYPE_TIMESPAN, + + // All the above types don't need fix-up on assignment. + DATATYPE_LAST_PRIMITIVE_TO_PRESERVE = DATATYPE_R8, + +// All the above types can be marshaled by assignment. #if defined(NANOCLR_NO_ASSEMBLY_STRINGS) - DATATYPE_LAST_PRIMITIVE_TO_MARSHAL = DATATYPE_STRING, // All the above types can be marshaled by assignment. + DATATYPE_LAST_PRIMITIVE_TO_MARSHAL = DATATYPE_STRING, // #else - DATATYPE_LAST_PRIMITIVE_TO_MARSHAL = DATATYPE_TIMESPAN, // All the above types can be marshaled by assignment. + DATATYPE_LAST_PRIMITIVE_TO_MARSHAL = DATATYPE_TIMESPAN, #endif - DATATYPE_LAST_PRIMITIVE = DATATYPE_STRING, // All the above types don't need fix-up on assignment. - DATATYPE_OBJECT, // Shortcut for System.Object - DATATYPE_GENERIC = DATATYPE_OBJECT, // shortcut for generic type - DATATYPE_CLASS, // CLASS - DATATYPE_VALUETYPE, // VALUETYPE - DATATYPE_SZARRAY, // Shortcut for single dimension zero lower bound array SZARRAY - DATATYPE_BYREF, // BYREF + // All the above types don't need fix-up on assignment. + DATATYPE_LAST_PRIMITIVE = DATATYPE_STRING, + + /// @brief Shortcut for System.Object + DATATYPE_OBJECT, - // Generic parameter in a generic type definition, represented as number + /// @brief CLASS + DATATYPE_CLASS, + + /// @brief VALUETYPE + DATATYPE_VALUETYPE, + + /// @brief Shortcut for single dimension zero lower bound array SZARRAY + DATATYPE_SZARRAY, + + /// @brief BYREF + DATATYPE_BYREF, + + /// @brief Generic parameter in a generic type definition, represented as number DATATYPE_VAR, - // Generic type instantiation + /// @brief Generic type instantiation DATATYPE_GENERICINST, - // Generic parameter in a generic method definition, represented as number + /// @brief Generic parameter in a generic method definition, represented as number DATATYPE_MVAR, //////////////////////////////////////// @@ -449,27 +529,24 @@ enum CLR_ReflectionType REFLECTION_CONSTRUCTOR = 0x04, REFLECTION_METHOD = 0x05, REFLECTION_FIELD = 0x06, + REFLECTION_GENERICTYPE = 0x07, }; //////////////////////////////////////////////////////////////////////////////////////////////////// + inline CLR_UINT32 CLR_DataFromTk(CLR_UINT32 tk) { return tk & 0x00FFFFFF; } -inline CLR_TABLESENUM CLR_TypeFromTk(CLR_UINT32 tk) +inline NanoCLRTable CLR_TypeFromTk(CLR_UINT32 tk) { - return (CLR_TABLESENUM)(tk >> 24); + return (NanoCLRTable)(tk >> 24); } -inline CLR_UINT32 CLR_TkFromType(CLR_TABLESENUM tbl, CLR_UINT32 data) +inline CLR_UINT32 CLR_TkFromType(NanoCLRTable tbl, CLR_UINT32 data) { return ((((CLR_UINT32)tbl) << 24) & 0xFF000000) | (data & 0x00FFFFFF); } -#if 0 -// Used on LE host to target BE -inline CLR_UINT32 CLR_TkFromType( CLR_TABLESENUM tbl, CLR_UINT32 data ) { return ( ((CLR_UINT32)(tbl) & 0xFF) | (data & 0xFFFFFF00)); } -inline CLR_UINT32 CLR_DataFromTk( CLR_UINT32 tk ) { return tk & 0xFFFFFF00; } -inline CLR_TABLESENUM CLR_TypeFromTk( CLR_UINT32 tk ) { return (CLR_TABLESENUM)(tk&0xFF); } -#endif + //--// inline CLR_UINT32 CLR_UncompressStringToken(CLR_UINT32 tk) @@ -479,22 +556,21 @@ inline CLR_UINT32 CLR_UncompressStringToken(CLR_UINT32 tk) inline CLR_UINT32 CLR_UncompressTypeToken(CLR_UINT32 tk) { - // TODO: length of this table should be 4 as it is dereferenced with two bits masked from token - // The fourth value is undefined/random - static const CLR_TABLESENUM c_lookup[3] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec}; - return CLR_TkFromType(c_lookup[(tk >> 14) & 3], 0x3fff & tk); + static const NanoCLRTable c_lookup[] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec, TBL_GenericParam }; + return CLR_TkFromType(c_lookup[(tk >> 14)], 0x3fff & tk); } inline CLR_UINT32 CLR_UncompressFieldToken(CLR_UINT32 tk) { - static const CLR_TABLESENUM c_lookup[2] = {TBL_FieldDef, TBL_FieldRef}; - return CLR_TkFromType(c_lookup[(tk >> 15) & 1], 0x7fff & tk); + static const NanoCLRTable c_lookup[2] = {TBL_FieldDef, TBL_FieldRef }; + return CLR_TkFromType(c_lookup[(tk >> 15)], 0x7fff & tk); } inline CLR_UINT32 CLR_UncompressMethodToken(CLR_UINT32 tk) { - static const CLR_TABLESENUM c_lookup[2] = {TBL_MethodDef, TBL_MethodRef}; - return CLR_TkFromType(c_lookup[(tk >> 15) & 1], 0x7fff & tk); + static const NanoCLRTable c_lookup[4] = {TBL_MethodDef, TBL_MethodRef, TBL_TypeSpec, TBL_MethodSpec}; + + return CLR_TkFromType(c_lookup[(tk >> 14)], 0x3fff & tk); } #if defined(VIRTUAL_DEVICE) @@ -505,38 +581,6 @@ CLR_UINT32 CLR_ReadTokenCompressed(CLR_PMETADATA &ip, CLR_OPCODE opcode); //--// -HRESULT CLR_CompressTokenHelper(const CLR_TABLESENUM *tables, CLR_UINT16 cTables, CLR_UINT32 &tk); - -inline HRESULT CLR_CompressStringToken(CLR_UINT32 &tk) -{ - static const CLR_TABLESENUM c_lookup[1] = {TBL_Strings}; - - return CLR_CompressTokenHelper(c_lookup, ARRAYSIZE(c_lookup), tk); -} - -inline HRESULT CLR_CompressTypeToken(CLR_UINT32 &tk) -{ - static const CLR_TABLESENUM c_lookup[3] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec}; - - return CLR_CompressTokenHelper(c_lookup, ARRAYSIZE(c_lookup), tk); -} - -inline HRESULT CLR_CompressFieldToken(CLR_UINT32 &tk) -{ - static const CLR_TABLESENUM c_lookup[2] = {TBL_FieldDef, TBL_FieldRef}; - - return CLR_CompressTokenHelper(c_lookup, ARRAYSIZE(c_lookup), tk); -} - -inline HRESULT CLR_CompressMethodToken(CLR_UINT32 &tk) -{ - static const CLR_TABLESENUM c_lookup[2] = {TBL_MethodDef, TBL_MethodRef}; - - return CLR_CompressTokenHelper(c_lookup, ARRAYSIZE(c_lookup), tk); -} - -//--// - inline bool CLR_CompressData(CLR_UINT32 val, CLR_UINT8 *&p) { CLR_UINT8 *ptr = p; @@ -587,43 +631,24 @@ inline CLR_UINT32 CLR_UncompressData(const CLR_UINT8 *&p) val |= (CLR_UINT32)*ptr++ << 8; val |= (CLR_UINT32)*ptr++ << 0; } -#if 0 - // Handle smallest data inline. - if((val & 0x80) == 0x00) // 0??? ???? - { - } - else if((val & 0xC0) == 0x80) // 10?? ???? - { - val = (val & 0x3F); - val |= ((CLR_UINT32)*ptr++ <<8); - } - else // 110? ???? - { - val = (val & 0x1F) ; - val |= (CLR_UINT32)*ptr++ << 8; - val |= (CLR_UINT32)*ptr++ << 16; - val |= (CLR_UINT32)*ptr++ << 24; - } - -#endif p = ptr; return val; } -inline CLR_DataType CLR_UncompressElementType(const CLR_UINT8 *&p) +inline NanoCLRDataType CLR_UncompressElementType(const CLR_UINT8 *&p) { - return (CLR_DataType)*p++; + return (NanoCLRDataType)*p++; } inline CLR_UINT32 CLR_TkFromStream(const CLR_UINT8 *&p) { - static const CLR_TABLESENUM c_lookup[4] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec, TBL_Max}; + static const NanoCLRTable c_lookup[4] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec, TBL_Max}; CLR_UINT32 data = CLR_UncompressData(p); - return CLR_TkFromType(c_lookup[data & 3], data >> 2); + return CLR_TkFromType(c_lookup[data & 0x0003], data >> 2); } //--//--//--// @@ -980,8 +1005,6 @@ struct CLR_RECORD_VERSION struct CLR_RECORD_ASSEMBLY { - static const CLR_UINT32 c_Flags_NeedReboot = 0x00000001; - CLR_UINT8 marker[8]; // CLR_UINT32 headerCRC; @@ -989,7 +1012,6 @@ struct CLR_RECORD_ASSEMBLY CLR_UINT32 flags; // CLR_UINT32 nativeMethodsChecksum; - CLR_UINT32 patchEntryOffset; // CLR_RECORD_VERSION version; // @@ -997,7 +1019,7 @@ struct CLR_RECORD_ASSEMBLY CLR_UINT16 stringTableVersion; // CLR_OFFSET_LONG startOfTables[TBL_Max]; - CLR_UINT32 numOfPatchedMethods; + // // For every table, a number of bytes that were padded to the end of the table // to align to unsigned long. Each table starts at a unsigned long boundary, and ends @@ -1016,7 +1038,7 @@ struct CLR_RECORD_ASSEMBLY void ComputeCRC(); #endif - CLR_OFFSET_LONG SizeOfTable(CLR_TABLESENUM tbl) const + CLR_OFFSET_LONG SizeOfTable(NanoCLRTable tbl) const { return startOfTables[tbl + 1] - startOfTables[tbl] - paddingOfTables[tbl]; } @@ -1031,52 +1053,131 @@ struct CLR_RECORD_ASSEMBLY static CLR_UINT32 ComputeAssemblyHash(const char *name, const CLR_RECORD_VERSION &ver); }; +// record structures are aligned to 1 byte boundary to minimize PE size +#pragma pack(push, 1) + +/// @brief Assembly header struct CLR_RECORD_ASSEMBLYREF { - CLR_STRING name; // TBL_Strings - CLR_UINT16 pad; - // + /// @brief Index into TBL_Strings + CLR_STRING name; + + /// @brief Assembly version CLR_RECORD_VERSION version; }; struct CLR_RECORD_TYPEREF { - CLR_STRING name; // TBL_Strings - CLR_STRING nameSpace; // TBL_Strings - // - CLR_IDX scope; // TBL_AssemblyRef | TBL_TypeRef // 0x8000 - CLR_UINT16 pad; + /// @brief Index into TBL_Strings + /// + CLR_STRING Name; + + /// @brief Index into TBL_Strings + /// + CLR_STRING NameSpace; + + /// @brief TypeRefOrAssemblyRef -> Index into TBL_AssemblyRef (ORed with 0x0000) | TBL_TypeRef (ORed with 0x8000) + /// + CLR_INDEX Scope; }; struct CLR_RECORD_FIELDREF { - CLR_STRING name; // TBL_Strings - CLR_IDX container; // TBL_TypeRef - // - CLR_SIG sig; // TBL_Signatures - CLR_UINT16 pad; + /// @brief Index into TBL_Strings + /// + CLR_STRING Name; + + /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing this field + CLR_EncodedTypeRefOrSpec encodedOwner; + + /// @brief Index into TBL_Signatures + /// + CLR_SIG Sig; + + /// @brief Index into owner table + /// + CLR_INDEX OwnerIndex() const + { + return (encodedOwner & 0x7FFF); + } + + /// @brief Index into owner table + /// + NanoCLRTable Owner() const + { + static const NanoCLRTable c_lookup[2] = { TBL_TypeRef, TBL_TypeSpec }; + + return c_lookup[(encodedOwner >> 15)]; + } }; struct CLR_RECORD_METHODREF { - CLR_STRING name; // TBL_Strings - CLR_IDX container; // TBL_TypeRef - // - CLR_SIG sig; // TBL_Signatures - CLR_UINT16 pad; + /// @brief Index into TBL_Strings + /// + CLR_STRING Name; + + /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing the method + /// + CLR_EncodedTypeRefOrSpec encodedOwner; + + /// @brief Index into TBL_Signatures + /// + CLR_SIG Sig; + + //--// + + /// @brief Index into owner table + /// + CLR_INDEX OwnerIndex() const + { + return (encodedOwner & 0x7FFF); + } + + /// @brief Owner table + /// + NanoCLRTable Owner() const + { + static const NanoCLRTable c_lookup[2] = { TBL_TypeRef, TBL_TypeSpec }; + + return c_lookup[(encodedOwner >> 15)]; + } + + bool HasOwnerType() const + { + return encodedOwner != CLR_EmptyIndex; + } }; struct CLR_RECORD_TYPEDEF { static const CLR_UINT16 TD_Scope_Mask = 0x0007; - static const CLR_UINT16 TD_Scope_NotPublic = 0x0000; // Class is not public scope. - static const CLR_UINT16 TD_Scope_Public = 0x0001; // Class is public scope. - static const CLR_UINT16 TD_Scope_NestedPublic = 0x0002; // Class is nested with public visibility. - static const CLR_UINT16 TD_Scope_NestedPrivate = 0x0003; // Class is nested with private visibility. - static const CLR_UINT16 TD_Scope_NestedFamily = 0x0004; // Class is nested with family visibility. - static const CLR_UINT16 TD_Scope_NestedAssembly = 0x0005; // Class is nested with assembly visibility. - static const CLR_UINT16 TD_Scope_NestedFamANDAssem = 0x0006; // Class is nested with family and assembly visibility. - static const CLR_UINT16 TD_Scope_NestedFamORAssem = 0x0007; // Class is nested with family or assembly visibility. + /// @brief Class is not public scope. + /// + static const CLR_UINT16 TD_Scope_NotPublic = 0x0000; + /// @brief Class is public scope. + /// + static const CLR_UINT16 TD_Scope_Public = 0x0001; + /// @brief Class is nested with public visibility. + /// + static const CLR_UINT16 TD_Scope_NestedPublic = 0x0002; + /// @brief Class is nested with private visibility. + /// + static const CLR_UINT16 TD_Scope_NestedPrivate = 0x0003; + + /// @brief Class is nested with family visibility. + /// + static const CLR_UINT16 TD_Scope_NestedFamily = 0x0004; + + /// @brief Class is nested with assembly visibility. + /// + static const CLR_UINT16 TD_Scope_NestedAssembly = 0x0005; + /// @brief Class is nested with family and assembly visibility. + /// + static const CLR_UINT16 TD_Scope_NestedFamANDAssem = 0x0006; // + /// @brief Class is nested with family or assembly visibility. + /// + static const CLR_UINT16 TD_Scope_NestedFamORAssem = 0x0007; static const CLR_UINT16 TD_Serializable = 0x0008; @@ -1100,36 +1201,126 @@ struct CLR_RECORD_TYPEDEF static const CLR_UINT16 TD_HasFinalizer = 0x4000; static const CLR_UINT16 TD_HasAttributes = 0x8000; - CLR_STRING name; // TBL_Strings - CLR_STRING nameSpace; // TBL_Strings - // - CLR_IDX extends; // TBL_TypeDef | TBL_TypeRef // 0x8000 - CLR_IDX enclosingType; // TBL_TypeDef - // - CLR_SIG interfaces; // TBL_Signatures - CLR_IDX methods_First; // TBL_MethodDef - // - CLR_UINT8 vMethods_Num; - CLR_UINT8 iMethods_Num; - CLR_UINT8 sMethods_Num; - CLR_UINT8 dataType; - // - CLR_IDX sFields_First; // TBL_FieldDef - CLR_IDX iFields_First; // TBL_FieldDef - // - CLR_UINT8 sFields_Num; - CLR_UINT8 iFields_Num; - CLR_UINT16 flags; + /// @brief Index into TBL_Strings with the name of the type + /// + CLR_STRING Name; + + /// @brief Index into TBL_Strings with the name of the namespace containing the type + /// + CLR_STRING NameSpace; + + /// @brief Encoded index for TypeDefOrRef -> Index into TBL_TypeDef | TBL_TypeRef + /// + CLR_EncodedTypeDefOrRef encodedExtends; + + /// @brief Encoded index for TypeDefOrRef -> Index into TBL_TypeDef | TBL_TypeRef + /// + CLR_EncodedTypeDefOrRef encodedEnclosingType; + + /// @brief Index into TBL_Signatures blob table for the set of interfaces implemented by this type + /// + CLR_SIG Interfaces; + + /// @brief Index into TBL_MethodDef for the first method of the type + /// + CLR_INDEX FirstMethod; + + /// @brief Count of virtual methods in the type + /// + CLR_UINT8 VirtualMethodCount; + + /// @brief Count of instance methods in the type + /// + CLR_UINT8 InstanceMethodCount; + + /// @brief Count of static methods in the type + /// + CLR_UINT8 StaticMethodCount; + + /// @brief Data type identity for the type + /// + CLR_UINT8 DataType; + + /// @brief Index into TBL_FieldDef for the first static field of the type + /// + CLR_INDEX FirstStaticField; + + /// @brief Index into TBL_FieldDef for the first instance field of the type + /// + CLR_INDEX FirstInstanceField; + + /// @brief Count of static fields in the type + /// + CLR_UINT8 StaticFieldsCount; + + /// @brief Count of instance fields in the type + /// + CLR_UINT8 InstanceFieldsCount; + + /// @brief Index into TBL_GenericParam for the first generic parameter for the type + /// + CLR_INDEX FirstGenericParam; + + /// @brief Count of generic parameters for the type + /// + CLR_UINT8 GenericParamCount; + + /// @brief Flags defining intrinsic attributes and access modifiers for the type + /// + CLR_UINT16 Flags; //--// bool IsEnum() const { - return (flags & (TD_Semantics_Mask)) == TD_Semantics_Enum; + return (Flags & (TD_Semantics_Mask)) == TD_Semantics_Enum; } + bool IsDelegate() const { - return (flags & (TD_Delegate | TD_MulticastDelegate)) != 0; + return (Flags & (TD_Delegate | TD_MulticastDelegate)) != 0; + } + + bool HasValidExtendsType() const + { + return encodedExtends != CLR_EmptyIndex; + } + + bool HasValidEnclosingType() const + { + return encodedEnclosingType != CLR_EmptyIndex; + } + + /// @brief Index into Extends table + /// + CLR_INDEX ExtendsIndex() const + { + return (encodedExtends & 0x7FFF); + } + + /// @brief Extends table + /// + NanoCLRTable Extends() const + { + static const NanoCLRTable c_lookup[2] = { TBL_TypeDef, TBL_TypeRef }; + + return c_lookup[(encodedExtends >> 15)]; + } + + /// @brief Index into EnclosingType table + /// + CLR_INDEX EnclosingTypeIndex() const + { + return (encodedEnclosingType & 0x7FFF); + } + + /// @brief EnclosingType table + /// + NanoCLRTable EnclosingType() const + { + static const NanoCLRTable c_lookup[2] = { TBL_TypeDef, TBL_TypeRef }; + + return c_lookup[(encodedEnclosingType >> 15)]; } }; @@ -1158,35 +1349,87 @@ struct CLR_RECORD_FIELDDEF static const CLR_UINT16 FD_HasAttributes = 0x8000; - CLR_STRING name; // TBL_Strings - CLR_SIG sig; // TBL_Signatures - // - CLR_SIG defaultValue; // TBL_Signatures - CLR_UINT16 flags; + /// @brief Index into TBL_Strings + /// + CLR_STRING Name; + + /// @brief Index into TBL_Signatures + /// + CLR_SIG Sig; + + /// @brief Index into TBL_Signatures + /// + CLR_SIG DefaultValue; + + CLR_UINT16 Flags; }; struct CLR_RECORD_METHODDEF { static const CLR_UINT32 MD_Scope_Mask = 0x00000007; - static const CLR_UINT32 MD_Scope_PrivateScope = 0x00000000; // Member not referenceable. - static const CLR_UINT32 MD_Scope_Private = 0x00000001; // Accessible only by the parent type. - static const CLR_UINT32 MD_Scope_FamANDAssem = 0x00000002; // Accessible by sub-types only in this Assembly. - static const CLR_UINT32 MD_Scope_Assem = 0x00000003; // Accessibly by anyone in the Assembly. - static const CLR_UINT32 MD_Scope_Family = 0x00000004; // Accessible only by type and sub-types. - static const CLR_UINT32 MD_Scope_FamORAssem = - 0x00000005; // Accessibly by sub-types anywhere, plus anyone in assembly. - static const CLR_UINT32 MD_Scope_Public = 0x00000006; // Accessibly by anyone who has visibility to this scope. - - static const CLR_UINT32 MD_Static = 0x00000010; // Defined on type, else per instance. - static const CLR_UINT32 MD_Final = 0x00000020; // Method may not be overridden. - static const CLR_UINT32 MD_Virtual = 0x00000040; // Method virtual. - static const CLR_UINT32 MD_HideBySig = 0x00000080; // Method hides by name+sig, else just by name. + + /// @brief ember not referenceable. + /// + static const CLR_UINT32 MD_Scope_PrivateScope = 0x00000000; + + /// @brief Accessible only by the parent type. + /// + static const CLR_UINT32 MD_Scope_Private = 0x00000001; + + /// @brief Accessible by sub-types only in this Assembly. + /// + static const CLR_UINT32 MD_Scope_FamANDAssem = 0x00000002; + + /// @brief Accessibly by anyone in the Assembly. + /// + static const CLR_UINT32 MD_Scope_Assem = 0x00000003; + + /// @brief Accessible only by type and sub-types. + /// + static const CLR_UINT32 MD_Scope_Family = 0x00000004; + + /// @brief Accessibly by sub-types anywhere, plus anyone in assembly. + /// + static const CLR_UINT32 MD_Scope_FamORAssem = 0x00000005; + + /// @brief Accessibly by anyone who has visibility to this scope. + /// + static const CLR_UINT32 MD_Scope_Public = 0x00000006; + + /// @brief Defined on type, else per instance. + /// + static const CLR_UINT32 MD_Static = 0x00000010; + + /// @brief Method may not be overridden. + /// + static const CLR_UINT32 MD_Final = 0x00000020; + + /// @brief Method virtual. + /// + static const CLR_UINT32 MD_Virtual = 0x00000040; + + /// @brief Method hides by name+sig, else just by name. + /// + static const CLR_UINT32 MD_HideBySig = 0x00000080; static const CLR_UINT32 MD_VtableLayoutMask = 0x00000100; - static const CLR_UINT32 MD_ReuseSlot = 0x00000000; // The default. - static const CLR_UINT32 MD_NewSlot = 0x00000100; // Method always gets a new slot in the vtable. - static const CLR_UINT32 MD_Abstract = 0x00000200; // Method does not provide an implementation. - static const CLR_UINT32 MD_SpecialName = 0x00000400; // Method is special. Name describes how. + + /// @brief The default. + /// + static const CLR_UINT32 MD_ReuseSlot = 0x00000000; + + /// @brief Method always gets a new slot in the vtable. + /// + static const CLR_UINT32 MD_NewSlot = 0x00000100; + + /// @brief Method does not provide an implementation. + /// + static const CLR_UINT32 MD_Abstract = 0x00000200; + + /// @brief Method is special. Name describes how. + /// + static const CLR_UINT32 MD_SpecialName = 0x00000400; + static const CLR_UINT32 MD_NativeProfiled = 0x00000800; static const CLR_UINT32 MD_Constructor = 0x00001000; @@ -1198,30 +1441,67 @@ struct CLR_RECORD_METHODDEF static const CLR_UINT32 MD_DelegateBeginInvoke = 0x00040000; static const CLR_UINT32 MD_DelegateEndInvoke = 0x00080000; - static const CLR_UINT32 MD_ContainsGenericParameter = 0x00100000; - static const CLR_UINT32 MD_HasGenericParameter = 0x00200000; + static const CLR_UINT32 MD_IsGenericInstance = 0x00100000; + static const CLR_UINT32 MD_ContainsGenericParameter = 0x00200000; static const CLR_UINT32 MD_Synchronized = 0x01000000; static const CLR_UINT32 MD_GloballySynchronized = 0x02000000; static const CLR_UINT32 MD_Patched = 0x04000000; static const CLR_UINT32 MD_EntryPoint = 0x08000000; - static const CLR_UINT32 MD_RequireSecObject = 0x10000000; // Method calls another method containing security code. - static const CLR_UINT32 MD_HasSecurity = 0x20000000; // Method has security associate with it. + + /// @brief Method calls another method containing security code. + /// + static const CLR_UINT32 MD_RequireSecObject = 0x10000000; + + /// @brief Method has security associate with it. + /// + static const CLR_UINT32 MD_HasSecurity = 0x20000000; static const CLR_UINT32 MD_HasExceptionHandlers = 0x40000000; static const CLR_UINT32 MD_HasAttributes = 0x80000000; - CLR_STRING name; // TBL_Strings + /// @brief Index into TBL_Strings for the name of the method + /// + CLR_STRING Name; + + /// @brief Offset into the IL byte code blob table for the opcodes of the method + /// CLR_OFFSET RVA; - // - CLR_UINT32 flags; - // - CLR_UINT8 retVal; - CLR_UINT8 numArgs; - CLR_UINT8 numLocals; - CLR_UINT8 lengthEvalStack; - // - CLR_SIG locals; // TBL_Signatures - CLR_SIG sig; // TBL_Signatures + + /// @brief Flags to indicate intrinsic attributes and semantics of the method + /// + CLR_UINT32 Flags; + + /// @brief DataType of the return value for the method + /// + CLR_UINT8 RetVal; + + /// @brief Count of arguments to the method + /// + CLR_UINT8 ArgumentsCount; + + /// @brief Count of local variables for the method + /// + CLR_UINT8 LocalsCount; + + /// @brief Length of the evaluation stack for the method + /// + CLR_UINT8 LengthEvalStack; + + /// @brief Index into TBL_Signatures to describe the locals for the method + /// + CLR_SIG Locals; + + /// @brief Index into TBL_GenericParam for the first generic parameter for the method + /// + CLR_INDEX FirstGenericParam; + + /// @brief Count of generic parameters for the method + /// + CLR_UINT8 GenericParamCount; + + /// @brief Index into TBL_Signatures that describes the method itself + /// + CLR_SIG Sig; }; #ifdef __GNUC__ @@ -1232,14 +1512,22 @@ struct CLR_RECORD_METHODDEF struct CLR_RECORD_ATTRIBUTE { - CLR_UINT16 ownerType; // one of TBL_TypeDef, TBL_MethodDef, or TBL_FieldDef. - CLR_UINT16 ownerIdx; // TBL_TypeDef | TBL_MethodDef | TBL_FielfDef + /// @brief one of TBL_TypeDef, TBL_MethodDef, or TBL_FieldDef. + /// + CLR_UINT16 OwnerType; + + /// @brief TBL_TypeDef | TBL_MethodDef | TBL_FielfDef + /// + CLR_UINT16 ownerIndex; CLR_UINT16 constructor; - CLR_SIG data; // TBL_Signatures + + /// @brief Index into TBL_Signatures + /// + CLR_SIG data; CLR_UINT32 Key() const { - return *(CLR_UINT32 *)&ownerType; + return *(CLR_UINT32 *)&OwnerType; } }; @@ -1249,8 +1537,63 @@ struct CLR_RECORD_ATTRIBUTE struct CLR_RECORD_TYPESPEC { - CLR_SIG sig; // TBL_Signatures - CLR_UINT16 pad; + /// @brief Index into TBL_Signatures + /// + CLR_SIG Sig; +}; + +struct CLR_RECORD_GENERICPARAM +{ + /// @brief 2-byte index of the generic parameter, numbered left -to-right, from zero. + /// + CLR_UINT16 Number; + + /// @brief 2-byte bitmask of type GenericParamAttributes + /// + CLR_UINT16 Flags; + + /// @brief TypeOrMethodDef -> Index into TBL_TypeDef TBL_MethodDef + /// + CLR_TYPEORMETHODDEF Owner; + + /// @brief Index into TBL_Signatures for parameter type signature + /// + CLR_SIG Sig; + + /// @brief Index into TBL_Strings + /// + CLR_STRING Name; +}; + +struct CLR_RECORD_METHODSPEC +{ + /// @brief Encoded index into TBL_MethodDef | TBL_MethodRef + /// + CLR_EncodedMethodDefOrRef encodedMethod; + + /// @brief Index into TBL_Signatures holding the signature of this instantiation + /// + CLR_SIG Instantiation; + + /// @brief Index into TBL_Signatures for the type specification containing the method + /// + CLR_INDEX Container; + + /// @brief Index into table pointed by TBL_MethodDef | TBL_MethodRef + /// + CLR_INDEX MethodIndex() const + { + return (encodedMethod & 0x7FFF); + } + + /// @brief EnclosingType table + /// + NanoCLRTable MethodKind() const + { + static const NanoCLRTable c_lookup[2] = { TBL_MethodDef, TBL_MethodRef }; + + return c_lookup[(encodedMethod >> 15)]; + } }; struct CLR_RECORD_EH @@ -1264,7 +1607,7 @@ struct CLR_RECORD_EH CLR_UINT16 mode; union { - CLR_IDX classToken; // TBL_TypeDef | TBL_TypeRef + CLR_INDEX classToken; // TBL_TypeDef | TBL_TypeRef CLR_OFFSET filterStart; }; CLR_OFFSET tryStart; From 749de4582c40740e4f9e0fab282624e2453fd108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 10:06:23 +0000 Subject: [PATCH 007/168] Fix several issues in declarations and code to align new names --- ...rlib_native_System_Reflection_Assembly.cpp | 2 +- ...ib_native_System_Reflection_MethodBase.cpp | 6 +-- src/CLR/Core/Execution.cpp | 2 +- .../Core/Serialization/BinaryFormatter.cpp | 54 +++++++++---------- src/CLR/Core/TypeSystem.cpp | 10 ++-- src/CLR/Debugger/Debugger.cpp | 3 -- src/CLR/Include/nanoCLR_Runtime.h | 29 +++++++--- 7 files changed, 59 insertions(+), 47 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 0f7321508f..f582ef66cb 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -333,7 +333,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR } // push assembly index onto the eval stack - stack.PushValueU4(assm->m_idx); + stack.PushValueU4(assm->m_index); } else { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 89620d358d..d697d2e0a6 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -254,12 +254,12 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(paraTypeHB, g_CLR_RT_WellKnownTypes.m_TypeStatic)); hbObj = paraTypeHB.Dereference(); - hbObj->SetReflection(paramElement.m_cls); + hbObj->SetReflection(paramElement.Class); // deal with array types - if (paramElement.m_levels > 0) + if (paramElement.Levels > 0) { - hbObj->ReflectionData().m_levels = (CLR_UINT16)paramElement.m_levels; + hbObj->ReflectionData().m_levels = (CLR_UINT16)paramElement.Levels; } // move pointer to the next element diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index e840b2436f..73fc99552a 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -535,7 +535,7 @@ HRESULT CLR_RT_ExecutionEngine::CreateEntryPointArgs(CLR_RT_HeapBlock &argsBlk, wchar_t *szArgNext = NULL; wchar_t *szArg = szCommandLineArgs; - wchar_t *sep = L" "; + const wchar_t *sep = L" "; wchar_t *context = NULL; szArg = wcstok_s(szArg, sep, &context); diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 3a74d91c14..bf1c41a5d2 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -127,7 +127,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() CLR_RT_TypeDescriptor *td; CLR_RT_TypeDescriptor sub; - if (m_hints.m_arraySize != 0) + if (m_hints._arraySize != 0) { res &= ~c_Signature_Length; } @@ -145,7 +145,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() break; default: - if (m_hints.m_flags & SF_FixedType) + if (m_hints._options & SF_FixedType) { res &= ~c_Signature_Type; break; @@ -175,7 +175,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() m_typeForced = &m_typeForced_tmp; *m_typeForced = *m_typeExpected; - if (m_hints.m_flags & SF_PointerNeverNull) + if (m_hints._options & SF_PointerNeverNull) { res &= ~c_Signature_Header; } @@ -437,7 +437,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( if ((mask & c_Signature_Length) != 0) { - int bitsMax = m_hints.m_bitPacked; + int bitsMax = m_hints._bitPacked; if (bitsMax != 0) { @@ -455,7 +455,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( } else { - int sizeExpected = m_hints.m_arraySize; + int sizeExpected = m_hints._arraySize; if (sizeExpected > 0 && sizeExpected != sizeReal) { @@ -522,7 +522,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (levelOne == TE_L1_Null) { - if (m_hints.m_flags & SF_PointerNeverNull) + if (m_hints._options & SF_PointerNeverNull) { NANOCLR_SET_AND_LEAVE(CLR_E_SERIALIZATION_VIOLATION); } @@ -717,7 +717,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (mask & c_Signature_Length) { - int bitsMax = m_hints.m_bitPacked; + int bitsMax = m_hints._bitPacked; if (bitsMax != 0) { @@ -742,7 +742,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) sub.InitializeFromType(m_type->m_reflex.m_data.m_type); - len = m_hints.m_arraySize; + len = m_hints._arraySize; if (len == (CLR_UINT32)-1) { @@ -948,17 +948,17 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) } } - if (m_hints.m_bitPacked) - bits = m_hints.m_bitPacked; + if (m_hints._bitPacked) + bits = m_hints._bitPacked; - val -= m_hints.m_rangeBias; + val -= m_hints._rangeBias; if (fSigned) { CLR_INT64 valS = (CLR_INT64)val; - if (m_hints.m_scale != 0) - valS /= (CLR_INT64)m_hints.m_scale; + if (m_hints._scale != 0) + valS /= (CLR_INT64)m_hints._scale; if (bits != 64) { @@ -976,8 +976,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) { CLR_UINT64 valU = (CLR_UINT64)val; - if (m_hints.m_scale != 0) - valU /= (CLR_UINT64)m_hints.m_scale; + if (m_hints._scale != 0) + valU /= (CLR_UINT64)m_hints._scale; if (bits != 64) { @@ -1074,8 +1074,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) NANOCLR_SET_AND_LEAVE(TrackObject(res)); } - if (m_hints.m_bitPacked) - bits = m_hints.m_bitPacked; + if (m_hints._bitPacked) + bits = m_hints._bitPacked; NANOCLR_CHECK_HRESULT(m_bf->ReadBits(val, bits)); @@ -1091,12 +1091,12 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) val = (val >> revBits); } - if (m_hints.m_scale != 0) + if (m_hints._scale != 0) { - val *= m_hints.m_scale; + val *= m_hints._scale; } - *dst = val + m_hints.m_rangeBias; + *dst = val + m_hints._rangeBias; res = c_Action_None; NANOCLR_SET_AND_LEAVE(S_OK); @@ -1157,7 +1157,7 @@ HRESULT CLR_RT_BinaryFormatter::State::CreateInstance( NANOCLR_CLEAR(*hints); - hints->m_flags = (SerializationFlags)(SF_PointerNeverNull | SF_FixedType); + hints->_options = (SerializationFlags)(SF_PointerNeverNull | SF_FixedType); } } else @@ -1269,15 +1269,15 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( else { if (!strcmp(val->m_name, "Flags")) - hints.m_flags = (SerializationFlags)val->m_value.NumericByRef().u4; + hints._options = (SerializationFlags)val->m_value.NumericByRef().u4; else if (!strcmp(val->m_name, "ArraySize")) - hints.m_arraySize = val->m_value.NumericByRef().s4; + hints._arraySize = val->m_value.NumericByRef().s4; else if (!strcmp(val->m_name, "BitPacked")) - hints.m_bitPacked = val->m_value.NumericByRef().s4; + hints._bitPacked = val->m_value.NumericByRef().s4; else if (!strcmp(val->m_name, "RangeBias")) - hints.m_rangeBias = val->m_value.NumericByRef().s8; + hints._rangeBias = val->m_value.NumericByRef().s8; else if (!strcmp(val->m_name, "Scale")) - hints.m_scale = val->m_value.NumericByRef().u8; + hints._scale = val->m_value.NumericByRef().u8; } } } @@ -1750,7 +1750,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextElement() SerializationHintsAttribute *hints; - if (m_value.m_hints.m_flags & (SF_FixedType | SF_PointerNeverNull)) + if (m_value.m_hints._options & (SF_FixedType | SF_PointerNeverNull)) { hints = &m_value.m_hints; } diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 9ccdd29e75..1fe5b4f23b 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -5896,18 +5896,18 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // get type NANOCLR_CHECK_HRESULT(m_parser.Advance(m_res)); - CLR_RT_DataTypeLookup dtl = c_CLR_RT_DataTypeLookup[m_res.m_dt]; + CLR_RT_DataTypeLookup dtl = c_CLR_RT_DataTypeLookup[m_res.DataType]; //////////////////////////////////////////////// // now read the arguments from the blob - if ((m_res.m_dt == DATATYPE_OBJECT && m_res.m_levels == 1) || m_fixed_Count > 1) + if ((m_res.DataType == DATATYPE_OBJECT && m_res.Levels == 1) || m_fixed_Count > 1) { // this is either an array of objects or a constructor with multiple parameters uint8_t paramCount; - if (m_res.m_dt == DATATYPE_OBJECT && m_res.m_levels == 1) + if (m_res.DataType == DATATYPE_OBJECT && m_res.Levels == 1) { // get element count of array (from blob) NANOCLR_READ_UNALIGNED_UINT8(paramCount, m_blob); @@ -5968,9 +5968,9 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) CLR_UINT32 size = dtl.m_sizeInBytes; CLR_RT_HeapBlock *currentParam = &m_lastValue.m_value; - NANOCLR_CHECK_HRESULT(ReadNumericValue(currentParam, m_res.m_dt, dtl.m_cls, size)); + NANOCLR_CHECK_HRESULT(ReadNumericValue(currentParam, m_res.DataType, dtl.m_cls, size)); } - else if (m_res.m_dt == DATATYPE_STRING) + else if (m_res.DataType == DATATYPE_STRING) { // single parameter of string type // OK to skip element type diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index d7e9aa4d6b..4055d45ba3 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -17,9 +17,6 @@ //--// -extern const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[]; -extern uint16_t g_CLR_InteropAssembliesCount; - CLR_DBG_Debugger *g_CLR_DBG_Debugger; BlockStorageDevice *CLR_DBG_Debugger::m_deploymentStorageDevice = NULL; diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index af5c020aef..fa4c090245 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -59,7 +59,7 @@ typedef CLR_RT_AddressToSymbolMap::iterator CLR_RT_AddressToSymbolMapIter; #endif // #if defined(VIRTUAL_DEVICE) #if defined(_MSC_VER) -#pragma pack(push, NANOCLR_RUNTIME_H, 4) +#pragma pack(push, __NANOCLR_RUNTIME_H__, 4) #endif #if defined(VIRTUAL_DEVICE) @@ -2708,6 +2708,11 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC SetResult_I4(val); } + inline void PushValueU4(CLR_UINT32 val) + { + SetResult_U4(val); + } + //--// CLR_RT_StackFrame *Caller() @@ -2860,8 +2865,6 @@ struct CLR_RT_GarbageCollector static const int c_minimumSpaceForGC = 128; static const int c_minimumSpaceForCompact = 128; static const CLR_UINT32 c_pressureThreshold = 10; - static const CLR_UINT32 c_memoryThreshold = HEAP_SIZE_THRESHOLD; - static const CLR_UINT32 c_memoryThreshold2 = HEAP_SIZE_THRESHOLD_UPPER; static const CLR_UINT32 c_StartGraphEvent = 0x00000001; static const CLR_UINT32 c_StopGraphEvent = 0x00000002; @@ -4139,16 +4142,20 @@ struct CLR_RT_ExecutionEngine extern CLR_RT_ExecutionEngine g_CLR_RT_ExecutionEngine; extern CLR_UINT32 g_buildCRC; -//--// - // // CT_ASSERT macro generates a compiler error in case the size of any structure changes. // + +#ifdef _WIN64 +CT_ASSERT(sizeof(CLR_RT_HeapBlock) == 20) +#else CT_ASSERT(sizeof(CLR_RT_HeapBlock) == 12) +#endif // _WIN64 + CT_ASSERT(sizeof(CLR_RT_HeapBlock_Raw) == sizeof(CLR_RT_HeapBlock)) #if defined(NANOCLR_TRACE_MEMORY_STATS) -#define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE 4 +#define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE sizeof(const char *) #else #define NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE 0 #endif @@ -4157,7 +4164,12 @@ CT_ASSERT(sizeof(CLR_RT_HeapBlock_Raw) == sizeof(CLR_RT_HeapBlock)) CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 20 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) #elif defined(PLATFORM_WINDOWS_EMULATOR) || defined(NANOCLR_TRACE_MEMORY_STATS) -CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + 4) + +#ifdef _WIN64 +CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 24 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) +#else +CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + NANOCLR_TRACE_MEMORY_STATS_EXTRA_SIZE) +#endif // _WIN64 #else @@ -4171,4 +4183,7 @@ CT_ASSERT(sizeof(CLR_RT_DataTypeLookup) == 16 + 4) #pragma pack(pop, __NANOCLR_RUNTIME_H__) #endif +extern const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[]; +extern const uint16_t g_CLR_InteropAssembliesCount; + #endif // NANOCLR_RUNTIME_H From bbe7113b9f2633fe5963214654e7462db230850b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 11:23:21 +0000 Subject: [PATCH 008/168] Add missing declaration from recent PR --- src/CLR/Include/nanoCLR_Runtime.h | 35 +++++++++++++++++--- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 7 ++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index fa4c090245..a9a0731ee4 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -2737,20 +2737,47 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC // The use of offsetof below throwns an "invalid offset warning" because CLR_RT_StackFrame is not POD type // C+17 is the first standard that allow this, so until we are using it we have to disable it to keep GCC happy +#ifdef _MSC_VER + +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_owningThread) + sizeof(CLR_RT_Thread *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_IP)) + +#else + #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" #endif -CT_ASSERT(offsetof(CLR_RT_StackFrame, m_owningThread) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_evalStack)) -CT_ASSERT(offsetof(CLR_RT_StackFrame, m_evalStack) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_arguments)) -CT_ASSERT(offsetof(CLR_RT_StackFrame, m_arguments) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_locals)) -CT_ASSERT(offsetof(CLR_RT_StackFrame, m_locals) + sizeof(CLR_UINT32) == offsetof(CLR_RT_StackFrame, m_IP)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_owningThread) + sizeof(CLR_RT_Thread *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_evalStack) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_arguments) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals)) +CT_ASSERT( + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_locals) + sizeof(CLR_RT_HeapBlock *) == + offsetof(CLR_RT_StackFrame, CLR_RT_StackFrame::m_IP)) #ifdef __GNUC__ #pragma GCC diagnostic pop #endif +#endif // _MSC_VER + //////////////////////////////////////////////////////////////////////////////// struct CLR_RT_ProtectFromGC diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index eb86a7a547..19573c6a24 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -64,10 +64,17 @@ // // This is used in memory move operations. // +#ifdef _WIN64 +struct CLR_RT_HeapBlock_Raw +{ + CLR_UINT32 data[5]; +}; +#else struct CLR_RT_HeapBlock_Raw { CLR_UINT32 data[3]; }; +#endif // _WIN64 #ifdef __GNUC__ #pragma GCC diagnostic push From 8a16c65308c477544d0ef7ada04c3ac41c455b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 11:23:29 +0000 Subject: [PATCH 009/168] Fix code style --- src/CLR/Include/nanoCLR_Runtime.h | 127 +++++++++++++++++------------- 1 file changed, 72 insertions(+), 55 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index a9a0731ee4..cc84669eab 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -863,7 +863,7 @@ struct CLR_RT_ReflectionDef_Index static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_TypeDef_Instance &inst, CLR_UINT32 *levels); static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_MethodDef_Instance &inst); static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_FieldDef_Instance &inst); - static bool Convert(CLR_RT_HeapBlock& ref, CLR_RT_TypeSpec_Instance& inst); + static bool Convert(CLR_RT_HeapBlock &ref, CLR_RT_TypeSpec_Instance &inst); static bool Convert(CLR_RT_HeapBlock &ref, CLR_UINT32 &hash); }; @@ -925,7 +925,7 @@ struct CLR_RT_GenericParam_CrossReference /// @brief Generic Parameter Owner -> Index to TypeDef or MethodDef /// CLR_UINT16 m_data; - + /// @brief Tag for owner (TypeDef or MethodDef) /// NanoCLRTable m_TypeOrMethodDef; @@ -944,7 +944,7 @@ struct CLR_RT_GenericParam_CrossReference struct CLR_RT_MethodSpec_CrossReference { CLR_RT_TypeSpec_Index GenericType; - + CLR_RT_MethodDef_Index MethodDef; CLR_RT_MethodRef_Index MethodRef; @@ -952,10 +952,10 @@ struct CLR_RT_MethodSpec_CrossReference CLR_UINT16 m_data; - //CLR_INDEX GetMethod() const + // CLR_INDEX GetMethod() const //{ - // return (CLR_INDEX)(m_data); - //} + // return (CLR_INDEX)(m_data); + // } }; struct CLR_RT_TypeSpec_CrossReference @@ -1018,7 +1018,7 @@ struct CLR_RT_MethodDef_DebuggingInfo } }; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1200,22 +1200,22 @@ struct CLR_RT_SignatureParser //--// - void Initialize_TypeSpec(CLR_RT_Assembly* assm, CLR_PMETADATA ts); + void Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMETADATA ts); void Initialize_TypeSpec(CLR_RT_Assembly *assm, const CLR_RECORD_TYPESPEC *ts); void Initialize_Interfaces(CLR_RT_Assembly *assm, const CLR_RECORD_TYPEDEF *td); void Initialize_MethodLocals(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md); - bool Initialize_GenericParamTypeSignature(CLR_RT_Assembly* assm, const CLR_RECORD_GENERICPARAM* gp); + bool Initialize_GenericParamTypeSignature(CLR_RT_Assembly *assm, const CLR_RECORD_GENERICPARAM *gp); - void Initialize_FieldDef(CLR_RT_Assembly* assm, const CLR_RECORD_FIELDDEF* fd); + void Initialize_FieldDef(CLR_RT_Assembly *assm, const CLR_RECORD_FIELDDEF *fd); void Initialize_FieldDef(CLR_RT_Assembly *assm, CLR_PMETADATA fd); - void Initialize_FieldSignature(CLR_RT_Assembly* assm, CLR_PMETADATA md); + void Initialize_FieldSignature(CLR_RT_Assembly *assm, CLR_PMETADATA md); - void Initialize_MethodSignature(CLR_RT_Assembly* assm, const CLR_RECORD_METHODDEF* md); - void Initialize_MethodSignature(CLR_RT_Assembly* assm, CLR_PMETADATA md); - void Initialize_MethodSignature(CLR_RT_MethodDef_Instance* mdInstance); - void Initialize_MethodSignature(CLR_RT_MethodSpec_Instance* msInstance); + void Initialize_MethodSignature(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md); + void Initialize_MethodSignature(CLR_RT_Assembly *assm, CLR_PMETADATA md); + void Initialize_MethodSignature(CLR_RT_MethodDef_Instance *mdInstance); + void Initialize_MethodSignature(CLR_RT_MethodSpec_Instance *msInstance); void Initialize_Objects(CLR_RT_HeapBlock *lst, int count, bool fTypes); @@ -1360,12 +1360,12 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT CLR_RT_MethodSpec_CrossReference *m_pCrossReference_MethodSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_TypeSpec_CrossReference - * m_pCrossReference_TypeSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *m_pCrossReference_TypeSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_MethodDef_DebuggingInfo *m_pDebuggingInfo_MethodDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_TRACE_STACK_HEAVY) && defined(VIRTUAL_DEVICE) int m_maxOpcodes; @@ -1415,11 +1415,19 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT bool FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &index); bool FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_TypeDef_Index &index); bool FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index); + bool FindTypeSpec(const CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &index); - bool FindGenericParamAtTypeDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index &index); - bool FindGenericParamAtMethodDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index &index); - bool FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index& index); - bool FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index& index); + + bool FindGenericParamAtTypeDef( + CLR_RT_MethodDef_Instance md, + CLR_UINT32 genericParameterPosition, + CLR_RT_GenericParam_Index &index); + bool FindGenericParamAtMethodDef( + CLR_RT_MethodDef_Instance md, + CLR_UINT32 genericParameterPosition, + CLR_RT_GenericParam_Index &index); + bool FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index &index); + bool FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index &index); bool FindFieldDef( const CLR_RECORD_TYPEDEF *src, @@ -1428,11 +1436,11 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT CLR_SIG sig, CLR_RT_FieldDef_Index &index); bool FindFieldDef( - const CLR_RECORD_TYPESPEC* ts, - const char* name, - CLR_RT_Assembly* base, + const CLR_RECORD_TYPESPEC *ts, + const char *name, + CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_FieldDef_Index& index); + CLR_RT_FieldDef_Index &index); bool FindMethodDef( const CLR_RECORD_TYPEDEF *src, const char *name, @@ -1440,11 +1448,11 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT CLR_SIG sig, CLR_RT_MethodDef_Index &index); bool FindMethodDef( - const CLR_RECORD_TYPESPEC* ts, - const char* name, - CLR_RT_Assembly* base, + const CLR_RECORD_TYPESPEC *ts, + const char *name, + CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_MethodDef_Index& index); + CLR_RT_MethodDef_Index &index); bool FindNextStaticConstructor(CLR_RT_MethodDef_Index &index); @@ -2037,10 +2045,14 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - CLR_UINT32 flags, CLR_UINT32 levels); HRESULT BuildTypeName(const CLR_RT_TypeDef_Index &cls, char *&szBuffer, size_t &size); - HRESULT BuildMethodName(const CLR_RT_MethodDef_Index &md, const CLR_RT_TypeSpec_Index* genericType, char *&szBuffer, size_t &size); + HRESULT BuildMethodName( + const CLR_RT_MethodDef_Index &md, + const CLR_RT_TypeSpec_Index *genericType, + char *&szBuffer, + size_t &size); HRESULT BuildFieldName(const CLR_RT_FieldDef_Index &fd, char *&szBuffer, size_t &size); - HRESULT BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char*& szBuffer, size_t& iBuffer); - HRESULT BuildMethodSpecName(const CLR_RT_MethodSpec_Index& ms, char*& szBuffer, size_t& iBuffer); + HRESULT BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char *&szBuffer, size_t &iBuffer); + HRESULT BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms, char *&szBuffer, size_t &iBuffer); HRESULT QueueStringToBuffer(char *&szBuffer, size_t &size, const char *szText); @@ -2062,8 +2074,8 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - static bool MatchSignatureElement( CLR_RT_SignatureParser::Element &resLeft, CLR_RT_SignatureParser::Element &resRight, - CLR_RT_SignatureParser& parserLeft, - CLR_RT_SignatureParser& parserRight, + CLR_RT_SignatureParser &parserLeft, + CLR_RT_SignatureParser &parserRight, bool fIsInstanceOfOK); static NanoCLRDataType MapElementTypeToDataType(CLR_UINT32 et); @@ -2095,7 +2107,7 @@ struct CLR_RT_Assembly_Instance : public CLR_RT_Assembly_Index struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index { CLR_RT_Assembly *m_assm; - const CLR_RECORD_TYPESPEC* m_target; + const CLR_RECORD_TYPESPEC *m_target; CLR_INDEX TypeDefIndex; @@ -2120,11 +2132,11 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index bool InitializeFromIndex(const CLR_RT_TypeDef_Index &index); bool InitializeFromMethod(const CLR_RT_MethodDef_Instance &md); bool InitializeFromField(const CLR_RT_FieldDef_Instance &fd); - bool InitializeFromMethod(const CLR_RT_MethodSpec_Instance& ms); + bool InitializeFromMethod(const CLR_RT_MethodSpec_Instance &ms); void Clear(); - bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance* caller = NULL); + bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller = NULL); //--// @@ -2146,7 +2158,7 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index CLR_RT_Assembly *m_assm; const CLR_RECORD_FIELDDEF *m_target; - const CLR_RT_TypeSpec_Index* genericType; + const CLR_RT_TypeSpec_Index *genericType; //--// @@ -2195,7 +2207,7 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index { return m_assm->m_pDebuggingInfo_MethodDef[Method()]; } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) }; struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index @@ -2205,7 +2217,7 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index //--// - bool InitializeFromIndex(const CLR_RT_GenericParam_Index& index); + bool InitializeFromIndex(const CLR_RT_GenericParam_Index &index); void Clear(); @@ -2221,16 +2233,16 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index { - CLR_RT_Assembly* m_assm; - const CLR_RECORD_METHODSPEC* m_target; + CLR_RT_Assembly *m_assm; + const CLR_RECORD_METHODSPEC *m_target; //--// - bool InitializeFromIndex(const CLR_RT_MethodSpec_Index& index); + bool InitializeFromIndex(const CLR_RT_MethodSpec_Index &index); void Clear(); - CLR_RT_MethodSpec_CrossReference& CrossReference() const + CLR_RT_MethodSpec_CrossReference &CrossReference() const { return m_assm->m_pCrossReference_MethodSpec[Method()]; } @@ -2242,7 +2254,6 @@ struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index CLR_EncodedMethodDefOrRef InstanceOfMethod; }; - //////////////////////////////////////////////////////////////////////////////////////////////////// struct CLR_RT_AttributeEnumerator @@ -2349,7 +2360,7 @@ struct CLR_RT_TypeDescriptor HRESULT InitializeFromReflection(const CLR_RT_ReflectionDef_Index &reflex); HRESULT InitializeFromTypeSpec(const CLR_RT_TypeSpec_Index &sig); HRESULT InitializeFromType(const CLR_RT_TypeDef_Index &cls); - HRESULT InitializeFromGenericType(const CLR_RT_TypeSpec_Index& genericType); + HRESULT InitializeFromGenericType(const CLR_RT_TypeSpec_Index &genericType); HRESULT InitializeFromFieldDefinition(const CLR_RT_FieldDef_Instance &fd); HRESULT InitializeFromSignatureParser(CLR_RT_SignatureParser &parser); HRESULT InitializeFromObject(const CLR_RT_HeapBlock &ref); @@ -2526,7 +2537,7 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_UINT32 m_depth; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_PROFILE_NEW_CALLS) CLR_PROF_CounterCallChain m_callchain; @@ -3301,7 +3312,7 @@ struct CLR_RT_Thread : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP - N // However, if this thread was spawned on behalf of the debugger to evaluate // a property or function call, it points to the object coresponding to the // thread that is currently selected in the debugger. -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(ENABLE_NATIVE_PROFILER) bool m_fNativeProfiled; @@ -3672,7 +3683,7 @@ CT_ASSERT(sizeof(CLR_RT_EventCache::Payload) == 12) #include #include -//#include +// #include //--// @@ -3789,7 +3800,7 @@ struct CLR_RT_ExecutionEngine CLR_DBG_Commands::Debugging_Execution_BreakpointDef *m_breakpoints; CLR_DBG_Commands::Debugging_Execution_BreakpointDef m_breakpointsActive[c_MaxBreakpointsActive]; size_t m_breakpointsActiveNum; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(BUILD_RTM) || defined(VIRTUAL_DEVICE) bool m_fPerformGarbageCollection; // Should the EE do a GC every context switch @@ -3997,9 +4008,9 @@ struct CLR_RT_ExecutionEngine CLR_UINT32 flags, const CLR_RT_TypeDef_Index &cls, CLR_UINT32 length); - CLR_RT_HeapBlock* ExtractHeapBlocksForGenericInstance( + CLR_RT_HeapBlock *ExtractHeapBlocksForGenericInstance( CLR_UINT32 flags, - const CLR_RT_TypeSpec_Index& genericType, + const CLR_RT_TypeSpec_Index &genericType, CLR_UINT32 length); CLR_RT_HeapBlock *ExtractHeapBytesForObjects(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length); CLR_RT_HeapBlock *ExtractHeapBlocksForObjects(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length); @@ -4023,8 +4034,14 @@ struct CLR_RT_ExecutionEngine HRESULT NewObject(CLR_RT_HeapBlock &reference, const CLR_RT_TypeDef_Instance &inst); HRESULT NewObject(CLR_RT_HeapBlock &reference, CLR_UINT32 token, CLR_RT_Assembly *assm); - HRESULT NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, const CLR_RT_TypeSpec_Index& genericType); - HRESULT NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, CLR_RT_TypeSpec_Instance& genericInstance); + HRESULT NewGenericInstanceObject( + CLR_RT_HeapBlock &reference, + const CLR_RT_TypeDef_Instance &typeDef, + const CLR_RT_TypeSpec_Index &genericType); + HRESULT NewGenericInstanceObject( + CLR_RT_HeapBlock &reference, + const CLR_RT_TypeDef_Instance &typeDef, + CLR_RT_TypeSpec_Instance &genericInstance); HRESULT CloneObject(CLR_RT_HeapBlock &reference, const CLR_RT_HeapBlock &source); HRESULT CopyValueType(CLR_RT_HeapBlock *destination, const CLR_RT_HeapBlock *source); @@ -4090,7 +4107,7 @@ struct CLR_RT_ExecutionEngine void Breakpoint_Exception(CLR_RT_StackFrame *stack, CLR_UINT32 reason, CLR_PMETADATA ip); void Breakpoint_Exception_Intercepted(CLR_RT_StackFrame *stack); void Breakpoint_Exception_Uncaught(CLR_RT_Thread *th); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //--// From c6ffd43d8e90eac15c9976be912a3257b1b19f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 11:23:55 +0000 Subject: [PATCH 010/168] Add missing implementation for FindTypeDef --- src/CLR/Core/TypeSystem.cpp | 113 ++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 1fe5b4f23b..ceea7f6b64 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4726,6 +4726,119 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, return false; } +bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, CLR_RT_ReflectionDef_Index &reflex) +{ + (void)szClass; + (void)assm; + (void)reflex; + + NATIVE_PROFILE_CLR_CORE(); + + char rgName[MAXTYPENAMELEN]; + char rgNamespace[MAXTYPENAMELEN]; + CLR_RT_TypeDef_Index res; + + if (hal_strlen_s(szClass) < ARRAYSIZE(rgNamespace)) + { + const char *szPtr = szClass; + const char *szPtr_LastDot = NULL; + const char *szPtr_FirstSubType = NULL; + char c; + size_t len; + bool arrayType = false; + + while (true) + { + c = szPtr[0]; + if (!c) + break; + + if (c == '.') + { + szPtr_LastDot = szPtr; + } + else if (c == '+') + { + szPtr_FirstSubType = szPtr; + break; + } + else if (c == '[') + { + char ch = szPtr[1]; + if (ch == ']') + { + arrayType = true; + break; + } + } + + szPtr++; + } + + if (szPtr_LastDot) + { + len = szPtr_LastDot++ - szClass; + hal_strncpy_s(rgNamespace, ARRAYSIZE(rgNamespace), szClass, len); + len = szPtr - szPtr_LastDot; + hal_strncpy_s(rgName, ARRAYSIZE(rgName), szPtr_LastDot, len); + } + else + { + rgNamespace[0] = 0; + hal_strcpy_s(rgName, ARRAYSIZE(rgName), szClass); + } + + if (FindTypeDef(rgName, rgNamespace, assm, res)) + { + // + // Found the containing type, let's look for the nested type. + // + if (szPtr_FirstSubType) + { + CLR_RT_TypeDef_Instance inst; + + do + { + szPtr = ++szPtr_FirstSubType; + + while (true) + { + c = szPtr_FirstSubType[0]; + if (!c) + break; + + if (c == '+') + break; + + szPtr_FirstSubType++; + } + + len = szPtr_FirstSubType - szPtr; + hal_strncpy_s(rgName, ARRAYSIZE(rgName), szPtr, len); + + inst.InitializeFromIndex(res); + + if (inst.m_assm->FindTypeDef(rgName, res.Type(), res) == false) + { + return false; + } + + } while (c == '+'); + } + + reflex.m_kind = REFLECTION_TYPE; + // make sure this works for multidimensional arrays. + reflex.m_levels = arrayType ? 1 : 0; + reflex.m_data.m_type = res; + return true; + } + } + + res.Clear(); + + return false; +} + //--// int From d5d23a34a9c06dcb01dee885d972954dab47ae1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 11:24:02 +0000 Subject: [PATCH 011/168] Fix code style --- src/CLR/Core/TypeSystem.cpp | 344 ++++++++++++++++++------------------ 1 file changed, 168 insertions(+), 176 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index ceea7f6b64..50e71c5ca0 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -244,7 +244,7 @@ void CLR_RT_SignatureParser::Initialize_Interfaces(CLR_RT_Assembly *assm, const //--// -void CLR_RT_SignatureParser::Initialize_FieldSignature(CLR_RT_Assembly* assm, CLR_PMETADATA fd) +void CLR_RT_SignatureParser::Initialize_FieldSignature(CLR_RT_Assembly *assm, CLR_PMETADATA fd) { NATIVE_PROFILE_CLR_CORE(); @@ -285,7 +285,7 @@ void CLR_RT_SignatureParser::Initialize_FieldDef(CLR_RT_Assembly *assm, CLR_PMET } //--// -void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodDef_Instance* md) +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodDef_Instance *md) { NATIVE_PROFILE_CLR_CORE(); @@ -294,7 +294,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodDef_Instanc Initialize_MethodSignature(md->m_assm, md->m_assm->GetSignature(md->m_target->Sig)); } -void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly* assm, const CLR_RECORD_METHODDEF* md) +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md) { NATIVE_PROFILE_CLR_CORE(); @@ -329,7 +329,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, C IsGenericInst = false; } -void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instance* ms) +void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instance *ms) { NATIVE_PROFILE_CLR_CORE(); @@ -358,14 +358,16 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instan //--// -bool CLR_RT_SignatureParser::Initialize_GenericParamTypeSignature(CLR_RT_Assembly* assm, const CLR_RECORD_GENERICPARAM* gp) +bool CLR_RT_SignatureParser::Initialize_GenericParamTypeSignature( + CLR_RT_Assembly *assm, + const CLR_RECORD_GENERICPARAM *gp) { NATIVE_PROFILE_CLR_CORE(); Type = CLR_RT_SignatureParser::c_GenericParamType; Assembly = assm; - + // need to check for valid signature if (gp->Sig != 0xFFFF) { @@ -538,7 +540,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) case DATATYPE_CLASS: case DATATYPE_VALUETYPE: { -parse_type: + parse_type: CLR_UINT32 tk = CLR_TkFromStream(Signature); CLR_UINT32 index = CLR_DataFromTk(tk); @@ -598,15 +600,14 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) case DATATYPE_GENERICINST: { - // set flag for GENERICINST + // set flag for GENERICINST IsGenericInst = true; // get data type NanoCLRDataType dt = (NanoCLRDataType)*Signature++; // sanity check - if (dt == DATATYPE_CLASS || - dt == DATATYPE_VALUETYPE) + if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) { // parse type goto parse_type; @@ -629,7 +630,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) default: { - const CLR_RT_TypeDef_Index* cls = c_CLR_RT_DataTypeLookup[res.DataType].m_cls; + const CLR_RT_TypeDef_Index *cls = c_CLR_RT_DataTypeLookup[res.DataType].m_cls; if (cls) { @@ -817,12 +818,12 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodSpec_Insta if (NANOCLR_INDEX_IS_VALID(ms)) { CLR_INDEX indexAssm = ms.Assembly(); - // CLR_INDEX indexType = ms.CrossReference().GetOwner(); + // CLR_INDEX indexType = ms.CrossReference().GetOwner(); - //Set(indexAssm, indexType); + // Set(indexAssm, indexType); m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; - //m_target = m_assm->GetTypeDef(indexType); + // m_target = m_assm->GetTypeDef(indexType); return true; } @@ -900,7 +901,10 @@ void CLR_RT_TypeDef_Instance::Clear() // if type token is not generic, we are going to resolve from the assembly else from the heapblock that may contains // generic parameter -bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller) +bool CLR_RT_TypeDef_Instance::ResolveToken( + CLR_UINT32 tk, + CLR_RT_Assembly *assm, + const CLR_RT_MethodDef_Instance *caller) { NATIVE_PROFILE_CLR_CORE(); if (assm) @@ -925,7 +929,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, case TBL_GenericParam: { CLR_RT_GenericParam_CrossReference gp = assm->m_pCrossReference_GenericParam[index]; - + Set(gp.Class.Assembly(), gp.Class.Type()); m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; @@ -936,13 +940,13 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, case TBL_TypeSpec: { - const CLR_RECORD_TYPESPEC* ts = assm->GetTypeSpec(index); + const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(index); CLR_RT_SignatureParser parser; parser.Initialize_TypeSpec(assm, ts); CLR_RT_SignatureParser::Element element; - + // advance signature: get parameter parser.Advance(element); @@ -961,7 +965,8 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, caller->m_assm->FindGenericParamAtTypeDef(*caller, genericParamPosition, gpIndex); - CLR_RT_GenericParam_CrossReference gp = caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + CLR_RT_GenericParam_CrossReference gp = + caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; // get TypeDef instance from generic parameter index m_data = gp.Class.m_data; @@ -976,7 +981,8 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, caller->m_assm->FindGenericParamAtMethodDef(*caller, genericParamPosition, gpIndex); - CLR_RT_GenericParam_CrossReference gp = caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + CLR_RT_GenericParam_CrossReference gp = + caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; // get TypeDef instance from generic parameter index m_data = gp.Class.m_data; @@ -994,18 +1000,18 @@ bool CLR_RT_TypeDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, default: //// handle generic type from provided data - //if (sampleData != NULL) + // if (sampleData != NULL) //{ - // CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); - // m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - // m_target = m_assm->GetTypeDef(Type()); - //} - //else + // CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); + // m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + // m_target = m_assm->GetTypeDef(Type()); + // } + // else //{ - // m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; - // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; - // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); - //} + // m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; + // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; + // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); + // } return true; // the remaining data types aren't to be handled break; @@ -1105,7 +1111,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm { case TBL_FieldRef: { - const CLR_RECORD_FIELDREF* fr = assm->GetFieldRef(index); + const CLR_RECORD_FIELDREF *fr = assm->GetFieldRef(index); switch (fr->Owner()) { @@ -1123,15 +1129,11 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm { genericType = &assm->m_pCrossReference_FieldRef[index].GenericType; - const CLR_RECORD_TYPESPEC* ts = assm->GetTypeSpec(genericType->TypeSpec()); + const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); CLR_RT_FieldDef_Index field; - if (!assm->FindFieldDef( - ts, - assm->GetString(fr->Name), - assm, - fr->Sig, field)) + if (!assm->FindFieldDef(ts, assm->GetString(fr->Name), assm, fr->Sig, field)) { return false; } @@ -1216,27 +1218,23 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass { case TBL_MethodRef: { - const CLR_RECORD_METHODREF* mr = assm->GetMethodRef(index); + const CLR_RECORD_METHODREF *mr = assm->GetMethodRef(index); if (mr->Owner() == TBL_TypeSpec) { genericType = &assm->m_pCrossReference_MethodRef[index].GenericType; - + const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); CLR_RT_MethodDef_Index method; - if (!assm->FindMethodDef( - ts, - assm->GetString(mr->Name), - assm, - mr->Sig, method)) + if (!assm->FindMethodDef(ts, assm->GetString(mr->Name), assm, mr->Sig, method)) { return false; } Set(assm->m_index, method.Method()); - + m_assm = assm; m_target = m_assm->GetMethodDef(method.Method()); } @@ -1268,7 +1266,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass { m_assm = assm; - const CLR_RECORD_METHODSPEC* ms = m_assm->GetMethodSpec(index); + const CLR_RECORD_METHODSPEC *ms = m_assm->GetMethodSpec(index); CLR_RT_MethodSpec_Index msIndex; msIndex.Set(m_assm->m_index, index); @@ -1303,17 +1301,16 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass CLR_RT_MethodSpec_Index methodSpec; assm->FindMethodSpecFromTypeSpec(index, methodSpec); - const CLR_RECORD_METHODSPEC* ms = assm->GetMethodSpec(index); + const CLR_RECORD_METHODSPEC *ms = assm->GetMethodSpec(index); switch (ms->MethodKind()) { case TBL_MethodDef: Set(assm->m_index, ms->MethodIndex()); - m_assm = assm; + m_assm = assm; m_target = m_assm->GetMethodDef(ms->MethodIndex()); - return true; case TBL_MethodRef: @@ -1328,7 +1325,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass return false; } break; - + // get generic type genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; @@ -1347,7 +1344,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass ////////////////////////////// -bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam_Index& index) +bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam_Index &index) { NATIVE_PROFILE_CLR_CORE(); @@ -1378,7 +1375,7 @@ void CLR_RT_GenericParam_Instance::Clear() //////////////////////////////////////////////////////////////////////////////////////////////////// -bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Index& index) +bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Index &index) { NATIVE_PROFILE_CLR_CORE(); @@ -1496,7 +1493,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromTypeSpec(const CLR_RT_TypeSpec_Inde NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - //parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); + // parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); NANOCLR_SET_AND_LEAVE(InitializeFromSignatureParser(parser)); @@ -1565,7 +1562,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_Index& genericType) +HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_Index &genericType) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -1581,7 +1578,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_I m_reflex.m_kind = REFLECTION_GENERICTYPE; m_reflex.m_data.m_genericType = m_handlerGenericType; } - + m_handlerCls.Clear(); NANOCLR_NOCLEANUP(); @@ -1600,7 +1597,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromFieldDefinition(const CLR_RT_FieldD NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignatureParser& parser) +HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignatureParser &parser) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -1622,7 +1619,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignaturePar { NANOCLR_CHECK_HRESULT(InitializeFromType(res.Class)); } - + if (res.Levels) { m_reflex.m_levels = res.Levels; @@ -1666,7 +1663,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) { const CLR_RT_TypeDef_Index *cls = NULL; const CLR_RT_ReflectionDef_Index *reflex = NULL; - const CLR_RT_TypeSpec_Index* genericType = NULL; + const CLR_RT_TypeSpec_Index *genericType = NULL; switch (dt) { @@ -2155,8 +2152,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_TYPESPEC* src = (const CLR_RECORD_TYPESPEC*)this->GetTable(TBL_TypeSpec); - CLR_RT_TypeSpec_CrossReference* dst = this->m_pCrossReference_TypeSpec; + const CLR_RECORD_TYPESPEC *src = (const CLR_RECORD_TYPESPEC *)this->GetTable(TBL_TypeSpec); + CLR_RT_TypeSpec_CrossReference *dst = this->m_pCrossReference_TypeSpec; for (i = 0; i < this->m_pTablesSize[TBL_TypeSpec]; i++, src++, dst++) { dst->GenericType.m_data = 0; @@ -2170,7 +2167,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) memset(m_pDebuggingInfo_MethodDef, 0, offsets.iDebuggingInfoMethods); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_RT_Assembly *&assm) @@ -2266,9 +2263,8 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R skeleton->m_pTablesSize[TBL_MethodSpec] * sizeof(CLR_RT_MethodSpec_CrossReference), CLR_UINT32); - offsets.iTypeSpec = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RT_TypeSpec_CrossReference), - CLR_UINT32); + offsets.iTypeSpec = + ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RT_TypeSpec_CrossReference), CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) offsets.iStaticFields = ROUNDTOMULTIPLE(skeleton->m_iStaticFields * sizeof(CLR_RT_HeapBlock), CLR_UINT32); @@ -2278,10 +2274,10 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R offsets.iDebuggingInfoMethods = ROUNDTOMULTIPLE( skeleton->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) size_t iTotalRamSize = offsets.iBase + offsets.iAssemblyRef + offsets.iTypeRef + offsets.iFieldRef + - offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + + offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + offsets.iGenericParam + offsets.iMethodSpec + offsets.iTypeSpec; #if !defined(NANOCLR_APPDOMAINS) @@ -2290,7 +2286,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) iTotalRamSize += offsets.iDebuggingInfoMethods; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //--// @@ -2331,8 +2327,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R header->SizeOfTable(TBL_TypeDef) + header->SizeOfTable(TBL_FieldDef) + header->SizeOfTable(TBL_MethodDef) + header->SizeOfTable(TBL_GenericParam) + header->SizeOfTable(TBL_MethodSpec) + header->SizeOfTable(TBL_TypeSpec) + - header->SizeOfTable(TBL_Attributes) + - header->SizeOfTable(TBL_Signatures); + header->SizeOfTable(TBL_Attributes) + header->SizeOfTable(TBL_Signatures); CLR_Debug::Printf( " (%d RAM - %d ROM - %d METADATA)\r\n\r\n", @@ -2595,14 +2590,14 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; break; - //case CLR_MemberRefParent::MRP_TypeDef: - // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); - // break; + // case CLR_MemberRefParent::MRP_TypeDef: + // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // break; // - //case CLR_MemberRefParent::MRP_MethodDef: - // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); - // fGot = true; - // break; + // case CLR_MemberRefParent::MRP_MethodDef: + // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // fGot = true; + // break; case TBL_TypeSpec: typeSpec.Set(this->m_index, src->OwnerIndex()); @@ -2618,7 +2613,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - const char* fieldName = GetString(src->Name); + const char *fieldName = GetString(src->Name); if (NANOCLR_INDEX_IS_VALID(typeSpec)) { @@ -2631,14 +2626,11 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - if (!typeSpecInstance.m_assm->FindFieldDef(typeSpecInstance.m_target, fieldName, this, src->Sig, dst->Target)) + if (!typeSpecInstance.m_assm + ->FindFieldDef(typeSpecInstance.m_target, fieldName, this, src->Sig, dst->Target)) { #if !defined(BUILD_RTM) - CLR_Debug::Printf( - "Unknown FieldRef: %s.%s.%s\r\n", - "???", - "???", - fieldName); + CLR_Debug::Printf("Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); #endif NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); @@ -2655,12 +2647,12 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } #if defined(VIRTUAL_DEVICE) && defined(DEBUG_RESOLUTION) - const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; - CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + const CLR_RECORD_TYPEDEF *qTD = typeDefInstance.m_target; + CLR_RT_Assembly *qASSM = typeDefInstance.m_assm; CLR_Debug::Printf( "Unknown scope when resolving FieldRef: %s.%s.%s\r\n", @@ -2669,7 +2661,8 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() name); #endif - if (typeDefInstance.m_assm->FindFieldDef(typeDefInstance.m_target, fieldName, this, src->Sig, dst->Target) == false) + if (typeDefInstance.m_assm + ->FindFieldDef(typeDefInstance.m_target, fieldName, this, src->Sig, dst->Target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown FieldRef: %s\r\n", fieldName); @@ -2699,14 +2692,14 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() typeDef.Clear(); CLR_RT_TypeDef_Instance typeDefInstance; - + CLR_RT_TypeSpec_Index typeSpec; - typeSpec.Clear(); + typeSpec.Clear(); CLR_RT_TypeSpec_Instance typeSpecInstance; - + bool fGot = false; - const char* name = NULL; + const char *name = NULL; switch (src->Owner()) { @@ -2714,14 +2707,14 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; break; - //case CLR_MemberRefParent::MRP_TypeDef: - // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); - // break; - // - //case CLR_MemberRefParent::MRP_MethodDef: - // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); - // fGot = true; - // break; + // case CLR_MemberRefParent::MRP_TypeDef: + // typeDef.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // break; + // + // case CLR_MemberRefParent::MRP_MethodDef: + // dst->m_target.Set(this->m_index, CLR_GetIndexFromMemberRefParent(src->container)); + // fGot = true; + // break; case TBL_TypeSpec: typeSpec.Set(this->m_index, src->OwnerIndex()); @@ -2760,11 +2753,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() if (fGot == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf( - "Unknown MethodRef: %s.%s.%s\r\n", - "???", - "???", - name); + CLR_Debug::Printf("Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); #endif NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); @@ -2782,8 +2771,8 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() } #if defined(VIRTUAL_DEVICE) && defined(DEBUG_RESOLUTION) - const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; - CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + const CLR_RECORD_TYPEDEF *qTD = typeDefInstance.m_target; + CLR_RT_Assembly *qASSM = typeDefInstance.m_assm; CLR_Debug::Printf( "Unknown scope when resolving MethodRef: %s.%s.%s\r\n", @@ -2810,8 +2799,8 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() if (fGot == false) { #if !defined(BUILD_RTM) - const CLR_RECORD_TYPEDEF* qTD = typeDefInstance.m_target; - CLR_RT_Assembly* qASSM = typeDefInstance.m_assm; + const CLR_RECORD_TYPEDEF *qTD = typeDefInstance.m_target; + CLR_RT_Assembly *qASSM = typeDefInstance.m_assm; CLR_Debug::Printf( "Unknown MethodRef: %s.%s.%s\r\n", @@ -2848,7 +2837,6 @@ HRESULT CLR_RT_Assembly::Resolve_TypeSpec() #endif NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - } NANOCLR_NOCLEANUP(); @@ -2942,7 +2930,7 @@ void CLR_RT_Assembly::Resolve_Link() { if (src->GenericParamCount) { - CLR_RT_GenericParam_CrossReference* gp = &m_pCrossReference_GenericParam[src->FirstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[src->FirstGenericParam]; // get generic parameter count for stop condition int num = src->GenericParamCount; @@ -3795,7 +3783,7 @@ void CLR_RT_Assembly::Resolve_MethodDef() // link generic parameters if (md->GenericParamCount) { - CLR_RT_GenericParam_CrossReference* gp = &m_pCrossReference_GenericParam[md->FirstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[md->FirstGenericParam]; // get generic parameter count for stop condition int num = md->GenericParamCount; @@ -3999,10 +3987,10 @@ bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index) } } -bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index& index) +bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericParam_Index &index) { NATIVE_PROFILE_CLR_CORE(); - const CLR_RECORD_GENERICPARAM* gp = this->GetGenericParam(0); + const CLR_RECORD_GENERICPARAM *gp = this->GetGenericParam(0); int tblSize = this->m_pTablesSize[TBL_GenericParam]; for (int i = 0; i < tblSize; i++, gp++) @@ -4015,8 +4003,6 @@ bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericPa if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight)) { - - return true; } @@ -4027,7 +4013,10 @@ bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericPa return false; } -bool CLR_RT_Assembly::FindGenericParamAtTypeDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index& index) +bool CLR_RT_Assembly::FindGenericParamAtTypeDef( + CLR_RT_MethodDef_Instance md, + CLR_UINT32 genericParameterPosition, + CLR_RT_GenericParam_Index &index) { NATIVE_PROFILE_CLR_CORE(); @@ -4052,7 +4041,10 @@ bool CLR_RT_Assembly::FindGenericParamAtTypeDef(CLR_RT_MethodDef_Instance md, CL } } -bool CLR_RT_Assembly::FindGenericParamAtMethodDef(CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, CLR_RT_GenericParam_Index& index) +bool CLR_RT_Assembly::FindGenericParamAtMethodDef( + CLR_RT_MethodDef_Instance md, + CLR_UINT32 genericParameterPosition, + CLR_RT_GenericParam_Index &index) { NATIVE_PROFILE_CLR_CORE(); @@ -4075,15 +4067,15 @@ bool CLR_RT_Assembly::FindGenericParamAtMethodDef(CLR_RT_MethodDef_Instance md, } } -bool CLR_RT_Assembly::FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index& index) +bool CLR_RT_Assembly::FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT_MethodSpec_Index &index) { NATIVE_PROFILE_CLR_CORE(); - const CLR_RECORD_METHODSPEC* ms = this->GetMethodSpec(0); + const CLR_RECORD_METHODSPEC *ms = this->GetMethodSpec(0); int tblSize = this->m_pTablesSize[TBL_MethodSpec]; for (int i = 0; i < tblSize; i++, ms++) { - if(ms->Container == typeSpecIndex) + if (ms->Container == typeSpecIndex) { index.Set(m_index, i); @@ -4159,25 +4151,25 @@ bool CLR_RT_Assembly::FindFieldDef( } bool CLR_RT_Assembly::FindFieldDef( - const CLR_RECORD_TYPESPEC* ts, - const char* name, - CLR_RT_Assembly* base, + const CLR_RECORD_TYPESPEC *ts, + const char *name, + CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_FieldDef_Index& index) + CLR_RT_FieldDef_Index &index) { (void)ts; NATIVE_PROFILE_CLR_CORE(); - const CLR_RECORD_FIELDDEF* fd = GetFieldDef(0); + const CLR_RECORD_FIELDDEF *fd = GetFieldDef(0); for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) { - const char* fieldName = GetString(fd->Name); + const char *fieldName = GetString(fd->Name); if (!strcmp(fieldName, name)) { - if(base) + if (base) { CLR_RT_SignatureParser parserLeft; parserLeft.Initialize_FieldDef(this, fd); @@ -4185,7 +4177,7 @@ bool CLR_RT_Assembly::FindFieldDef( CLR_RT_SignatureParser parserRight; parserRight.Initialize_FieldSignature(base, base->GetSignature(sig)); - if(CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight) == false) + if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight) == false) { continue; } @@ -4247,11 +4239,11 @@ bool CLR_RT_Assembly::FindMethodDef( } bool CLR_RT_Assembly::FindMethodDef( - const CLR_RECORD_TYPESPEC* ts, - const char* name, - CLR_RT_Assembly* base, + const CLR_RECORD_TYPESPEC *ts, + const char *name, + CLR_RT_Assembly *base, CLR_SIG sig, - CLR_RT_MethodDef_Index& index) + CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); @@ -4261,24 +4253,19 @@ bool CLR_RT_Assembly::FindMethodDef( CLR_RT_TypeSpec_Instance tsInstance; tsInstance.InitializeFromIndex(tsIndex); - const CLR_RECORD_TYPEDEF* td = (const CLR_RECORD_TYPEDEF*)base->GetTable(TBL_TypeDef); + const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)base->GetTable(TBL_TypeDef); td += tsInstance.TypeDefIndex; - return CLR_RT_Assembly::FindMethodDef( - td, - name, - base, - sig, - index); + return CLR_RT_Assembly::FindMethodDef(td, name, base, sig, index); } -bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index& index) +bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &index) { NATIVE_PROFILE_CLR_CORE(); for (int i = 0; i < m_pTablesSize[TBL_TypeSpec]; i++) { - const CLR_RECORD_TYPESPEC* ts = GetTypeSpec(i); + const CLR_RECORD_TYPESPEC *ts = GetTypeSpec(i); CLR_RT_SignatureParser parserLeft; parserLeft.Initialize_TypeSpec(this, sig); @@ -4359,7 +4346,6 @@ bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &index) return false; } - //////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() @@ -4393,7 +4379,7 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() NANOCLR_CHECK_HRESULT(parser.Advance(res)); - while (res.Levels -- > 0) + while (res.Levels-- > 0) { hash = ComputeHashForType(DATATYPE_SZARRAY, hash); } @@ -5044,14 +5030,14 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() offsets.iDebuggingInfoMethods += ROUNDTOMULTIPLE( pASSM->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) iMetaData += pASSM->m_header->SizeOfTable(TBL_AssemblyRef) + pASSM->m_header->SizeOfTable(TBL_TypeRef) + pASSM->m_header->SizeOfTable(TBL_FieldRef) + pASSM->m_header->SizeOfTable(TBL_MethodRef) + pASSM->m_header->SizeOfTable(TBL_TypeDef) + pASSM->m_header->SizeOfTable(TBL_FieldDef) + - pASSM->m_header->SizeOfTable(TBL_MethodDef) + - pASSM->m_header->SizeOfTable(TBL_GenericParam) +pASSM->m_header->SizeOfTable(TBL_TypeSpec) + - pASSM->m_header->SizeOfTable(TBL_Attributes) + + pASSM->m_header->SizeOfTable(TBL_MethodDef) + + pASSM->m_header->SizeOfTable(TBL_GenericParam) + + pASSM->m_header->SizeOfTable(TBL_TypeSpec) + pASSM->m_header->SizeOfTable(TBL_Attributes) + pASSM->m_header->SizeOfTable(TBL_Signatures); for (int tbl = 0; tbl < TBL_Max; tbl++) @@ -5128,7 +5114,7 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_Debug::Printf(" DebuggingInfo = %6d bytes\r\n", offsets.iDebuggingInfoMethods); CLR_Debug::Printf("\r\n"); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_Debug::Printf( " Attributes = %6d bytes (%5d elements)\r\n", @@ -5184,7 +5170,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(NANOCLR_APPDOMAINS) if (g_CLR_RT_ExecutionEngine.m_outOfMemoryException == NULL) @@ -5216,7 +5202,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() CLR_EE_DBG_CLR(BreakpointsDisabled); g_CLR_RT_ExecutionEngine.Breakpoint_Assemblies_Loaded(); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) NANOCLR_CLEANUP_END(); } @@ -5254,7 +5240,7 @@ bool CLR_RT_TypeSystem::MatchSignatureDirect( { return true; } - + CLR_RT_SignatureParser::Element resLeft; if (FAILED(parserLeft.Advance(resLeft))) { @@ -5267,15 +5253,10 @@ bool CLR_RT_TypeSystem::MatchSignatureDirect( return false; } - if (!MatchSignatureElement( - resLeft, - resRight, - parserLeft, - parserRight, - fIsInstanceOfOK)) - { - return false; - } + if (!MatchSignatureElement(resLeft, resRight, parserLeft, parserRight, fIsInstanceOfOK)) + { + return false; + } } return true; @@ -5284,8 +5265,8 @@ bool CLR_RT_TypeSystem::MatchSignatureDirect( bool CLR_RT_TypeSystem::MatchSignatureElement( CLR_RT_SignatureParser::Element &resLeft, CLR_RT_SignatureParser::Element &resRight, - CLR_RT_SignatureParser& parserLeft, - CLR_RT_SignatureParser& parserRight, + CLR_RT_SignatureParser &parserLeft, + CLR_RT_SignatureParser &parserRight, bool fIsInstanceOfOK) { NATIVE_PROFILE_CLR_CORE(); @@ -5357,7 +5338,7 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( { return false; } - + if (parserLeft.IsGenericInst || parserRight.IsGenericInst) { if (resLeft.GenericParamPosition != resRight.GenericParamPosition) @@ -5454,7 +5435,11 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, const CLR_RT_TypeSpec_Index* genericType, char *&szBuffer, size_t &iBuffer) +HRESULT CLR_RT_TypeSystem::BuildMethodName( + const CLR_RT_MethodDef_Index &md, + const CLR_RT_TypeSpec_Index *genericType, + char *&szBuffer, + size_t &iBuffer) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -5500,7 +5485,8 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, con parser.Advance(element); #if defined(VIRTUAL_DEVICE) - NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name)); + NANOCLR_CHECK_HRESULT( + QueueStringToBuffer(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name)); #endif if (i + 1 < parser.GenParamCount) { @@ -5514,7 +5500,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName(const CLR_RT_MethodDef_Index &md, con NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index& fd, char*& szBuffer, size_t& iBuffer) +HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index &fd, char *&szBuffer, size_t &iBuffer) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -5539,15 +5525,15 @@ HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index& fd, char* NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char*& szBuffer, size_t& iBuffer) +HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &method, char *&szBuffer, size_t &iBuffer) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_Assembly* assembly = g_CLR_RT_TypeSystem.m_assemblies[method.Assembly() - 1]; + CLR_RT_Assembly *assembly = g_CLR_RT_TypeSystem.m_assemblies[method.Assembly() - 1]; const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[method.Method()]; - const CLR_RECORD_METHODREF* methodRef = assembly->GetMethodRef(method.Method()); + const CLR_RECORD_METHODREF *methodRef = assembly->GetMethodRef(method.Method()); if (memberCrossRef.GenericType.m_data == CLR_EmptyToken) { @@ -5559,7 +5545,9 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); CLR_RT_TypeDef_Index typeOwner; - typeOwner.Set(mdInstance.Assembly(), mdInstance.m_assm->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); + typeOwner.Set( + mdInstance.Assembly(), + mdInstance.m_assm->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); NANOCLR_CHECK_HRESULT(BuildTypeName(typeOwner, szBuffer, iBuffer)); @@ -5601,7 +5589,6 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", assembly->GetString(methodRef->Name)); } - NANOCLR_NOCLEANUP(); } @@ -5611,12 +5598,12 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms NANOCLR_HEADER(); CLR_RT_MethodSpec_Instance inst; - const CLR_RECORD_METHODSPEC* msRecord; + const CLR_RECORD_METHODSPEC *msRecord; CLR_RT_SignatureParser parser; CLR_RT_SignatureParser::Element element; CLR_RT_TypeDef_Index typeDef; CLR_RT_TypeDef_Instance instOwner; - CLR_RT_Assembly* assembly; + CLR_RT_Assembly *assembly; if (inst.InitializeFromIndex(ms) == false) { @@ -5665,20 +5652,25 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms { case TBL_MethodDef: { - const CLR_RECORD_METHODDEF* md = assembly->GetMethodDef(msRecord->MethodIndex()); + const CLR_RECORD_METHODDEF *md = assembly->GetMethodDef(msRecord->MethodIndex()); CLR_SafeSprintf(szBuffer, iBuffer, "%s", assembly->GetString(md->Name)); break; } case TBL_MethodRef: { - const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; + const CLR_RT_MethodRef_CrossReference memberCrossRef = + assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; CLR_RT_MethodDef_Instance mdInstance; mdInstance.m_data = memberCrossRef.Target.m_data; mdInstance.m_assm = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); - CLR_SafeSprintf(szBuffer, iBuffer, "%s", mdInstance.m_assm->GetString(mdInstance.CrossReference().GetOwner())); + CLR_SafeSprintf( + szBuffer, + iBuffer, + "%s", + mdInstance.m_assm->GetString(mdInstance.CrossReference().GetOwner())); break; } default: From af23f0045157ac323c68143d228b40cfb022ee25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 1 Mar 2023 12:45:51 +0000 Subject: [PATCH 012/168] Bump version to 2.0 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 4fc57a2d43..87d0bf4976 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.8.1", + "version": "2.0.0", "assemblyVersion": { "precision": "revision" }, From 76cbee476dc3eb62feeff1ff329f9b89c40e2a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 14 Mar 2023 10:50:39 +0000 Subject: [PATCH 013/168] Default for loop after exit is now false --- .../nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs index edbc6976f5..edd91bd56f 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs @@ -89,7 +89,7 @@ public class ExecuteCommandLineOptions [Option( "loopafterexit", Required = false, - Default = true, + Default = false, HelpText = "Option to remain in loop waiting for a debugger connection after the program exits.")] public bool EnterDebuggerLoopAfterExit { get; set; } From 0e9c52ff95ef22ff0d6e6e3d6a73a0cd48074167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 16 Mar 2023 17:47:24 +0000 Subject: [PATCH 014/168] Add nf-props to solution items --- targets/netcore/nanoCLR.sln | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/targets/netcore/nanoCLR.sln b/targets/netcore/nanoCLR.sln index 5d8c3b44ef..045022192a 100644 --- a/targets/netcore/nanoCLR.sln +++ b/targets/netcore/nanoCLR.sln @@ -80,6 +80,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Gpio", "..\.. EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Runtime.Serialization", "..\..\src\System.Runtime.Serialization\System.Runtime.Serialization.vcxproj", "{C9264D0A-AC25-46B0-BD08-4A3252427F19}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{65520520-70C9-4D4A-89AD-74A13DE78A31}" + ProjectSection(SolutionItems) = preProject + ..\..\nf.props = ..\..\nf.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU From 99032f632f78b2bd1130ce9e8d1826fe5954a7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:47:51 +0000 Subject: [PATCH 015/168] Fix defines for virtual device --- src/CLR/Include/nanoCLR_Runtime.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index cc84669eab..e9166ca92d 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -24,7 +24,7 @@ extern const CLR_RADIAN c_CLR_radians[]; //--// -#if defined(VIRTUAL_DEVICE) +#if defined(_WIN32) #include #include @@ -56,13 +56,13 @@ typedef CLR_RT_AddressToSymbolMap::iterator CLR_RT_AddressToSymbolMapIter; #include #endif -#endif // #if defined(VIRTUAL_DEVICE) +#endif // _WIN32 #if defined(_MSC_VER) #pragma pack(push, __NANOCLR_RUNTIME_H__, 4) #endif -#if defined(VIRTUAL_DEVICE) +#if defined(_WIN32) //--// #define _COM_SMRT_PTR(i) typedef _com_ptr_t<_com_IIID> i##Ptr From f1a18bb876d3faabfbbb5159b8e7e9b2e6ddc218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:48:13 +0000 Subject: [PATCH 016/168] Fix types to larger ones (missed merge from upstream) --- src/CLR/Include/nanoCLR_Runtime.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index e9166ca92d..6bd1351d11 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -3874,8 +3874,8 @@ struct CLR_RT_ExecutionEngine struct ExecutionConstraintCompensation { CLR_INT32 m_recursion; - CLR_INT32 m_start; - CLR_INT32 m_cumulative; + CLR_INT64 m_start; + CLR_INT64 m_cumulative; void Suspend() { From 82c4a389c9c8d4f53dc71d3117611f5a2f7aa287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:49:26 +0000 Subject: [PATCH 017/168] Replace blind calls to CLR FAIL to include detail message --- src/CLR/Core/TypeSystem.cpp | 112 +++++++++++++++++++++++++++++++----- 1 file changed, 99 insertions(+), 13 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 50e71c5ca0..f9e2017a1d 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2529,7 +2529,11 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->Scope); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown scope: %08x\r\n", src->Scope); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown scope: %08x\r\n", src->Scope); +#endif } const char *szName = GetString(src->Name); @@ -2538,7 +2542,12 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s\r\n", szName); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown type: %s\r\n", szName); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); +#endif } } else @@ -2557,7 +2566,11 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() CLR_Debug::Printf("Resolve: unknown type: %s.%s\r\n", szNameSpace, szName); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown type: %s\r\n", szName); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); +#endif } } } @@ -2610,7 +2623,17 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", + src->encodedOwner); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", + src->encodedOwner); +#endif } const char *fieldName = GetString(src->Name); @@ -2623,7 +2646,11 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); +#endif } if (!typeSpecInstance.m_assm @@ -2633,7 +2660,12 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() CLR_Debug::Printf("Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); +#endif + } // set TypeSpec @@ -2668,7 +2700,11 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() CLR_Debug::Printf("Unknown FieldRef: %s\r\n", fieldName); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown FieldRef: %s\r\n", fieldName); +#else + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown FieldRef: %s\r\n", fieldName); +#endif } // invalidate GenericType @@ -2726,7 +2762,18 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", + src->encodedOwner); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", + src->encodedOwner); +#endif } name = GetString(src->Name); @@ -2739,7 +2786,17 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown scope when resolving MethodRef: %08x\r\n", + src->encodedOwner); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown scope when resolving MethodRef: %08x\r\n", + src->encodedOwner); +#endif } if (typeSpecInstance.m_assm->FindMethodDef(typeSpecInstance.m_target, name, this, src->Sig, dst->Target)) @@ -2756,7 +2813,13 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() CLR_Debug::Printf("Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); +#endif } } else if (NANOCLR_INDEX_IS_VALID(typeDef)) @@ -2767,7 +2830,17 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); #endif - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown scope when resolving MethodRef: %08x\r\n", + src->encodedOwner); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown scope when resolving MethodRef: %08x\r\n", + src->encodedOwner); +#endif } #if defined(VIRTUAL_DEVICE) && defined(DEBUG_RESOLUTION) @@ -2808,8 +2881,21 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() qASSM->GetString(qTD->Name), name); #endif - - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown MethodRef: %s.%s.%s\r\n", + qASSM->GetString(qTD->NameSpace), + qASSM->GetString(qTD->Name), + name); +#else + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown MethodRef: %s.%s.%s\r\n", + qASSM->GetString(qTD->NameSpace), + qASSM->GetString(qTD->Name), + name); +#endif } } } From caae7f26cb622c9beaba8784729067c46aa2f6b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:49:49 +0000 Subject: [PATCH 018/168] Fix defines for virtual device --- src/CLR/Core/TypeSystem.cpp | 4 ++-- src/CLR/Core/TypeSystemLookup.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index f9e2017a1d..85c651df47 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2408,7 +2408,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R NANOCLR_NOCLEANUP(); } -#if defined(WIN32) +#if defined(VIRTUAL_DEVICE) HRESULT CLR_RT_Assembly::CreateInstance( const CLR_RECORD_ASSEMBLY *header, CLR_RT_Assembly *&assm, @@ -2489,7 +2489,7 @@ void CLR_RT_Assembly::DestroyInstance() g_CLR_RT_TypeSystem.m_assemblies[m_index - 1] = NULL; } -#if defined(WIN32) +#if defined(VIRTUAL_DEVICE) if (this->m_strPath != NULL) { delete this->m_strPath; diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index 169748982c..e0f7a882d8 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -51,7 +51,7 @@ #define DT_NOREL(x) NULL #define DT_REL(x) (CLR_RT_HeapBlockRelocate)&x -#if defined(WIN32) || defined(NANOCLR_TRACE_MEMORY_STATS) +#if defined(VIRTUAL_DEVICE) || defined(NANOCLR_TRACE_MEMORY_STATS) #define DT_OPT_NAME(x) , #x #else #define DT_OPT_NAME(x) From 134f5c23d5c60029eeb78728836363500047f4c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:50:05 +0000 Subject: [PATCH 019/168] Port change from upstream --- src/CLR/Core/TypeSystem.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 85c651df47..06ff56c2f8 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1964,6 +1964,20 @@ bool CLR_RECORD_ASSEMBLY::GoodAssembly() const return SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0) == this->assemblyCRC; } +#if defined(VIRTUAL_DEVICE) + +void CLR_RECORD_ASSEMBLY::ComputeCRC() +{ + NATIVE_PROFILE_CLR_CORE(); + memcpy(marker, c_MARKER_ASSEMBLY_V2, sizeof(marker)); + + headerCRC = 0; + assemblyCRC = SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0); + headerCRC = SUPPORT_ComputeCRC(this, sizeof(*this), 0); +} + +#endif + CLR_UINT32 CLR_RECORD_ASSEMBLY::ComputeAssemblyHash(const char *name, const CLR_RECORD_VERSION &ver) { NATIVE_PROFILE_CLR_CORE(); From 67aa892e862c368ff50ae627f1d81cf5e5c356cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Mar 2023 15:50:23 +0000 Subject: [PATCH 020/168] Remove duplicated call --- src/CLR/Core/Interpreter.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index fa748e8695..4d710b3452 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -2296,8 +2296,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_ProtectFromGC gc(safeSource); NANOCLR_CHECK_HRESULT(evalPos[0].LoadFromReference(safeSource)); - - NANOCLR_CHECK_HRESULT(evalPos[0].LoadFromReference(safeSource)); } goto Execute_LoadAndPromote; From adff06e19db4f08ce87cde3b789181949047e880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 21 Mar 2023 10:44:51 +0000 Subject: [PATCH 021/168] Bringing GPIO library up to date with new types --- ...ys_dev_gpio_native_System_Device_Gpio_GpioController.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp index 80f3ac2db7..4b7971cb44 100644 --- a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp +++ b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp @@ -164,7 +164,7 @@ void Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::GetGpioPin( CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *&gpioPin) { - CLR_IDX assemblyIdx; + CLR_INDEX assemblyIndex; CLR_INT32 index = 0; CLR_RT_Assembly *thisAssembly = NULL; CLR_RT_HeapBlock *gpioPinBundle = NULL; @@ -174,8 +174,8 @@ void Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::GetGpioPin( CLR_RT_HeapBlock *pThis = stack.This(); // s_GpioPins it's a static field, need to access it through the assembly - assemblyIdx = pThis->ObjectCls().Assembly(); - thisAssembly = g_CLR_RT_TypeSystem.m_assemblies[assemblyIdx - 1]; + assemblyIndex = pThis->ObjectCls().Assembly(); + thisAssembly = g_CLR_RT_TypeSystem.m_assemblies[assemblyIndex - 1]; // finally dereference s_GpioPins (as an ArrayList) gpioPins = (CLR_RT_HeapBlock_ArrayList *)thisAssembly->GetStaticField(FIELD_STATIC__s_GpioPins)->Dereference(); From f730ead6bf6750f91bc7da94c64ae5989cfdd519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 21 Mar 2023 10:45:22 +0000 Subject: [PATCH 022/168] Fix declaration of NANOCLR_MSG1_SET_AND_LEAVE to accept arg list --- src/CLR/Include/nanoCLR_Interop.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Include/nanoCLR_Interop.h b/src/CLR/Include/nanoCLR_Interop.h index 88ae915845..7c78645012 100644 --- a/src/CLR/Include/nanoCLR_Interop.h +++ b/src/CLR/Include/nanoCLR_Interop.h @@ -85,7 +85,7 @@ extern HRESULT NANOCLR_DEBUG_PROCESS_EXCEPTION(HRESULT hr, const char *szFunc, c hr = (expr); \ NANOCLR_LEAVE(); \ } -#define NANOCLR_MSG1_SET_AND_LEAVE(expr, msg, arg) \ +#define NANOCLR_MSG1_SET_AND_LEAVE(expr, msg, ...) \ { \ hr = (expr); \ NANOCLR_LEAVE(); \ From f79563abc8e7eff91914c90c1cc501b374129a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 21 Mar 2023 11:26:41 +0000 Subject: [PATCH 023/168] Code style fixes --- src/CLR/Core/Interpreter.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 4d710b3452..db2608a683 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -629,7 +629,7 @@ HRESULT CLR_RT_Thread::Execute() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) _ASSERTE(!CLR_EE_DBG_IS(Stopped)); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) ::Events_SetBoolTimer((bool *)&m_timeQuantumExpired, CLR_RT_Thread::c_TimeQuantum_Milliseconds); @@ -690,14 +690,14 @@ HRESULT CLR_RT_Thread::Execute() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (CLR_EE_DBG_IS(Stopped)) break; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) NANOCLR_CHECK_HRESULT(ProcessException()); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (CLR_EE_DBG_IS(Stopped)) break; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (m_currentException.Dereference() != NULL) { @@ -750,7 +750,7 @@ HRESULT CLR_RT_Thread::Execute_Inner() { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // // Thread cannot run if a lock request is still pending... @@ -1005,7 +1005,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { NANOCLR_SET_AND_LEAVE(CLR_S_QUANTUM_EXPIRED); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_TRACE_EXCEPTIONS) && defined(VIRTUAL_DEVICE) if (s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Annoying) @@ -2330,7 +2330,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } CLR_RT_TypeDef_Instance cls; - CLR_RT_HeapBlock* top; + CLR_RT_HeapBlock *top; CLR_INT32 changes; cls.InitializeFromMethod(calleeInst); // This is the class to create! @@ -2359,7 +2359,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - CLR_RT_HeapBlock_Delegate* dlg = top[1].DereferenceDelegate(); + CLR_RT_HeapBlock_Delegate *dlg = top[1].DereferenceDelegate(); if (dlg == NULL) { @@ -2413,7 +2413,8 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } else { - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewGenericInstanceObject(top[0], cls, *calleeInst.genericType)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine + .NewGenericInstanceObject(top[0], cls, *calleeInst.genericType)); } // @@ -3451,7 +3452,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Step(stack, ip); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) continue; @@ -3533,7 +3534,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Step(stack, ip); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) continue; //--// @@ -3559,7 +3560,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Step(stack, ip); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (th->m_timeQuantumExpired) { From b1c02b1872a1f2ca2f0e86c08a9f93f9c334bd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 21 Mar 2023 11:44:38 +0000 Subject: [PATCH 024/168] Improve exception tracing --- src/CLR/Core/Interpreter.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index db2608a683..19733ed6b2 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -660,17 +660,25 @@ HRESULT CLR_RT_Thread::Execute() stack = CurrentFrame(); if (stack->Prev() != NULL) { -#if defined(NANOCLR_TRACE_INSTRUCTIONS) && defined(PLATFORM_WINDOWS_EMULATOR) +#if defined(NANOCLR_TRACE_EXCEPTIONS) && defined(VIRTUAL_DEVICE) for (int i = 0; i < ARRAYSIZE(s_track); i++) { - BackTrackExecution &track = s_track[(s_trackPos + i) % ARRAYSIZE(s_track)]; + BackTrackExecution &track = s_track[(s_trackPos + i - 1) % ARRAYSIZE(s_track)]; - CLR_Debug::Printf(" %3d ", track.m_depth); + // check if there is a valid stack information + if (track.m_assm != nullptr) + { + CLR_Debug::Printf(" %3d ", track.m_depth); - CLR_RT_MethodDef_Instance inst; - inst.InitializeFromIndex(track.m_call); + CLR_RT_MethodDef_Instance inst; + inst.InitializeFromIndex(track.m_call); - // track.m_assm->DumpOpcodeDirect( inst, track.m_IP, track.m_IPstart, track.m_pid ); + track.m_assm->DumpOpcodeDirect(inst, track.m_IP, track.m_IPstart, track.m_pid); + } + else + { + break; + } } CLR_Debug::Printf("\r\n"); From e605ca624c718b6d70c84189d8fda3a0fcc37567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 17:07:57 +0000 Subject: [PATCH 025/168] Add assert for size of CLR_RECORD structs --- src/CLR/Include/nanoCLR_Types.h | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index 9218f75d93..bfe9d7150c 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -1053,6 +1053,25 @@ struct CLR_RECORD_ASSEMBLY static CLR_UINT32 ComputeAssemblyHash(const char *name, const CLR_RECORD_VERSION &ver); }; + +///////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////// +// size of CLR_RECORDs +// these have to match the struct used in MDP +// when changing any of these structs need to update the constant in MDP +#define sizeOf_CLR_RECORD_ASSEMBLYREF 10 +#define sizeOf_CLR_RECORD_TYPEREF 6 +#define sizeOf_CLR_RECORD_FIELDREF 6 +#define sizeOf_CLR_RECORD_METHODREF 6 +#define sizeOf_CLR_RECORD_TYPEDEF 27 +#define sizeOf_CLR_RECORD_FIELDDEF 8 +#define sizeOf_CLR_RECORD_METHODDEF 19 +#define sizeOf_CLR_RECORD_TYPESPEC 2 +#define sizeOf_CLR_RECORD_GENERICPARAM 10 +#define sizeOf_CLR_RECORD_METHODSPEC 6 +///////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////// + // record structures are aligned to 1 byte boundary to minimize PE size #pragma pack(push, 1) @@ -1066,6 +1085,8 @@ struct CLR_RECORD_ASSEMBLYREF CLR_RECORD_VERSION version; }; +CT_ASSERT(sizeof(CLR_RECORD_ASSEMBLYREF) == sizeOf_CLR_RECORD_ASSEMBLYREF) + struct CLR_RECORD_TYPEREF { /// @brief Index into TBL_Strings @@ -1081,6 +1102,8 @@ struct CLR_RECORD_TYPEREF CLR_INDEX Scope; }; +CT_ASSERT(sizeof(CLR_RECORD_TYPEREF) == sizeOf_CLR_RECORD_TYPEREF) + struct CLR_RECORD_FIELDREF { /// @brief Index into TBL_Strings @@ -1111,6 +1134,8 @@ struct CLR_RECORD_FIELDREF } }; +CT_ASSERT(sizeof(CLR_RECORD_FIELDREF) == sizeOf_CLR_RECORD_FIELDREF) + struct CLR_RECORD_METHODREF { /// @brief Index into TBL_Strings @@ -1149,6 +1174,8 @@ struct CLR_RECORD_METHODREF } }; +CT_ASSERT(sizeof(CLR_RECORD_METHODREF) == sizeOf_CLR_RECORD_METHODREF) + struct CLR_RECORD_TYPEDEF { static const CLR_UINT16 TD_Scope_Mask = 0x0007; @@ -1324,6 +1351,8 @@ struct CLR_RECORD_TYPEDEF } }; +CT_ASSERT(sizeof(CLR_RECORD_TYPEDEF) == sizeOf_CLR_RECORD_TYPEDEF) + struct CLR_RECORD_FIELDDEF { static const CLR_UINT16 FD_Scope_Mask = 0x0007; @@ -1364,6 +1393,8 @@ struct CLR_RECORD_FIELDDEF CLR_UINT16 Flags; }; +CT_ASSERT(sizeof(CLR_RECORD_FIELDDEF) == sizeOf_CLR_RECORD_FIELDDEF) + struct CLR_RECORD_METHODDEF { static const CLR_UINT32 MD_Scope_Mask = 0x00000007; @@ -1504,6 +1535,8 @@ struct CLR_RECORD_METHODDEF CLR_SIG Sig; }; +CT_ASSERT(sizeof(CLR_RECORD_METHODDEF) == sizeOf_CLR_RECORD_METHODDEF) + #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstrict-aliasing" @@ -1542,6 +1575,8 @@ struct CLR_RECORD_TYPESPEC CLR_SIG Sig; }; +CT_ASSERT(sizeof(CLR_RECORD_TYPESPEC) == sizeOf_CLR_RECORD_TYPESPEC) + struct CLR_RECORD_GENERICPARAM { /// @brief 2-byte index of the generic parameter, numbered left -to-right, from zero. @@ -1565,6 +1600,8 @@ struct CLR_RECORD_GENERICPARAM CLR_STRING Name; }; +CT_ASSERT(sizeof(CLR_RECORD_GENERICPARAM) == sizeOf_CLR_RECORD_GENERICPARAM) + struct CLR_RECORD_METHODSPEC { /// @brief Encoded index into TBL_MethodDef | TBL_MethodRef @@ -1596,6 +1633,8 @@ struct CLR_RECORD_METHODSPEC } }; +CT_ASSERT(sizeof(CLR_RECORD_METHODSPEC) == sizeOf_CLR_RECORD_METHODSPEC) + struct CLR_RECORD_EH { static const CLR_UINT16 EH_Catch = 0x0000; From 9b6a11a8dfe1a3b8a693c180fbd68e181d4e9459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 18:14:12 +0000 Subject: [PATCH 026/168] Fix compiler error --- src/CLR/Core/TypeSystem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 06ff56c2f8..344e2f593a 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -564,6 +564,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) break; case TBL_TypeDef: + { CLR_RT_TypeDef_Instance cls; if (cls.ResolveToken(tk, Assembly) == false) @@ -573,6 +574,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) res.Class = cls; break; + } default: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); From 2bb833cb6cd4947695f4235bab313f97433ba441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 18:45:53 +0000 Subject: [PATCH 027/168] Add instance names to help debugging - Conditional from compiler define NANOCLR_INSTANCE_NAMES. --- src/CLR/Core/TypeSystem.cpp | 48 +++++++++++++++++++++++++++++++ src/CLR/Include/nanoCLR_Runtime.h | 16 +++++++++++ 2 files changed, 64 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 344e2f593a..f345052bc1 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -783,6 +783,10 @@ bool CLR_RT_TypeDef_Instance::InitializeFromIndex(const CLR_RT_TypeDef_Index &in m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetTypeDef(Type()); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; } @@ -806,6 +810,9 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodDef_Instan m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; m_target = m_assm->GetTypeDef(indexType); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } @@ -827,6 +834,9 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodSpec_Insta m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; // m_target = m_assm->GetTypeDef(indexType); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } @@ -877,6 +887,9 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; m_target = m_assm->GetTypeDef(indexType); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } } @@ -1081,6 +1094,9 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & m_target = m_assm->GetFieldDef(Field()); genericType = NULL; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } @@ -1152,6 +1168,9 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm return false; } +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } case TBL_FieldDef: @@ -1163,6 +1182,9 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm // invalidate generic type genericType = NULL; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; default: @@ -1188,6 +1210,9 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index m_target = m_assm->GetMethodDef(Method()); genericType = NULL; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } @@ -1250,6 +1275,9 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass genericType = NULL; } +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } @@ -1262,6 +1290,9 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass // invalidate generic type genericType = NULL; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; case TBL_MethodSpec: @@ -1296,6 +1327,9 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass // get generic type genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } case TBL_TypeSpec: @@ -1313,6 +1347,9 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass m_assm = assm; m_target = m_assm->GetMethodDef(ms->MethodIndex()); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; case TBL_MethodRef: @@ -1320,6 +1357,10 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetMethodDef(Method()); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; default: @@ -1331,6 +1372,9 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass // get generic type genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif return true; } default: @@ -1356,6 +1400,10 @@ bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = m_assm->GetGenericParam(GenericParam()); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 6bd1351d11..87df1cfee6 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -2126,6 +2126,10 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index CLR_RT_Assembly *m_assm; const CLR_RECORD_TYPEDEF *m_target; +#if defined(NANOCLR_INSTANCE_NAMES) + const char *Name; +#endif + //--// bool InitializeFromReflection(const CLR_RT_ReflectionDef_Index &reflex, CLR_UINT32 *levels); @@ -2160,6 +2164,10 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index const CLR_RT_TypeSpec_Index *genericType; +#if defined(NANOCLR_INSTANCE_NAMES) + const char *Name; +#endif + //--// bool InitializeFromIndex(const CLR_RT_FieldDef_Index &index); @@ -2184,6 +2192,10 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index const CLR_RT_TypeSpec_Index *genericType; +#if defined(NANOCLR_INSTANCE_NAMES) + const char *Name; +#endif + //--// bool InitializeFromIndex(const CLR_RT_MethodDef_Index &index); @@ -2215,6 +2227,10 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index CLR_RT_Assembly *m_assm; const CLR_RECORD_GENERICPARAM *m_target; +#if defined(NANOCLR_INSTANCE_NAMES) + const char *Name; +#endif + //--// bool InitializeFromIndex(const CLR_RT_GenericParam_Index &index); From bc97ad92f7b56d056d9feed2443a35271c92320e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 18:46:14 +0000 Subject: [PATCH 028/168] Moving VerifyStackOK to class --- src/CLR/Core/Checks.cpp | 39 ++++++++++++++++++++++++++++++++ src/CLR/Include/nanoCLR_Checks.h | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/CLR/Core/Checks.cpp b/src/CLR/Core/Checks.cpp index 367e9dd86a..398f56f7b1 100644 --- a/src/CLR/Core/Checks.cpp +++ b/src/CLR/Core/Checks.cpp @@ -7,6 +7,45 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// +HRESULT CLR_Checks::VerifyStackOK(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *top, int num) +{ + CLR_RT_StackFrame *stackArg = &stack; + CLR_RT_HeapBlock *topArg = top; + CLR_RT_HeapBlock const *evalStackArg = &stackArg->m_evalStackPos[-num]; + int argCount = abs(num); + + //if (num > 0) + //{ + // // loop through each parameter, if any and check validity + // for (int pos = 0; pos < num; pos++) + // { + // if (!(evalStackArg <= top)) + // { + // return S_FALSE; + // } + + // topArg++; + // evalStackArg++; + // } + //} + //else if (num < 0) + //{ + // // loop through each parameter, if any and check validity + // for (int pos = 0; pos > num; pos--) + // { + // if (!(evalStackArg <= top)) + // { + // return S_FALSE; + // } + + // topArg--; + // evalStackArg++; + // } + //} + + return S_OK; +} + HRESULT CLR_Checks::VerifyObject( CLR_RT_HeapBlock& top ) { NATIVE_PROFILE_CLR_CORE(); diff --git a/src/CLR/Include/nanoCLR_Checks.h b/src/CLR/Include/nanoCLR_Checks.h index 1ba83bc334..19d17cc8af 100644 --- a/src/CLR/Include/nanoCLR_Checks.h +++ b/src/CLR/Include/nanoCLR_Checks.h @@ -53,7 +53,7 @@ struct CLR_RT_DUMP struct CLR_Checks { - static HRESULT VerifyStackOK( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock* top, int num ) { return S_OK; } + static HRESULT VerifyStackOK( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock* top, int num ); static HRESULT VerifyObject ( CLR_RT_HeapBlock& top ); From 55f22fca54b96f89a2c35a05c1efb1a2025ef9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 18:48:13 +0000 Subject: [PATCH 029/168] Move comment to follow code guidelines --- src/CLR/Include/nanoCLR_Runtime.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 87df1cfee6..88de14a0c3 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -2467,8 +2467,8 @@ struct CLR_RT_InlineBuffer struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCATION - { - static const int c_OverheadForNewObjOrInteropMethod = - 2; // We need to have more slots in the stack to process a 'newobj' opcode. + // We need to have more slots in the stack to process a 'newobj' opcode. + static const int c_OverheadForNewObjOrInteropMethod = 2; static const int c_MinimumStack = 10; static const CLR_UINT32 c_MethodKind_Native = 0x00000000; From aa7169c92c898b3cca0137a08d022906cedbef8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Mar 2023 19:02:42 +0000 Subject: [PATCH 030/168] More style fixes --- src/CLR/Core/TypeSystem.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index f345052bc1..aff6493434 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2711,9 +2711,15 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() #endif #if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); + NANOCLR_CHARMSG_SET_AND_LEAVE( + CLR_E_FAIL, + "Unknown scope when resolving FieldRef: %08x\r\n", + src->encodedOwner); #else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); + NANOCLR_MSG1_SET_AND_LEAVE( + CLR_E_FAIL, + L"Unknown scope when resolving FieldRef: %08x\r\n", + src->encodedOwner); #endif } @@ -2729,7 +2735,6 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() #else NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); #endif - } // set TypeSpec @@ -2878,11 +2883,9 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() #endif #if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE( - CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); #else - NANOCLR_MSG1_SET_AND_LEAVE( - CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); #endif } } From a756d83975c8102d3f6a7efcf89e4fb7cbaa9bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 24 Mar 2023 15:40:00 +0000 Subject: [PATCH 031/168] Fix resolving MethodDef from MemberRef --- src/CLR/Core/TypeSystem.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index aff6493434..7fe2cd51f6 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1249,6 +1249,8 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass if (mr->Owner() == TBL_TypeSpec) { + // owner is TypeSpec + genericType = &assm->m_pCrossReference_MethodRef[index].GenericType; const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); @@ -1267,8 +1269,13 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass } else { - m_data = assm->m_pCrossReference_MethodRef[mr->OwnerIndex()].Target.m_data; + // owner is TypeRef + + // get data for MethodRef (from index) + m_data = assm->m_pCrossReference_MethodRef[index].Target.m_data; + // get assembly for this type ref m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + // grab the MethodDef m_target = m_assm->GetMethodDef(Method()); // invalidate GenericType From c2b92fccf022bd4593653e37e3415404487a2133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 27 Mar 2023 18:25:08 +0100 Subject: [PATCH 032/168] Add verbose Name for instances to help debugging --- src/CLR/Core/TypeSystem.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 7fe2cd51f6..dc316bc220 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -932,6 +932,11 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( m_data = assm->m_pCrossReference_TypeRef[index].Target.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; m_target = assm->GetTypeDef(Type()); + +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; case TBL_TypeDef: @@ -939,6 +944,11 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( m_assm = assm; m_target = assm->GetTypeDef(index); + +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; case TBL_GenericParam: @@ -950,6 +960,10 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; m_target = m_assm->GetTypeDef(gp.Class.Type()); +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; } @@ -1010,6 +1024,10 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( return false; } +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; } @@ -1027,6 +1045,11 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); // } + +#if defined(NANOCLR_INSTANCE_NAMES) + Name = m_assm->GetString(m_target->Name); +#endif + return true; // the remaining data types aren't to be handled break; From b60bfbe70e41cb15114c60c4baf0dec87dce463e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 27 Mar 2023 18:26:00 +0100 Subject: [PATCH 033/168] Fix MatchSignatureElement to deal with params of Generic Instances --- src/CLR/Core/TypeSystem.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index dc316bc220..3af780e6f5 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -5524,7 +5524,20 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( if (parserLeft.IsGenericInst || parserRight.IsGenericInst) { - if (resLeft.GenericParamPosition != resRight.GenericParamPosition) + if (resLeft.GenericParamPosition == 0xFFFF && resRight.GenericParamPosition == 0xFFFF) + { + // need to check if type of generic parameters match + if (FAILED(parserLeft.Advance(resLeft)) || FAILED(parserRight.Advance(resRight))) + { + return false; + } + + if (resLeft.DataType != resRight.DataType) + { + return false; + } + } + else if (resLeft.GenericParamPosition != resRight.GenericParamPosition) { return false; } From 38634fc776e068054d8a1d4722b4685b1d670f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 13:07:04 +0100 Subject: [PATCH 034/168] Replace FindGenericParamAtTypeDef with FindGenericParamAtTypeSpec - Rework callers to fix getting proper type of generic parameter from generic instance. --- src/CLR/Core/Execution.cpp | 10 ++---- src/CLR/Core/TypeSystem.cpp | 53 ++++++++++++++----------------- src/CLR/Debugger/Debugger.cpp | 11 +------ src/CLR/Include/nanoCLR_Runtime.h | 5 +-- 4 files changed, 30 insertions(+), 49 deletions(-) diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 73fc99552a..6dc64dfd1c 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -1884,14 +1884,8 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( { CLR_INT8 genericParamPosition = *sig++; - CLR_RT_GenericParam_Index gpIndex; - - assembly->FindGenericParamAtTypeDef(methodDefInstance, genericParamPosition, gpIndex); - - CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; - - cls = gp.Class; - dt = gp.DataType; + methodDefInstance.m_assm + ->FindGenericParamAtTypeSpec(methodDefInstance, genericParamPosition, cls, dt); goto done; } diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 3af780e6f5..123b34fd09 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -982,25 +982,18 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( // store parameter position CLR_INT8 genericParamPosition = (CLR_INT8)element.GenericParamPosition; - // get the caller generic type - CLR_RT_TypeSpec_Instance tsInstance; - tsInstance.InitializeFromIndex(*caller->genericType); - switch (element.DataType) { case DATATYPE_VAR: { - CLR_RT_GenericParam_Index gpIndex; + CLR_RT_TypeDef_Index typeDef; + NanoCLRDataType dataType; - caller->m_assm->FindGenericParamAtTypeDef(*caller, genericParamPosition, gpIndex); - - CLR_RT_GenericParam_CrossReference gp = - caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + caller->m_assm->FindGenericParamAtTypeSpec(*caller, genericParamPosition, typeDef, dataType); - // get TypeDef instance from generic parameter index - m_data = gp.Class.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; - m_target = m_assm->GetTypeDef(gp.Class.Type()); + m_data = typeDef.m_data; + m_assm = g_CLR_RT_TypeSystem.m_assemblies[typeDef.Assembly() - 1]; + m_target = m_assm->GetTypeDef(typeDef.Type()); break; } @@ -4196,32 +4189,34 @@ bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericPa return false; } -bool CLR_RT_Assembly::FindGenericParamAtTypeDef( +bool CLR_RT_Assembly::FindGenericParamAtTypeSpec( CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, - CLR_RT_GenericParam_Index &index) + CLR_RT_TypeDef_Index &index, + NanoCLRDataType &dataType) { NATIVE_PROFILE_CLR_CORE(); - CLR_INDEX indexType = md.CrossReference().GetOwner(); - - CLR_INDEX paramIndex = GetTypeDef(indexType)->FirstGenericParam; + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(md.m_assm, md.m_assm->GetTypeSpec(md.genericType->TypeSpec())); - // sanity check for valid parameter index - if (paramIndex != CLR_EmptyIndex) - { - paramIndex += genericParameterPosition; + CLR_RT_SignatureParser::Element element; - index.Set(m_index, paramIndex); + // get type + parser.Advance(element); - return true; - } - else + for (int i = 0; i <= genericParameterPosition; i++) { - index.Clear(); - - return false; + if (parser.Advance(element) != S_OK) + { + return false; + } } + + index = element.Class; + dataType = element.DataType; + + return true; } bool CLR_RT_Assembly::FindGenericParamAtMethodDef( diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 4055d45ba3..1c0ca7a839 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2767,16 +2767,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) if (res.DataType == DATATYPE_VAR) { // Generic parameter in a generic TypeDef - CLR_RT_Assembly *assembly = md.m_assm; - - CLR_RT_GenericParam_Index gpIndex; - assembly->FindGenericParamAtTypeDef(md, res.GenericParamPosition, gpIndex); - - CLR_RT_GenericParam_CrossReference gp = - assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; - - targetClass = gp.Class; - targetDataType = gp.DataType; + md.m_assm->FindGenericParamAtTypeSpec(md, res.GenericParamPosition, targetClass, targetDataType); // isGenericInstance = true; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 88de14a0c3..b052c3b717 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1418,10 +1418,11 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT bool FindTypeSpec(const CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &index); - bool FindGenericParamAtTypeDef( + bool FindGenericParamAtTypeSpec( CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, - CLR_RT_GenericParam_Index &index); + CLR_RT_TypeDef_Index &index, + NanoCLRDataType &dataType); bool FindGenericParamAtMethodDef( CLR_RT_MethodDef_Instance md, CLR_UINT32 genericParameterPosition, From 430423f334b2b61b67215994f825fbea62ae37e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 13:08:06 +0100 Subject: [PATCH 035/168] Multiple code style fixes --- src/CLR/Core/Execution.cpp | 53 +++++++++++++++++++-------------- src/CLR/Debugger/Debugger.cpp | 30 +++++++------------ src/CLR/Include/nanoCLR_Types.h | 41 +++++++++++++------------ 3 files changed, 61 insertions(+), 63 deletions(-) diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 6dc64dfd1c..5e0510bde6 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -77,7 +77,7 @@ HRESULT CLR_RT_ExecutionEngine::ExecutionEngine_Initialize() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) m_scratchPadArray = NULL; // CLR_RT_HeapBlock_Array* m_scratchPadArray; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_APPDOMAINS) m_appDomains.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_appDomains; @@ -218,7 +218,7 @@ void CLR_RT_ExecutionEngine::ExecutionEngine_Cleanup() m_breakpointsNum = 0; CLR_DBG_Debugger::DeleteInstance(); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_PROFILE_NEW) CLR_PRF_Profiler::DeleteInstance(); @@ -395,7 +395,7 @@ void CLR_RT_ExecutionEngine::Relocate() NATIVE_PROFILE_CLR_CORE(); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_scratchPadArray); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(NANOCLR_APPDOMAINS) CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_globalLock); @@ -490,7 +490,7 @@ bool CLR_RT_ExecutionEngine::TryToUnloadAppDomains() SignalEvents(Event_AppDomain); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) Breakpoint_Assemblies_Loaded(); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } return fAnyAppDomainsUnloaded; @@ -589,7 +589,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_EE_DBG_SET_MASK(StateProgramRunning, StateMask); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate::CreateInstance(ref, g_CLR_RT_TypeSystem.m_entryPoint, NULL)); @@ -648,7 +648,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS CLR_RT_ExecutionEngine::ExecutionConstraint_Resume(); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (CLR_EE_IS(Compaction_Pending)) { @@ -1127,7 +1127,7 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) { NANOCLR_SET_AND_LEAVE(CLR_S_NO_READY_THREADS); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_Thread *th = NULL; @@ -1170,7 +1170,7 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) { NANOCLR_SET_AND_LEAVE(CLR_S_NO_READY_THREADS); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } // If there is ready thread - decrease m_executionCounter for this (th) thread. @@ -1496,9 +1496,9 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForClassOrValueTypes( return hb; } -CLR_RT_HeapBlock* CLR_RT_ExecutionEngine::ExtractHeapBlocksForGenericInstance( +CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForGenericInstance( CLR_UINT32 flags, - const CLR_RT_TypeSpec_Index& genericType, + const CLR_RT_TypeSpec_Index &genericType, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); @@ -1509,7 +1509,7 @@ CLR_RT_HeapBlock* CLR_RT_ExecutionEngine::ExtractHeapBlocksForGenericInstance( } flags = flags | CLR_RT_HeapBlock::HB_InitializeToZero; - CLR_RT_HeapBlock* hb = ExtractHeapBlocks(m_heap, DATATYPE_GENERICINST, flags, length); + CLR_RT_HeapBlock *hb = ExtractHeapBlocks(m_heap, DATATYPE_GENERICINST, flags, length); if (hb) { @@ -1874,7 +1874,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( // otherwise the comparison won't be possible sig--; - if(!assembly->FindTypeSpec(sig, typeSpecIndex)) + if (!assembly->FindTypeSpec(sig, typeSpecIndex)) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -1895,10 +1895,11 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( CLR_UINT8 genericParamPosition = *sig++; CLR_RT_GenericParam_Index gpIndex; - + assembly->FindGenericParamAtMethodDef(methodDefInstance, genericParamPosition, gpIndex); - CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + CLR_RT_GenericParam_CrossReference gp = + assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; cls = gp.Class; dt = gp.DataType; @@ -2141,7 +2142,10 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, CLR_UINT3 //--// -HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock& reference, const CLR_RT_TypeDef_Instance& typeDef, const CLR_RT_TypeSpec_Index& genericType) +HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( + CLR_RT_HeapBlock &reference, + const CLR_RT_TypeDef_Instance &typeDef, + const CLR_RT_TypeSpec_Index &genericType) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -2158,13 +2162,16 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock& refer NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock &reference, const CLR_RT_TypeDef_Instance& instance, CLR_RT_TypeSpec_Instance& genericInstance) +HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( + CLR_RT_HeapBlock &reference, + const CLR_RT_TypeDef_Instance &instance, + CLR_RT_TypeSpec_Instance &genericInstance) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const CLR_RECORD_FIELDDEF* target = NULL; - CLR_RT_Assembly* assm = NULL; + const CLR_RECORD_FIELDDEF *target = NULL; + CLR_RT_Assembly *assm = NULL; CLR_RT_TypeDef_Instance instSub = instance; reference.SetObjectReference(NULL); @@ -2172,14 +2179,14 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject(CLR_RT_HeapBlock &refer int clsFields = instance.m_target->InstanceFieldsCount; int totFields = instance.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; - CLR_RT_HeapBlock_GenericInstance* genericInst; + CLR_RT_HeapBlock_GenericInstance *genericInst; - genericInst = (CLR_RT_HeapBlock_GenericInstance*)ExtractHeapBlocksForGenericInstance(0, genericInstance, totFields); + genericInst = + (CLR_RT_HeapBlock_GenericInstance *)ExtractHeapBlocksForGenericInstance(0, genericInstance, totFields); CHECK_ALLOCATION(genericInst); reference.SetObjectReference(genericInst); - // // Initialize field types, from last to first. // @@ -2729,7 +2736,7 @@ void CLR_RT_ExecutionEngine::CheckThreads(CLR_INT64 &timeoutMin, CLR_RT_DblLinke { continue; } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // // Check events. @@ -3742,7 +3749,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_Exception_Intercepted(CLR_RT_StackFrame Breakpoint_System_Event(hit, event, NULL, stack, NULL); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 1c0ca7a839..2f49bb8a85 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2401,10 +2401,9 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) } // try to get value - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL); - return true; } @@ -2423,7 +2422,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) } // try to get value - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); return true; @@ -2829,7 +2828,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); return true; @@ -2942,10 +2941,9 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); - return true; } @@ -2994,10 +2992,9 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); - return true; } @@ -3008,7 +3005,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_GetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_GetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); return true; @@ -3034,10 +3031,9 @@ bool CLR_DBG_Debugger::Debugging_Value_SetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_SetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_SetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - //WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, NULL, 0); + // WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); - return true; } @@ -3095,10 +3091,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); - return true; } @@ -3129,10 +3124,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); - return true; } @@ -3159,10 +3153,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) } } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); - return true; } @@ -3373,10 +3366,9 @@ bool CLR_DBG_Debugger::Debugging_Value_Assign(WP_Message *msg) blkDst = NULL; } - //WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL), false, NULL, 0); return g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL); - return true; } diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index bfe9d7150c..8f4e30e5be 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -556,13 +556,13 @@ inline CLR_UINT32 CLR_UncompressStringToken(CLR_UINT32 tk) inline CLR_UINT32 CLR_UncompressTypeToken(CLR_UINT32 tk) { - static const NanoCLRTable c_lookup[] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec, TBL_GenericParam }; + static const NanoCLRTable c_lookup[] = {TBL_TypeDef, TBL_TypeRef, TBL_TypeSpec, TBL_GenericParam}; return CLR_TkFromType(c_lookup[(tk >> 14)], 0x3fff & tk); } inline CLR_UINT32 CLR_UncompressFieldToken(CLR_UINT32 tk) { - static const NanoCLRTable c_lookup[2] = {TBL_FieldDef, TBL_FieldRef }; + static const NanoCLRTable c_lookup[2] = {TBL_FieldDef, TBL_FieldRef}; return CLR_TkFromType(c_lookup[(tk >> 15)], 0x7fff & tk); } @@ -1053,22 +1053,21 @@ struct CLR_RECORD_ASSEMBLY static CLR_UINT32 ComputeAssemblyHash(const char *name, const CLR_RECORD_VERSION &ver); }; - ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// // size of CLR_RECORDs // these have to match the struct used in MDP // when changing any of these structs need to update the constant in MDP -#define sizeOf_CLR_RECORD_ASSEMBLYREF 10 -#define sizeOf_CLR_RECORD_TYPEREF 6 -#define sizeOf_CLR_RECORD_FIELDREF 6 -#define sizeOf_CLR_RECORD_METHODREF 6 -#define sizeOf_CLR_RECORD_TYPEDEF 27 -#define sizeOf_CLR_RECORD_FIELDDEF 8 -#define sizeOf_CLR_RECORD_METHODDEF 19 -#define sizeOf_CLR_RECORD_TYPESPEC 2 -#define sizeOf_CLR_RECORD_GENERICPARAM 10 -#define sizeOf_CLR_RECORD_METHODSPEC 6 +#define sizeOf_CLR_RECORD_ASSEMBLYREF 10 +#define sizeOf_CLR_RECORD_TYPEREF 6 +#define sizeOf_CLR_RECORD_FIELDREF 6 +#define sizeOf_CLR_RECORD_METHODREF 6 +#define sizeOf_CLR_RECORD_TYPEDEF 27 +#define sizeOf_CLR_RECORD_FIELDDEF 8 +#define sizeOf_CLR_RECORD_METHODDEF 19 +#define sizeOf_CLR_RECORD_TYPESPEC 2 +#define sizeOf_CLR_RECORD_GENERICPARAM 10 +#define sizeOf_CLR_RECORD_METHODSPEC 6 ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// @@ -1110,7 +1109,7 @@ struct CLR_RECORD_FIELDREF /// CLR_STRING Name; - /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing this field + /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing this field CLR_EncodedTypeRefOrSpec encodedOwner; /// @brief Index into TBL_Signatures @@ -1128,7 +1127,7 @@ struct CLR_RECORD_FIELDREF /// NanoCLRTable Owner() const { - static const NanoCLRTable c_lookup[2] = { TBL_TypeRef, TBL_TypeSpec }; + static const NanoCLRTable c_lookup[2] = {TBL_TypeRef, TBL_TypeSpec}; return c_lookup[(encodedOwner >> 15)]; } @@ -1163,7 +1162,7 @@ struct CLR_RECORD_METHODREF /// NanoCLRTable Owner() const { - static const NanoCLRTable c_lookup[2] = { TBL_TypeRef, TBL_TypeSpec }; + static const NanoCLRTable c_lookup[2] = {TBL_TypeRef, TBL_TypeSpec}; return c_lookup[(encodedOwner >> 15)]; } @@ -1329,7 +1328,7 @@ struct CLR_RECORD_TYPEDEF /// NanoCLRTable Extends() const { - static const NanoCLRTable c_lookup[2] = { TBL_TypeDef, TBL_TypeRef }; + static const NanoCLRTable c_lookup[2] = {TBL_TypeDef, TBL_TypeRef}; return c_lookup[(encodedExtends >> 15)]; } @@ -1345,7 +1344,7 @@ struct CLR_RECORD_TYPEDEF /// NanoCLRTable EnclosingType() const { - static const NanoCLRTable c_lookup[2] = { TBL_TypeDef, TBL_TypeRef }; + static const NanoCLRTable c_lookup[2] = {TBL_TypeDef, TBL_TypeRef}; return c_lookup[(encodedEnclosingType >> 15)]; } @@ -1558,9 +1557,9 @@ struct CLR_RECORD_ATTRIBUTE /// CLR_SIG data; - CLR_UINT32 Key() const + CLR_UINT16 Key() const { - return *(CLR_UINT32 *)&OwnerType; + return *(CLR_UINT16 *)&OwnerType; } }; @@ -1627,7 +1626,7 @@ struct CLR_RECORD_METHODSPEC /// NanoCLRTable MethodKind() const { - static const NanoCLRTable c_lookup[2] = { TBL_MethodDef, TBL_MethodRef }; + static const NanoCLRTable c_lookup[2] = {TBL_MethodDef, TBL_MethodRef}; return c_lookup[(encodedMethod >> 15)]; } From ca33f50cf85fe2e49cc4da91f3fdd86ad280cb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 17:32:27 +0100 Subject: [PATCH 036/168] Fix processing TBL_TypeRef in TypeDef_Instance::ResolveToken --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 123b34fd09..b34b1ca550 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -931,7 +931,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( case TBL_TypeRef: m_data = assm->m_pCrossReference_TypeRef[index].Target.m_data; m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = assm->GetTypeDef(Type()); + m_target = m_assm->GetTypeDef(Type()); #if defined(NANOCLR_INSTANCE_NAMES) Name = m_assm->GetString(m_target->Name); From ef9ba1d9a8eac9a8d7159ddf77f47143dad1c704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 18:42:33 +0100 Subject: [PATCH 037/168] Improve error check in parser --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index b34b1ca550..b49abd8f05 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4207,7 +4207,7 @@ bool CLR_RT_Assembly::FindGenericParamAtTypeSpec( for (int i = 0; i <= genericParameterPosition; i++) { - if (parser.Advance(element) != S_OK) + if (FAILED(parser.Advance(element))) { return false; } From 18b5770df3d9d131ef104d09e2fef12073eab0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 18:57:49 +0100 Subject: [PATCH 038/168] Fix TypeDescriptor::InitializeFromReflection - Remove wrong clear for handler class property. --- src/CLR/Core/TypeSystem.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index b49abd8f05..902a70ceca 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1547,9 +1547,6 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromReflection(const CLR_RT_ReflectionD ConvertToArray(); } - m_handlerCls.Clear(); - m_handlerGenericType.Clear(); - NANOCLR_NOCLEANUP(); } From 27a81b8330b023b07a51a92c397da4fb88b1626b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Mar 2023 19:05:51 +0100 Subject: [PATCH 039/168] Add missing parser initializer in InitializeFromTypeSpec --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 902a70ceca..fbed74ace8 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1563,7 +1563,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromTypeSpec(const CLR_RT_TypeSpec_Inde NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - // parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); + parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); NANOCLR_SET_AND_LEAVE(InitializeFromSignatureParser(parser)); From 6dfda8e5cf2d33e1dfab395c18cc796a9793edf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 09:50:52 +0100 Subject: [PATCH 040/168] Rework encoding of indexes in several metadata internal structs - This is now matching the tokens that are used in parsed metadata and dump files. Much easier to cross check. *** STILL: despite all testing there could be edge cases where this is can't be used *** --- src/CLR/Include/nanoCLR_Runtime.h | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index b052c3b717..88041332d7 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -618,14 +618,14 @@ struct CLR_RT_Assembly_Index void Set(CLR_UINT32 indexAssm) { - m_data = indexAssm << 16; + m_data = indexAssm << 24; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } }; @@ -642,14 +642,14 @@ struct CLR_RT_TypeSpec_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) { - m_data = indexAssm << 16 | indexType; + m_data = indexAssm << 24 | indexType; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX TypeSpec() const @@ -671,14 +671,14 @@ struct CLR_RT_TypeDef_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) { - m_data = indexAssm << 16 | indexType; + m_data = indexAssm << 24 | indexType; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX Type() const @@ -700,14 +700,14 @@ struct CLR_RT_MethodSpec_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 16 | indexMethod; + m_data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX Method() const @@ -729,14 +729,14 @@ struct CLR_RT_FieldDef_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexField) { - m_data = indexAssm << 16 | indexField; + m_data = indexAssm << 24 | indexField; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX Field() const @@ -758,14 +758,14 @@ struct CLR_RT_MethodDef_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 16 | indexMethod; + m_data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX Method() const @@ -787,14 +787,14 @@ struct CLR_RT_MethodRef_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 16 | indexMethod; + m_data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_INDEX Method() const @@ -816,14 +816,14 @@ struct CLR_RT_GenericParam_Index void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexGenericParam) { - m_data = indexAssm << 16 | indexGenericParam; + m_data = indexAssm << 24 | indexGenericParam; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 16); + return (CLR_INDEX)(m_data >> 24); } CLR_UINT8 GenericParam() const From 68fc0b5ea3ff86f7b563cef470899ad5bcbac6d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 17:04:36 +0100 Subject: [PATCH 041/168] Global rename step 1 --- .../CorLib/corlib_native_System_AppDomain.cpp | 2 +- .../CorLib/corlib_native_System_DateTime.cpp | 2 +- .../CorLib/corlib_native_System_Object.cpp | 2 +- ...rlib_native_System_Reflection_Assembly.cpp | 44 +- ...lib_native_System_Reflection_FieldInfo.cpp | 6 +- ...ib_native_System_Reflection_MethodBase.cpp | 18 +- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 6 +- ...ve_System_Reflection_RuntimeMethodInfo.cpp | 2 +- .../corlib_native_System_RuntimeType.cpp | 4 +- ...untime_CompilerServices_RuntimeHelpers.cpp | 4 +- .../CorLib/corlib_native_System_TimeSpan.cpp | 2 +- src/CLR/CorLib/corlib_native_System_Type.cpp | 56 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 28 +- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 2 +- .../Core/CLR_RT_HeapBlock_Delegate_List.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp | 10 +- src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp | 2 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 100 +-- src/CLR/Core/Cache.cpp | 26 +- src/CLR/Core/Execution.cpp | 88 +-- src/CLR/Core/GarbageCollector.cpp | 8 +- src/CLR/Core/Interpreter.cpp | 50 +- .../NativeEventDispatcher.cpp | 2 +- .../Core/Serialization/BinaryFormatter.cpp | 24 +- src/CLR/Core/Thread.cpp | 20 +- src/CLR/Core/TypeSystem.cpp | 686 +++++++++--------- src/CLR/Debugger/Debugger.cpp | 68 +- src/CLR/Diagnostics/Info.cpp | 8 +- src/CLR/Diagnostics/Profiler.cpp | 4 +- src/CLR/Include/nanoCLR_Runtime.h | 127 ++-- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 2 +- src/CLR/Include/nanoCLR_Types.h | 106 +-- ...nager_System_Resources_ResourceManager.cpp | 4 +- .../nanoFramework.nanoCLR/CLRStartup.cpp | 8 +- 34 files changed, 762 insertions(+), 761 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp index 1464125153..6ea80c6b21 100644 --- a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp +++ b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp @@ -273,7 +273,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe { CLR_RT_HeapBlock *hbObj; CLR_RT_Assembly_Index index; - index.Set(pASSM->m_index); + index.Set(pASSM->assemblyIndex); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_Assembly)); diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 665f7de388..dabb05ce62 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -245,7 +245,7 @@ CLR_INT64* Library_corlib_native_System_DateTime::GetValuePtr( CLR_RT_HeapBlock& return (CLR_INT64*)&obj->NumericByRef().s8; } - if(dt == DATATYPE_VALUETYPE && obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.m_DateTime.m_data) + if(dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.m_DateTime.data) { return (CLR_INT64*)&obj[ FIELD___ticks ].NumericByRef().s8; } diff --git a/src/CLR/CorLib/corlib_native_System_Object.cpp b/src/CLR/CorLib/corlib_native_System_Object.cpp index 8a55e7a721..f54488e118 100644 --- a/src/CLR/CorLib/corlib_native_System_Object.cpp +++ b/src/CLR/CorLib/corlib_native_System_Object.cpp @@ -47,7 +47,7 @@ HRESULT Library_corlib_native_System_Object::GetType___SystemType(CLR_RT_StackFr { index.m_kind = REFLECTION_TYPE; index.m_levels = 0; - index.m_data.m_type.m_data = desc.m_handlerCls.m_data; + index.m_data.m_type.data = desc.m_handlerCls.data; } else { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index f582ef66cb..670076b192 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -19,7 +19,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, instance)); - assm = instance.m_assm; + assm = instance.assembly; header = assm->m_header; if (hal_strlen_s(assm->m_szName) > NANOCLR_MAX_ASSEMBLY_NAME) @@ -31,10 +31,10 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( buffer, "%s, Version=%d.%d.%d.%d", assm->m_szName, - header->version.iMajorVersion, - header->version.iMinorVersion, - header->version.iBuildNumber, - header->version.iRevisionNumber); + header->version.majorVersion, + header->version.minorVersion, + header->version.buildNumber, + header->version.revisionNumber); stack.SetResult_String(buffer); @@ -61,7 +61,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__ hbRef = &stack.PushValueAndClear(); - if (g_CLR_RT_TypeSystem.FindTypeDef(szClass, assm.m_assm, td)) + if (g_CLR_RT_TypeSystem.FindTypeDef(szClass, assm.assembly, td)) { NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*hbRef, g_CLR_RT_WellKnownTypes.m_TypeStatic)); @@ -84,7 +84,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); { - CLR_RT_Assembly *pASSM = assm.m_assm; + CLR_RT_Assembly *pASSM = assm.assembly; CLR_UINT32 num = pASSM->m_pTablesSize[TBL_TypeDef]; CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; @@ -98,7 +98,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys for (CLR_UINT32 i = 0; i < num; i++, pArray++) { CLR_RT_TypeDef_Index index; - index.Set(pASSM->m_index, i); + index.Set(pASSM->assemblyIndex, i); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_TypeStatic)); @@ -130,13 +130,13 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYR NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); - const CLR_RECORD_VERSION &version = assm.m_assm->m_header->version; + const CLR_RECORD_VERSION &version = assm.assembly->m_header->version; // we do not check for the reference not to be NULL because this is an internal method - stack.Arg1().Dereference()->NumericByRef().s4 = version.iMajorVersion; - stack.Arg2().Dereference()->NumericByRef().s4 = version.iMinorVersion; - stack.Arg3().Dereference()->NumericByRef().s4 = version.iBuildNumber; - stack.Arg4().Dereference()->NumericByRef().s4 = version.iRevisionNumber; + stack.Arg1().Dereference()->NumericByRef().s4 = version.majorVersion; + stack.Arg2().Dereference()->NumericByRef().s4 = version.minorVersion; + stack.Arg3().Dereference()->NumericByRef().s4 = version.buildNumber; + stack.Arg4().Dereference()->NumericByRef().s4 = version.revisionNumber; } NANOCLR_NOCLEANUP(); } @@ -153,7 +153,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); { - CLR_RT_Assembly *pAssm = assm.m_assm; + CLR_RT_Assembly *pAssm = assm.assembly; CLR_RT_HeapBlock &result = stack.PushValue(); NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( @@ -195,7 +195,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetExecutingAssembly__ { CLR_RT_Assembly_Index index; - index.Set(caller->MethodCall().m_assm->m_index); + index.Set(caller->MethodCall().assembly->assemblyIndex); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); @@ -241,10 +241,10 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: { CLR_RECORD_VERSION ver; - ver.iMajorVersion = (CLR_UINT16)maj; - ver.iMinorVersion = (CLR_UINT16)min; - ver.iBuildNumber = (CLR_UINT16)build; - ver.iRevisionNumber = (CLR_UINT16)rev; + ver.majorVersion = (CLR_UINT16)maj; + ver.minorVersion = (CLR_UINT16)min; + ver.buildNumber = (CLR_UINT16)build; + ver.revisionNumber = (CLR_UINT16)rev; assembly = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, &ver, true); FAULT_ON_NULL_HR(assembly, CLR_E_INVALID_PARAMETER); @@ -258,7 +258,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: #if defined(NANOCLR_APPDOMAINS) NANOCLR_CHECK_HRESULT(appDomain->LoadAssembly(assembly)); #endif - index.Set(assembly->m_index); + index.Set(assembly->assemblyIndex); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); @@ -316,7 +316,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.PrepareForExecution()); CLR_RT_MethodDef_Index idx; - idx.Set(assm->m_index, 0); + idx.Set(assm->assemblyIndex, 0); if (assm->FindNextStaticConstructor(idx)) { @@ -333,7 +333,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR } // push assembly index onto the eval stack - stack.PushValueU4(assm->m_index); + stack.PushValueU4(assm->assemblyIndex); } else { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index 0f5595eb31..459d787378 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -25,9 +25,9 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJE NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize( stack, instFD, instTD, obj )); - fd = instFD.m_target; + fd = instFD.target; - if(fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } @@ -100,7 +100,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( CLR_RT_St NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if(instFD.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if(instFD.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { obj = CLR_RT_ExecutionEngine::AccessStaticField( instFD ); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index d697d2e0a6..379fd0b217 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -15,7 +15,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::get_Name___STRING(CL NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.PushValue(), md.m_target->Name, md.m_assm)); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.PushValue(), md.target->name, md.assembly)); NANOCLR_NOCLEANUP(); } @@ -114,7 +114,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); - mdR = md.m_target; + mdR = md.target; if (stack.m_customState == 0) { @@ -130,11 +130,11 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ } else { - if (mdR->RetVal != DATATYPE_VOID) + if (mdR->retValDataType != DATATYPE_VOID) { - if (mdR->RetVal < DATATYPE_I4) + if (mdR->retValDataType < DATATYPE_I4) { - stack.TopValue().ChangeDataType(mdR->RetVal); + stack.TopValue().ChangeDataType(mdR->retValDataType); } NANOCLR_CHECK_HRESULT(stack.TopValue().PerformBoxingIfNeeded()); @@ -175,7 +175,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::CheckFlags( NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); - if ((md.m_target->Flags & mask) == flag) + if ((md.target->flags & mask) == flag) { fRes = true; } @@ -208,11 +208,11 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ CLR_RT_HeapBlock *hbMethodInfo = stack.Arg0().Dereference(); - idx.m_data = hbMethodInfo[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4; + idx.data = hbMethodInfo[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4; inst.InitializeFromIndex(idx); // 1st pass: get the number of parameters - sigParser.Initialize_MethodSignature(inst.m_assm, inst.m_target); + sigParser.Initialize_MethodSignature(inst.assembly, inst.target); // discard return value sigParser.Advance(paramElement); @@ -233,7 +233,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ paramInfoElement = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); // 2nd pass: get the actual type of each parameter - sigParser.Initialize_MethodSignature(inst.m_assm, inst.m_target); + sigParser.Initialize_MethodSignature(inst.assembly, inst.target); // discard return value sigParser.Advance(paramElement); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index 5823d1456f..7cde43f7fc 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -14,7 +14,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STR CLR_RT_FieldDef_Instance fd; if(GetFieldDescriptor( stack, *hbField, fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), fd.m_target->Name, fd.m_assm )); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), fd.target->name, fd.assembly )); NANOCLR_NOCLEANUP(); } @@ -83,8 +83,8 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJ NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize( stack, instFD, instTD, obj )); - fd = instFD.m_target; - if(fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + fd = instFD.target; + if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp index 80b4de18ac..7f6a499b2b 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp @@ -18,7 +18,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnTyp NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor( stack, *hbMeth, md )); - parser.Initialize_MethodSignature( md.m_assm, md.m_target ); + parser.Initialize_MethodSignature( md.assembly, md.target ); NANOCLR_CHECK_HRESULT(desc.InitializeFromSignatureParser( parser )); diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index f49ec9f67c..443ad055d3 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -128,7 +128,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System { // Scan the list of interfaces. CLR_RT_SignatureParser parser; - parser.Initialize_Interfaces(td.m_assm, td.m_target); + parser.Initialize_Interfaces(td.assembly, td.target); CLR_RT_SignatureParser::Element res; // 1. pass count @@ -379,7 +379,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributes( // get the type for the class object // the assembly has to be the instance type CLR_RT_MethodDef_Index md; - md.Set(instanceTypeDef.m_assm->m_index, parser.m_mdIndex.Method()); + md.Set(instanceTypeDef.assembly->assemblyIndex, parser.m_mdIndex.Method()); CLR_RT_MethodDef_Instance mdInst; mdInst.InitializeFromIndex(md); diff --git a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp index 0afbee779c..9e6c9d46bc 100644 --- a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp +++ b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp @@ -24,13 +24,13 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::In NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if((inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || inst.m_target->DefaultValue == CLR_EmptyIndex) + if((inst.target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || inst.target->defaultValue == CLR_EmptyIndex) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } { - CLR_PMETADATA ptrSrc = inst.m_assm->GetSignature( inst.m_target->DefaultValue ); + CLR_PMETADATA ptrSrc = inst.assembly->GetSignature( inst.target->defaultValue ); CLR_UINT32 lenSrc; NANOCLR_READ_UNALIGNED_UINT16( lenSrc, ptrSrc ); CLR_UINT8* ptrDst = array->GetFirstElement(); diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index dcb7c19f41..847de7f515 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -219,7 +219,7 @@ CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_HeapBlock & return (CLR_INT64 *)&obj->NumericByRef().s8; } - if (dt == DATATYPE_VALUETYPE && obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.m_TimeSpan.m_data) + if (dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) { return (CLR_INT64 *)&obj[FIELD___ticks].NumericByRef().s8; } diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index ead93cd160..fb94f89040 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -16,10 +16,10 @@ HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - if (td.m_target->HasValidEnclosingType()) + if (td.target->HasValidEnclosingType()) { CLR_RT_HeapBlock *hbObj; - td.Set(td.Assembly(), td.m_target->EnclosingType()); + td.Set(td.Assembly(), td.target->EnclosingType()); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); hbObj = top.Dereference(); @@ -252,7 +252,7 @@ HRESULT Library_corlib_native_System_Type::get_IsArray___BOOLEAN(CLR_RT_StackFra NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - stack.SetResult_Boolean(td.m_data == g_CLR_RT_WellKnownTypes.m_Array.m_data); + stack.SetResult_Boolean(td.data == g_CLR_RT_WellKnownTypes.m_Array.data); NANOCLR_NOCLEANUP(); } @@ -287,10 +287,10 @@ HRESULT Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType_ FAULT_ON_NULL(verArray); ver = (CLR_INT32 *)verArray->GetFirstElement(); - version.iMajorVersion = ver[0]; - version.iMinorVersion = ver[1]; - version.iBuildNumber = ver[2]; - version.iRevisionNumber = ver[3]; + version.majorVersion = ver[0]; + version.minorVersion = ver[1]; + version.buildNumber = ver[2]; + version.revisionNumber = ver[3]; } else { @@ -371,7 +371,7 @@ HRESULT Library_corlib_native_System_Type::CheckFlags(CLR_RT_StackFrame &stack, NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - if ((td.m_target->Flags & mask) == flag) + if ((td.target->flags & mask) == flag) { fRes = true; } @@ -422,23 +422,23 @@ HRESULT Library_corlib_native_System_Type::GetFields( do { - CLR_RT_Assembly *assm = td.m_assm; - const CLR_RECORD_TYPEDEF *tdR = td.m_target; - const CLR_RECORD_FIELDDEF *fd = td.m_assm->GetFieldDef(tdR->FirstStaticField); - int iTot = tdR->InstanceFieldsCount + tdR->StaticFieldsCount; + CLR_RT_Assembly *assm = td.assembly; + const CLR_RECORD_TYPEDEF *tdR = td.target; + const CLR_RECORD_FIELDDEF *fd = td.assembly->GetFieldDef(tdR->firstStaticField); + int iTot = tdR->instanceFieldsCount + tdR->staticFieldsCount; int i; CLR_RT_FieldDef_Index index; for (i = 0; i < iTot; i++, fd++) { - const char *fieldName = assm->GetString(fd->Name); + const char *fieldName = assm->GetString(fd->name); - if (fd->Flags & CLR_RECORD_FIELDDEF::FD_NoReflection) + if (fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) { continue; } - if (fd->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd->flags & CLR_RECORD_FIELDDEF::FD_Static) { if ((bindingFlags & c_BindingFlags_Static) == 0) continue; @@ -449,7 +449,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( continue; } - if ((fd->Flags & CLR_RECORD_FIELDDEF::FD_Scope_Mask) == CLR_RECORD_FIELDDEF::FD_Scope_Public) + if ((fd->flags & CLR_RECORD_FIELDDEF::FD_Scope_Mask) == CLR_RECORD_FIELDDEF::FD_Scope_Public) { if ((bindingFlags & c_BindingFlags_Public) == 0) continue; @@ -475,7 +475,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( continue; } - index.Set(td.Assembly(), i + tdR->FirstStaticField); + index.Set(td.Assembly(), i + tdR->firstStaticField); if (!fAllMatches) { @@ -559,10 +559,10 @@ HRESULT Library_corlib_native_System_Type::GetMethods( do { - CLR_RT_Assembly *assm = td.m_assm; - const CLR_RECORD_TYPEDEF *tdR = td.m_target; - const CLR_RECORD_METHODDEF *md = assm->GetMethodDef(tdR->FirstMethod); - int iTot = tdR->StaticMethodCount + tdR->InstanceMethodCount + tdR->VirtualMethodCount; + CLR_RT_Assembly *assm = td.assembly; + const CLR_RECORD_TYPEDEF *tdR = td.target; + const CLR_RECORD_METHODDEF *md = assm->GetMethodDef(tdR->firstMethod); + int iTot = tdR->staticMethodCount + tdR->instanceMethodCount + tdR->virtualMethodCount; int i; if (staticInstanceOnly) @@ -583,7 +583,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( for (i = 0; i < iTot; i++, md++) { - if (md->Flags & CLR_RECORD_METHODDEF::MD_Static) + if (md->flags & CLR_RECORD_METHODDEF::MD_Static) { if ((bindingFlags & c_BindingFlags_Static) == 0) { @@ -598,7 +598,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } } - if ((md->Flags & CLR_RECORD_METHODDEF::MD_Scope_Mask) == CLR_RECORD_METHODDEF::MD_Scope_Public) + if ((md->flags & CLR_RECORD_METHODDEF::MD_Scope_Mask) == CLR_RECORD_METHODDEF::MD_Scope_Public) { if ((bindingFlags & c_BindingFlags_Public) == 0) { @@ -615,7 +615,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( //--// - if (md->Flags & CLR_RECORD_METHODDEF::MD_Constructor) + if (md->flags & CLR_RECORD_METHODDEF::MD_Constructor) { if ((bindingFlags & c_BindingFlags_CreateInstance) == 0) { @@ -629,7 +629,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( continue; } - if (szText != NULL && !strcmp(assm->GetString(md->Name), szText) == false) + if (szText != NULL && !strcmp(assm->GetString(md->name), szText) == false) { continue; } @@ -655,7 +655,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } CLR_RT_MethodDef_Index index; - index.Set(td.Assembly(), i + tdR->FirstMethod); + index.Set(td.Assembly(), i + tdR->firstMethod); CLR_RT_MethodDef_Instance inst2; inst2.InitializeFromIndex(index); @@ -672,7 +672,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( // store token for type hbObj[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4 = - index.m_data; + index.data; } iMethod++; @@ -766,7 +766,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( // store token for type hbObj[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4 = - inst.m_data; + inst.data; } } diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 3eae4dd90a..b8e5f5cfe2 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -287,7 +287,7 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_MethodDef_Index &md) m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); m_data.reflection.m_kind = - (inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Constructor) ? REFLECTION_CONSTRUCTOR : REFLECTION_METHOD; + (inst.target->flags & CLR_RECORD_METHODDEF::MD_Constructor) ? REFLECTION_CONSTRUCTOR : REFLECTION_METHOD; m_data.reflection.m_levels = 0; m_data.reflection.m_data.m_method = md; @@ -481,7 +481,7 @@ HRESULT CLR_RT_HeapBlock::LoadFromReference(CLR_RT_HeapBlock &ref) NANOCLR_SET_AND_LEAVE(CLR_E_TYPE_UNAVAILABLE); } - if (inst.m_target->DataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. + if (inst.target->dataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. { obj = &objT[1]; } @@ -839,7 +839,7 @@ HRESULT CLR_RT_HeapBlock::PerformBoxing(const CLR_RT_TypeDef_Instance &cls) } { - NanoCLRDataType dataType = (NanoCLRDataType)cls.m_target->DataType; + NanoCLRDataType dataType = (NanoCLRDataType)cls.target->dataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dataType]; if (dtl.m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType) @@ -926,12 +926,12 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) // Validates the type of data kept by object corresponds to type in cls. // If typedef indexes are the same, then skip and go to assigment of objects. - if (src->ObjectCls().m_data != cls.m_data) + if (src->ObjectCls().data != cls.data) { // The typedef indexes are different, but src and cls may have identical basic data type. // Need to check it. If identical - the unboxing is allowed. // This "if" compares underlying type in object and cls. Should be equal in order to continue. - if (!(src->DataSize() > 1 && (src[1].DataType() == cls.m_target->DataType))) + if (!(src->DataSize() > 1 && (src[1].DataType() == cls.target->dataType))) { // No luck. The types in src object and specified by cls are different. Need to throw exceptioin. NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); @@ -946,14 +946,14 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) CLR_RT_TypeDef_Instance &inst = srcTypeDes.m_handlerCls; - if (inst.m_data == g_CLR_RT_WellKnownTypes.m_Guid.m_data) + if (inst.data == g_CLR_RT_WellKnownTypes.m_Guid.data) { // can't cast GUID class to anything else except another GUID NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); } } - if (cls.m_target->DataType == DATATYPE_VALUETYPE) + if (cls.target->dataType == DATATYPE_VALUETYPE) { NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.CloneObject(*this, *this)); @@ -963,7 +963,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) { this->Assign(src[1]); - this->ChangeDataType(cls.m_target->DataType); + this->ChangeDataType(cls.target->dataType); } NANOCLR_NOCLEANUP(); @@ -988,7 +988,7 @@ CLR_RT_HeapBlock *CLR_RT_HeapBlock::FixBoxingReference() if (!inst.InitializeFromIndex(src->ObjectCls())) return NULL; - if (inst.m_target->DataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. + if (inst.target->dataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. { return &src[1]; } @@ -1149,7 +1149,7 @@ CLR_UINT32 CLR_RT_HeapBlock::GetHashCode(CLR_RT_HeapBlock *ptr, bool fRecurse, C // DATATYPE_I8 // DATATYPE_U8 // DATATYPE_R8 - if (fRecurse && cls.m_target->DataType <= DATATYPE_R8) + if (fRecurse && cls.target->dataType <= DATATYPE_R8) { // pass the 1st field which is the one holding the actual value crc = GetHashCode(&ptr[CLR_RT_HeapBlock::HB_Object_Fields_Offset], false, crc); @@ -1261,7 +1261,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( switch (leftDataType) { case DATATYPE_VALUETYPE: - if (pArgLeft.ObjectCls().m_data == pArgRight.ObjectCls().m_data) + if (pArgLeft.ObjectCls().data == pArgRight.ObjectCls().data) { const CLR_RT_HeapBlock *objLeft = &pArgLeft; const CLR_RT_HeapBlock *objRight = &pArgRight; @@ -1375,7 +1375,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( { } - if (inst.m_target->DataType != DATATYPE_VALUETYPE) + if (inst.target->dataType != DATATYPE_VALUETYPE) { // boxed primitive or enum type obj = &rightObj[1]; @@ -1612,8 +1612,8 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C { CLR_RT_HeapBlock_Delegate *leftDlg = (CLR_RT_HeapBlock_Delegate *)&left; CLR_RT_HeapBlock_Delegate *rightDlg = (CLR_RT_HeapBlock_Delegate *)&right; - CLR_UINT32 leftData = leftDlg->DelegateFtn().m_data; - CLR_UINT32 rightData = rightDlg->DelegateFtn().m_data; + CLR_UINT32 leftData = leftDlg->DelegateFtn().data; + CLR_UINT32 rightData = rightDlg->DelegateFtn().data; if (leftData > rightData) return 1; diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index 6b40982679..40b3b1e9e2 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -44,7 +44,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( } else { - NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.target->dataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dt]; if (dtl.m_sizeInBytes == CLR_RT_DataTypeLookup::c_NA) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp index aad6c405b8..16c70646b9 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp @@ -145,7 +145,7 @@ HRESULT CLR_RT_HeapBlock_Delegate_List::Change( CLR_RT_HeapBlock& reference, CLR CLR_RT_HeapBlock_Delegate* ptr = newDlgs->DereferenceDelegate(); if(ptr) { - if( ptr->DelegateFtn().m_data == dlg->DelegateFtn().m_data && + if( ptr->DelegateFtn().data == dlg->DelegateFtn().data && ptr->m_object.Dereference() == dlg->m_object.Dereference() ) { break; diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp index 1056ccda57..fcadfa96f8 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Finalizer.cpp @@ -16,15 +16,15 @@ HRESULT CLR_RT_HeapBlock_Finalizer::CreateInstance(CLR_RT_HeapBlock *object, con do { - if (inst2.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) + if (inst2.target->flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) { - int pos = inst2.m_target->FirstMethod; - int end = pos + inst2.m_target->VirtualMethodCount + inst2.m_target->InstanceMethodCount; - const CLR_RECORD_METHODDEF *md = inst2.m_assm->GetMethodDef(pos); + int pos = inst2.target->firstMethod; + int end = pos + inst2.target->virtualMethodCount + inst2.target->instanceMethodCount; + const CLR_RECORD_METHODDEF *md = inst2.assembly->GetMethodDef(pos); for (; pos < end; pos++, md++) { - if (md->Flags & CLR_RECORD_METHODDEF::MD_Finalizer) + if (md->flags & CLR_RECORD_METHODDEF::MD_Finalizer) break; } diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp index 940161d062..1c8333b95e 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp @@ -113,7 +113,7 @@ void CLR_RT_HeapBlock_Timer::SpawnTimer(CLR_RT_Thread *th) CLR_RT_StackFrame *stack = th->FirstFrame(); if (stack->Next() != NULL) { - int ArgumentsCount = stack->m_call.m_target->ArgumentsCount; + int ArgumentsCount = stack->m_call.target->argumentsCount; if (ArgumentsCount > 0) { stack->m_arguments[ArgumentsCount - 1].Assign(*state); diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index 33089a900d..f63e536613 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -31,12 +31,12 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan } #endif - assm = callInstPtr->m_assm; - md = callInstPtr->m_target; + assm = callInstPtr->assembly; + md = callInstPtr->target; - sizeLocals = md->LocalsCount; + sizeLocals = md->localsCount; #ifndef NANOCLR_NO_IL_INLINE - sizeEvalStack = md->LengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod + 1; + sizeEvalStack = md->lengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod + 1; #else sizeEvalStack = md->LengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod; #endif @@ -136,7 +136,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan stack->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); #endif - if (md->Flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) // Special case for delegate calls. + if (md->flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) // Special case for delegate calls. { stack->m_nativeMethod = (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_DelegateInvoke; @@ -155,11 +155,11 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan { stack->m_nativeMethod = (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_IL; - if (md->RVA == CLR_EmptyIndex) + if (md->rva == CLR_EmptyIndex) NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); stack->m_flags = CLR_RT_StackFrame::c_MethodKind_Interpreted; - stack->m_IPstart = assm->GetByteCode(md->RVA); + stack->m_IPstart = assm->GetByteCode(md->rva); stack->m_IP = stack->m_IPstart; } @@ -180,13 +180,13 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan #endif } - if (md->LocalsCount) + if (md->localsCount) { NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeLocals(stack->m_locals, callInst)); } { - CLR_UINT32 syncFlags = md->Flags & (md->MD_Synchronized | md->MD_GloballySynchronized); + CLR_UINT32 syncFlags = md->flags & (md->MD_Synchronized | md->MD_GloballySynchronized); if (syncFlags) { @@ -251,7 +251,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan // // Everything is set up correctly, pop the operands. // - stack->m_arguments = &caller->m_evalStackPos[-md->ArgumentsCount]; + stack->m_arguments = &caller->m_evalStackPos[-md->argumentsCount]; caller->m_evalStackPos = stack->m_arguments; @@ -280,26 +280,26 @@ bool CLR_RT_StackFrame::PushInline( CLR_RT_MethodDef_Instance &calleeInst, CLR_RT_HeapBlock *pThis) { - const CLR_RECORD_METHODDEF *md = calleeInst.m_target; + const CLR_RECORD_METHODDEF *md = calleeInst.target; if ((m_inlineFrame != NULL) || // We can only support one inline at a time per stack call - (m_evalStackEnd - evalPos) <= (md->ArgumentsCount + md->LocalsCount + md->LengthEvalStack + + (m_evalStackEnd - evalPos) <= (md->argumentsCount + md->localsCount + md->lengthEvalStack + 2) || // We must have enough space on the current stack for the inline method (m_nativeMethod != (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_IL) || // We only support IL inlining - (md->Flags & ~CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) >= + (md->flags & ~CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) >= CLR_RECORD_METHODDEF::MD_Constructor || // Do not try to inline constructors, etc because they require // special processing - (0 != (md->Flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing - (calleeInst.m_assm->m_nativeCode != NULL && (calleeInst.m_assm->m_nativeCode[calleeInst.Method()] != + (0 != (md->flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing + (calleeInst.assembly->m_nativeCode != NULL && (calleeInst.assembly->m_nativeCode[calleeInst.Method()] != NULL)) || // Make sure the callee is not an internal method - (md->RVA == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method + (md->rva == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method !g_CLR_RT_EventCache.GetInlineFrameBuffer( &m_inlineFrame)) // Make sure we have an extra slot in the inline cache { return false; } - CLR_PMETADATA ipTmp = calleeInst.m_assm->GetByteCode(md->RVA); + CLR_PMETADATA ipTmp = calleeInst.assembly->GetByteCode(md->rva); #if defined(PLATFORM_WINDOWS_EMULATOR) if (s_CLR_RT_fTrace_SimulateSpeed > c_CLR_RT_Trace_None) @@ -323,11 +323,11 @@ bool CLR_RT_StackFrame::PushInline( // increment the evalPos pointer so that we don't corrupt the real stack evalPos++; - assm = calleeInst.m_assm; + assm = calleeInst.assembly; ip = ipTmp; m_arguments = pThis; - m_locals = &m_evalStackEnd[-md->LocalsCount]; + m_locals = &m_evalStackEnd[-md->localsCount]; m_call = calleeInst; m_evalStackEnd = m_locals; m_evalStack = evalPos; @@ -335,14 +335,14 @@ bool CLR_RT_StackFrame::PushInline( m_IPstart = ip; m_IP = ip; - if (md->LocalsCount) + if (md->localsCount) { g_CLR_RT_ExecutionEngine.InitializeLocals(m_locals, calleeInst); } m_flags |= CLR_RT_StackFrame::c_MethodKind_Inlined; - if (md->RetVal != DATATYPE_VOID) + if (md->retValDataType != DATATYPE_VOID) { m_flags |= CLR_RT_StackFrame::c_InlineMethodHasReturnValue; } @@ -403,7 +403,7 @@ void CLR_RT_StackFrame::RestoreFromInlineStack() { m_arguments = m_inlineFrame->m_frame.m_args; m_locals = m_inlineFrame->m_frame.m_locals; - m_evalStackEnd += m_call.m_target->LocalsCount; + m_evalStackEnd += m_call.target->localsCount; m_call = m_inlineFrame->m_frame.m_call; m_IP = m_inlineFrame->m_frame.m_IP; m_IPstart = m_inlineFrame->m_frame.m_IPStart; @@ -420,7 +420,7 @@ void CLR_RT_StackFrame::RestoreStack(CLR_RT_InlineFrame &frame) m_IPstart = frame.m_IPStart; m_evalStack = frame.m_evalStack; m_evalStackPos = frame.m_evalPos; - m_evalStackEnd -= m_call.m_target->LocalsCount; + m_evalStackEnd -= m_call.target->localsCount; } void CLR_RT_StackFrame::SaveStack(CLR_RT_InlineFrame &frame) @@ -571,16 +571,16 @@ HRESULT CLR_RT_StackFrame::MakeCall( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const CLR_RECORD_METHODDEF *mdR = md.m_target; - bool fStatic = (mdR->Flags & CLR_RECORD_METHODDEF::MD_Static) != 0; - int ArgumentsCount = mdR->ArgumentsCount; + const CLR_RECORD_METHODDEF *mdR = md.target; + bool fStatic = (mdR->flags & CLR_RECORD_METHODDEF::MD_Static) != 0; + int ArgumentsCount = mdR->argumentsCount; int argsOffset = 0; CLR_RT_StackFrame *stackSub; CLR_RT_HeapBlock tmp; tmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(tmp); - if (mdR->Flags & CLR_RECORD_METHODDEF::MD_Constructor) + if (mdR->flags & CLR_RECORD_METHODDEF::MD_Constructor) { CLR_RT_TypeDef_Instance owner; owner.InitializeFromMethod(md); @@ -612,7 +612,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( // // In case the invoked method is abstract or virtual, resolve it to the correct method implementation. // - if (mdR->Flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual)) + if (mdR->flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual)) { CLR_RT_TypeDef_Index cls; CLR_RT_MethodDef_Index mdReal; @@ -629,7 +629,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( md.InitializeFromIndex(mdReal); - mdR = md.m_target; + mdR = md.target; } #if defined(NANOCLR_APPDOMAINS) @@ -645,7 +645,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( else #endif { - NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(m_owningThread, md, md.m_target->ArgumentsCount)); + NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(m_owningThread, md, md.target->argumentsCount)); stackSub = m_owningThread->CurrentFrame(); @@ -672,8 +672,8 @@ HRESULT CLR_RT_StackFrame::FixCall() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const CLR_RECORD_METHODDEF *target = m_call.m_target; - CLR_UINT8 ArgumentsCount = target->ArgumentsCount; + const CLR_RECORD_METHODDEF *target = m_call.target; + CLR_UINT8 ArgumentsCount = target->argumentsCount; // // The copy of ValueTypes is delayed as much as possible. @@ -708,7 +708,7 @@ HRESULT CLR_RT_StackFrame::FixCall() { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(res.Class); - NanoCLRDataType dtT = (NanoCLRDataType)inst.m_target->DataType; + NanoCLRDataType dtT = (NanoCLRDataType)inst.target->dataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dtT]; if (dtl.m_flags & (CLR_RT_DataTypeLookup::c_OptimizedValueType | CLR_RT_DataTypeLookup::c_ValueType)) @@ -721,7 +721,7 @@ HRESULT CLR_RT_StackFrame::FixCall() // It's a boxed primitive/enum type. args->Assign(*value); } - else if (args->Dereference()->ObjectCls().m_data == res.Class.m_data) + else if (args->Dereference()->ObjectCls().data == res.Class.data) { if (args->Dereference()->IsBoxed()) { @@ -787,7 +787,7 @@ HRESULT CLR_RT_StackFrame::HandleSynchronized(bool fAcquire, bool fGlobal) *ppGlobalLock = obj->Dereference(); } } - else if (m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) + else if (m_call.target->flags & CLR_RECORD_METHODDEF::MD_Static) { CLR_RT_TypeDef_Index index; @@ -937,7 +937,7 @@ void CLR_RT_StackFrame::Pop() // // Push the return, if any. // - if (m_call.m_target->RetVal != DATATYPE_VOID) + if (m_call.target->retValDataType != DATATYPE_VOID) { if (m_owningThread->m_currentException.Dereference() == NULL) { @@ -970,7 +970,7 @@ void CLR_RT_StackFrame::Pop() { dst->SetObjectReference(exception); } - else if (m_call.m_target->RetVal != DATATYPE_VOID) + else if (m_call.target->retValDataType != DATATYPE_VOID) { CLR_RT_SignatureParser sig; sig.Initialize_MethodSignature(&this->m_call); @@ -987,7 +987,7 @@ void CLR_RT_StackFrame::Pop() if (c_CLR_RT_DataTypeLookup[this->DataType()].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType || - desc.m_handlerCls.m_target->IsEnum()) + desc.m_handlerCls.target->IsEnum()) { if (FAILED(dst->PerformBoxing(desc.m_handlerCls))) { @@ -1245,39 +1245,39 @@ void CLR_RT_StackFrame::Relocate() #ifndef NANOCLR_NO_IL_INLINE if (m_inlineFrame) { - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_call.m_assm); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_call.m_target); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_call.assembly); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_call.target); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_IPStart); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_inlineFrame->m_frame.m_IP); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.m_assm); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.m_target); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.assembly); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.target); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_nativeMethod); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IPstart); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IP); CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_args, - m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount); + m_inlineFrame->m_frame.m_call.target->argumentsCount); CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_locals, - m_inlineFrame->m_frame.m_call.m_target->LocalsCount); + m_inlineFrame->m_frame.m_call.target->localsCount); CLR_RT_GarbageCollector::Heap_Relocate( m_inlineFrame->m_frame.m_evalStack, (int)(m_evalStackPos - m_inlineFrame->m_frame.m_evalStack)); - CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->LocalsCount); + CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.target->localsCount); } else #endif { - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.m_assm); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.m_target); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.assembly); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_call.target); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_nativeMethod); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IPstart); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_IP); - CLR_RT_GarbageCollector::Heap_Relocate(m_arguments, m_call.m_target->ArgumentsCount); - CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.m_target->LocalsCount); + CLR_RT_GarbageCollector::Heap_Relocate(m_arguments, m_call.target->argumentsCount); + CLR_RT_GarbageCollector::Heap_Relocate(m_locals, m_call.target->localsCount); CLR_RT_GarbageCollector::Heap_Relocate(m_evalStack, TopValuePosition()); } } @@ -1289,7 +1289,7 @@ HRESULT CLR_RT_StackFrame::NotImplementedStub() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (m_call.m_target->RetVal != DATATYPE_VOID) + if (m_call.target->retValDataType != DATATYPE_VOID) { SetResult_I4(0); } diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index 5f285b83f5..48fbc7ce51 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -229,8 +229,8 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( Payload::Key key; CLR_UINT32 index; CLR_UINT32 indexHead; - CLR_UINT32 clsData = cls.m_data; - CLR_UINT32 mdVirtualData = mdVirtual.m_data; + CLR_UINT32 clsData = cls.data; + CLR_UINT32 mdVirtualData = mdVirtual.data; #if defined(VIRTUAL_DEVICE) bool fVerify = false; @@ -245,9 +245,9 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( // // Shortcut for terminal virtual methods. // - if (clsData == instCLS.m_data) + if (clsData == instCLS.data) { - if ((instMD.m_target->Flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) + if ((instMD.target->flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) { md = mdVirtual; @@ -269,9 +269,9 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( { CLR_Debug::Printf( "INTERNAL ERROR: Shortcut for terminal virtual methods failed: CLS:%08x:%08x => %08x\r\n", - cls.m_data, - mdVirtual.m_data, - md.m_data); + cls.data, + mdVirtual.data, + md.data); ::DebugBreak(); } #endif @@ -287,14 +287,14 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( { CLR_Debug::Printf( "INTERNAL ERROR: Shortcut for terminal virtual methods failed: CLS:%08x:%08x\r\n", - cls.m_data, - mdVirtual.m_data); + cls.data, + mdVirtual.data); ::DebugBreak(); } #endif - key.m_mdVirtual.m_data = mdVirtualData; - key.m_cls.m_data = clsData; + key.m_mdVirtual.data = mdVirtualData; + key.m_cls.data = clsData; indexHead = (SUPPORT_ComputeCRC(&key, sizeof(key), 0) % (LinkArraySize() - PayloadArraySize())) + PayloadArraySize(); @@ -305,9 +305,9 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( { Payload &res = m_payloads[index]; - if (res.m_key.m_mdVirtual.m_data != mdVirtualData) + if (res.m_key.m_mdVirtual.data != mdVirtualData) continue; - if (res.m_key.m_cls.m_data != clsData) + if (res.m_key.m_cls.data != clsData) continue; md = res.m_md; diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 5e0510bde6..01103f6c41 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -602,7 +602,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS { CLR_RT_StackFrame *stack = thMain->CurrentFrame(); - if (stack->m_call.m_target->ArgumentsCount > 0) + if (stack->m_call.target->argumentsCount > 0) { // Main entrypoint takes an optional String[] parameter. // Set the arg to NULL, if that's the case. @@ -888,7 +888,7 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( _ASSERTE(m_cctorThread != NULL); _ASSERTE(m_cctorThread->CanThreadBeReused()); - indexNext.m_data = index.m_data; + indexNext.data = index.data; _ASSERTE(assembly != NULL); @@ -938,9 +938,9 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread // This is ok if index is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor // which will fail - index.m_data++; + index.data++; - if (SpawnStaticConstructorHelper(inst.m_assm, index)) + if (SpawnStaticConstructorHelper(inst.assembly, index)) return; } @@ -951,7 +951,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread if ((pASSM->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) { CLR_RT_MethodDef_Index index; - index.Set(pASSM->m_index, 0); + index.Set(pASSM->assemblyIndex, 0); bool fDepedenciesRun = true; // Check that all dependent assemblies have had static constructors run. @@ -1438,7 +1438,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForArray( const CLR_RT_ReflectionDef_Index &reflex) { NATIVE_PROFILE_CLR_CORE(); - NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.target->dataType; const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[dt]; CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Array) + length * dtl.m_sizeInBytes); @@ -1712,7 +1712,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe NATIVE_PROFILE_CLR_CORE(); CLR_RT_FieldDef_Instance inst; - if (inst.InitializeFromIndex(fd) && inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if (inst.InitializeFromIndex(fd) && inst.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { #if defined(NANOCLR_APPDOMAINS) { @@ -1725,7 +1725,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe } } #else - return &inst.m_assm->m_pStaticFields[inst.CrossReference().m_offset]; + return &inst.assembly->m_pStaticFields[inst.CrossReference().m_offset]; #endif } @@ -1761,9 +1761,9 @@ HRESULT CLR_RT_ExecutionEngine::InitializeReference(CLR_RT_HeapBlock &ref, CLR_R CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(res.Class); - if ((inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) + if ((inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { - dt = (NanoCLRDataType)inst.m_target->DataType; + dt = (NanoCLRDataType)inst.target->dataType; } else { @@ -1816,10 +1816,10 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( NANOCLR_HEADER(); - CLR_RT_Assembly *assembly = methodDefInstance.m_assm; - const CLR_RECORD_METHODDEF *methodDef = methodDefInstance.m_target; - CLR_PMETADATA sig = assembly->GetSignature(methodDef->Locals); - CLR_UINT32 count = methodDef->LocalsCount; + CLR_RT_Assembly *assembly = methodDefInstance.assembly; + const CLR_RECORD_METHODDEF *methodDef = methodDefInstance.target; + CLR_PMETADATA sig = assembly->GetSignature(methodDef->locals); + CLR_UINT32 count = methodDef->localsCount; bool fZeroed = false; while (count) @@ -1859,7 +1859,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( break; case TBL_TypeDef: - cls.Set(assembly->m_index, index); + cls.Set(assembly->assemblyIndex, index); break; default: @@ -1884,7 +1884,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( { CLR_INT8 genericParamPosition = *sig++; - methodDefInstance.m_assm + methodDefInstance.assembly ->FindGenericParamAtTypeSpec(methodDefInstance, genericParamPosition, cls, dt); goto done; @@ -1941,9 +1941,9 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(cls); - if (inst.m_target->DataType != DATATYPE_VALUETYPE) + if (inst.target->dataType != DATATYPE_VALUETYPE) { - locals->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(inst.m_target->DataType, CLR_RT_HeapBlock::HB_Alive, 1)); + locals->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(inst.target->dataType, CLR_RT_HeapBlock::HB_Alive, 1)); locals->ClearData(); } else @@ -2019,12 +2019,12 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR reference.SetObjectReference(NULL); - NanoCLRDataType dt = (NanoCLRDataType)inst.m_target->DataType; + NanoCLRDataType dt = (NanoCLRDataType)inst.target->dataType; // // You cannot create an array this way. // - if (inst.m_data == g_CLR_RT_WellKnownTypes.m_Array.m_data) + if (inst.data == g_CLR_RT_WellKnownTypes.m_Array.data) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2061,7 +2061,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR case DATATYPE_CLASS: case DATATYPE_VALUETYPE: { - int clsFields = inst.m_target->InstanceFieldsCount; + int clsFields = inst.target->instanceFieldsCount; int totFields = inst.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; CLR_RT_HeapBlock *obj = ExtractHeapBlocksForClassOrValueTypes(dt, 0, inst, totFields); CHECK_ALLOCATION(obj); @@ -2089,14 +2089,14 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR if (instSub.SwitchToParent() == false) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); - clsFields = instSub.m_target->InstanceFieldsCount; + clsFields = instSub.target->instanceFieldsCount; target = NULL; } if (target == NULL) { - assm = instSub.m_assm; - target = assm->GetFieldDef(instSub.m_target->FirstInstanceField + clsFields); + assm = instSub.assembly; + target = assm->GetFieldDef(instSub.target->firstInstanceField + clsFields); } obj--; @@ -2176,7 +2176,7 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( reference.SetObjectReference(NULL); - int clsFields = instance.m_target->InstanceFieldsCount; + int clsFields = instance.target->instanceFieldsCount; int totFields = instance.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; CLR_RT_HeapBlock_GenericInstance *genericInst; @@ -2203,14 +2203,14 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - clsFields = instSub.m_target->InstanceFieldsCount; + clsFields = instSub.target->instanceFieldsCount; target = NULL; } if (target == NULL) { - assm = instSub.m_assm; - target = assm->GetFieldDef(instSub.m_target->FirstInstanceField + clsFields); + assm = instSub.assembly; + target = assm->GetFieldDef(instSub.target->firstInstanceField + clsFields); } genericInst--; @@ -2295,7 +2295,7 @@ HRESULT CLR_RT_ExecutionEngine::CopyValueType(CLR_RT_HeapBlock *destination, con if (destination != source) { const CLR_RT_TypeDef_Index &cls = source->ObjectCls(); - if (cls.m_data == destination->ObjectCls().m_data) + if (cls.data == destination->ObjectCls().data) { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(cls); @@ -2360,7 +2360,7 @@ HRESULT CLR_RT_ExecutionEngine::FindFieldDef( do { - if (local.m_assm->FindFieldDef(local.m_target, szText, NULL, 0, res)) + if (local.assembly->FindFieldDef(local.target, szText, NULL, 0, res)) NANOCLR_SET_AND_LEAVE(S_OK); } while (local.SwitchToParent()); @@ -2411,7 +2411,7 @@ HRESULT CLR_RT_ExecutionEngine::FindField(CLR_RT_HeapBlock &reference, const cha inst.InitializeFromIndex(index); - if (inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if (inst.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { res = CLR_RT_ExecutionEngine::AccessStaticField(index); if (res == NULL) @@ -2980,23 +2980,23 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Casting from [] to System.Array or System.Object is always allowed. // - if (inst.m_data == g_CLR_RT_WellKnownTypes.m_Array.m_data || - inst.m_data == g_CLR_RT_WellKnownTypes.m_Object.m_data || - inst.m_data == g_CLR_RT_WellKnownTypes.m_IList.m_data || - inst.m_data == g_CLR_RT_WellKnownTypes.m_ICloneable.m_data) + if (inst.data == g_CLR_RT_WellKnownTypes.m_Array.data || + inst.data == g_CLR_RT_WellKnownTypes.m_Object.data || + inst.data == g_CLR_RT_WellKnownTypes.m_IList.data || + inst.data == g_CLR_RT_WellKnownTypes.m_ICloneable.data) { return true; } } - if (inst.m_target->DataType != instTarget.m_target->DataType) + if (inst.target->dataType != instTarget.target->dataType) { return false; } } - CLR_UINT32 semantic = (inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); - CLR_UINT32 semanticTarget = (instTarget.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); + CLR_UINT32 semantic = (inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); + CLR_UINT32 semanticTarget = (instTarget.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask); if (fArray) { @@ -3008,7 +3008,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( do { - if (inst.m_data == instTarget.m_data) + if (inst.data == instTarget.data) { return true; } @@ -3016,10 +3016,10 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Scan the list of interfaces. // - if (semanticTarget == CLR_RECORD_TYPEDEF::TD_Semantics_Interface && inst.m_target->Interfaces != CLR_EmptyIndex) + if (semanticTarget == CLR_RECORD_TYPEDEF::TD_Semantics_Interface && inst.target->interfaces != CLR_EmptyIndex) { CLR_RT_SignatureParser parser; - parser.Initialize_Interfaces(inst.m_assm, inst.m_target); + parser.Initialize_Interfaces(inst.assembly, inst.target); CLR_RT_SignatureParser::Element res; while (parser.Available() > 0) @@ -3027,7 +3027,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( if (FAILED(parser.Advance(res))) break; - if (res.Class.m_data == instTarget.m_data) + if (res.Class.data == instTarget.data) { return true; } @@ -3086,7 +3086,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Shortcut for identity. // - if (desc.m_handlerCls.m_data == clsTarget.m_data) + if (desc.m_handlerCls.data == clsTarget.data) return true; if (FAILED(descTarget.InitializeFromType(clsTarget))) @@ -3679,7 +3679,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Hard(CLR_RT_StackFrame *stack if (def.m_pid == stack->m_owningThread->m_pid || def.m_pid == CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_PID_ANY) { - if (def.m_md.m_data == stack->m_call.m_data && def.m_IP == IPoffset) + if (def.m_md.data == stack->m_call.data && def.m_IP == IPoffset) { CLR_DBG_Commands::Debugging_Execution_BreakpointDef hit = def; diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index 8cb09d9658..0b7dbd05a8 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -723,17 +723,17 @@ void CLR_RT_GarbageCollector::Thread_Mark(CLR_RT_Thread *th) { CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_args, - stack->m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount); + stack->m_inlineFrame->m_frame.m_call.target->argumentsCount); CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_locals, - stack->m_inlineFrame->m_frame.m_call.m_target->LocalsCount); + stack->m_inlineFrame->m_frame.m_call.target->localsCount); CheckMultipleBlocks( stack->m_inlineFrame->m_frame.m_evalStack, (int)(stack->m_inlineFrame->m_frame.m_evalPos - stack->m_inlineFrame->m_frame.m_evalStack)); } #endif - CheckMultipleBlocks(stack->m_arguments, stack->m_call.m_target->ArgumentsCount); - CheckMultipleBlocks(stack->m_locals, stack->m_call.m_target->LocalsCount); + CheckMultipleBlocks(stack->m_arguments, stack->m_call.target->argumentsCount); + CheckMultipleBlocks(stack->m_locals, stack->m_call.target->localsCount); CheckMultipleBlocks(stack->m_evalStack, stack->TopValuePosition()); } NANOCLR_FOREACH_NODE_END(); diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 19733ed6b2..4df4edc3b5 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -424,7 +424,7 @@ bool CLR_RT_Thread::FindEhBlock( bool onlyFinallys) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_Assembly *assm = stack->m_call.m_assm; + CLR_RT_Assembly *assm = stack->m_call.assembly; CLR_RT_ExceptionHandler *ptrEhExt = NULL; const CLR_RECORD_EH *ptrEh = NULL; CLR_UINT32 numEh = 0; @@ -449,7 +449,7 @@ bool CLR_RT_Thread::FindEhBlock( } #endif - if (stack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (stack->m_call.target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { switch (stack->m_flags & CLR_RT_StackFrame::c_MethodKind_Mask) { @@ -933,7 +933,7 @@ HRESULT CLR_RT_Thread::Execute_DelegateInvoke(CLR_RT_StackFrame &stackArg) dlg = ptr->DereferenceDelegate(); FAULT_ON_NULL(dlg); - md = stack->m_call.m_target; + md = stack->m_call.target; switch (dlg->DataType()) { @@ -978,13 +978,13 @@ HRESULT CLR_RT_Thread::Execute_DelegateInvoke(CLR_RT_StackFrame &stackArg) CLR_RT_ProtectFromGC gc(*dlg); CLR_RT_MethodDef_Instance inst; inst.InitializeFromIndex(dlg->DelegateFtn()); - bool fStaticMethod = (inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) != 0; + bool fStaticMethod = (inst.target->flags & CLR_RECORD_METHODDEF::MD_Static) != 0; NANOCLR_CHECK_HRESULT(stack->MakeCall( inst, fStaticMethod ? NULL : &dlg->m_object, &stack->m_arguments[1], - md->ArgumentsCount - 1)); + md->argumentsCount - 1)); } NANOCLR_NOCLEANUP(); @@ -998,7 +998,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_StackFrame *stack = &stackArg; CLR_RT_Thread *th = stack->m_owningThread; - CLR_RT_Assembly *assm = stack->m_call.m_assm; + CLR_RT_Assembly *assm = stack->m_call.assembly; CLR_RT_HeapBlock *evalPos; CLR_PMETADATA ip; bool fCondition; @@ -2108,10 +2108,10 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) bool fAppDomainTransition = false; #endif - pThis = &evalPos[1 - calleeInst.m_target->ArgumentsCount]; // Point to the first arg, 'this' if an + pThis = &evalPos[1 - calleeInst.target->argumentsCount]; // Point to the first arg, 'this' if an // instance method - if (calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) + if (calleeInst.target->flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) { CLR_RT_HeapBlock_Delegate *dlg = pThis->DereferenceDelegate(); FAULT_ON_NULL(dlg); @@ -2120,7 +2120,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { calleeInst.InitializeFromIndex(dlg->DelegateFtn()); - if ((calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((calleeInst.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { pThis->Assign(dlg->m_object); @@ -2133,7 +2133,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) memmove( &pThis[0], &pThis[1], - calleeInst.m_target->ArgumentsCount * sizeof(CLR_RT_HeapBlock)); + calleeInst.target->argumentsCount * sizeof(CLR_RT_HeapBlock)); evalPos--; } @@ -2149,7 +2149,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { CLR_RT_MethodDef_Index calleeReal; - if ((calleeInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((calleeInst.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { // Instance method, pThis[ 0 ] is valid @@ -2168,7 +2168,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // instance method isn't virtual we don't need to do the more expensive virtual method // lookup. if (op == CEE_CALLVIRT && - (calleeInst.m_target->Flags & + (calleeInst.target->flags & (CLR_RECORD_METHODDEF::MD_Abstract | CLR_RECORD_METHODDEF::MD_Virtual))) { if (g_CLR_RT_EventCache.FindVirtualMethod(cls, calleeInst, calleeReal) == false) @@ -2224,7 +2224,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) stack->PopInline(); ip = stack->m_IP; - assm = stack->m_call.m_assm; + assm = stack->m_call.assembly; evalPos = stack->m_evalStackPos - 1; fDirty = true; @@ -2288,7 +2288,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); // Check this is an object of the requested type. - if (type.m_data != cls.m_data) + if (type.data != cls.data) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2347,13 +2347,13 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) WRITEBACK(stack, evalPos, ip, fDirty); - if (cls.m_target->IsDelegate()) + if (cls.target->IsDelegate()) { // // Special case for delegates. LDFTN or LDVIRTFTN have already created the delegate object, just // check that... // - changes = -calleeInst.m_target->ArgumentsCount; + changes = -calleeInst.target->argumentsCount; NANOCLR_CHECK_HRESULT(CLR_Checks::VerifyStackOK( *stack, stack->m_evalStackPos, @@ -2383,7 +2383,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if ((dlgInst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((dlgInst.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { dlg->m_object.Assign(top[0]); } @@ -2392,7 +2392,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } else { - changes = calleeInst.m_target->ArgumentsCount; + changes = calleeInst.target->argumentsCount; NANOCLR_CHECK_HRESULT(CLR_Checks::VerifyStackOK( *stack, stack->m_evalStackPos, @@ -2440,7 +2440,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // // See CLR_RT_StackFrame::Pop() // - if ((cls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((cls.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_ValueType) { if (top[0].DataType() == DATATYPE_OBJECT) @@ -2457,7 +2457,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // top = stack->m_evalStackPos++; - changes = calleeInst.m_target->ArgumentsCount; + changes = calleeInst.target->argumentsCount; while (--changes > 0) { top[0].Assign(top[-1]); @@ -2767,9 +2767,9 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) UPDATESTACK(stack, evalPos); - if (((typeInst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if (((typeInst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_ValueType) || - ((typeInst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + ((typeInst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum)) { //"unbox" @@ -2919,7 +2919,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(evalPos[0], cls)); // Check this is an object of the requested type. - if (type.m_data != cls.m_data) + if (type.data != cls.data) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); UPDATESTACK(stack, evalPos); @@ -3375,7 +3375,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_INT32 len; - if (clsInst.m_target->DataType) + if (clsInst.target->dataType) { len = sizeof(CLR_RT_HeapBlock); } @@ -3615,7 +3615,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { stack->m_flags |= CLR_RT_StackFrame::c_ExecutingIL; - assm = stack->m_call.m_assm; + assm = stack->m_call.assembly; READCACHE(stack, evalPos, ip, fDirty); continue; diff --git a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp index ea1ebe5a69..bb2e279629 100644 --- a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp +++ b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp @@ -228,7 +228,7 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::StartDispatch( CLR_RT_Applicatio args = stackTop->m_arguments; - if((stackTop->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if((stackTop->m_call.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { ++args; } diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index bf1c41a5d2..b928269fbc 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -94,7 +94,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) #endif - if ((m_type->m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Serializable) == 0) + if ((m_type->m_handlerCls.target->flags & CLR_RECORD_TYPEDEF::TD_Serializable) == 0) { #if defined(NANOCLR_APPDOMAINS) @@ -162,7 +162,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() td = m_typeExpected; } - if (td->m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Sealed) + if (td->m_handlerCls.target->flags & CLR_RECORD_TYPEDEF::TD_Sealed) { res &= ~c_Signature_Type; break; @@ -198,7 +198,7 @@ bool CLR_RT_BinaryFormatter::TypeHandler::CompareTypes(CLR_RT_TypeDescriptor *le NanoCLRDataType CLR_RT_BinaryFormatter::TypeHandler::GetDataType(CLR_RT_TypeDescriptor *type) { NATIVE_PROFILE_CLR_SERIALIZATION(); - return (NanoCLRDataType)type->m_handlerCls.m_target->DataType; + return (NanoCLRDataType)type->m_handlerCls.target->dataType; } CLR_UINT32 CLR_RT_BinaryFormatter::TypeHandler::GetSizeOfType(CLR_RT_TypeDescriptor *type) @@ -861,7 +861,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) NANOCLR_SET_AND_LEAVE(S_OK); } - if (m_type->m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_DateTime.m_data) + if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_DateTime.data) { CLR_INT64 *pVal = Library_corlib_native_System_DateTime::GetValuePtr(*value); FAULT_ON_NULL(pVal); @@ -870,7 +870,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) bits = 64; fSigned = false; } - else if (m_type->m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_TimeSpan.m_data) + else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) { CLR_INT64 *pVal = Library_corlib_native_System_TimeSpan::GetValuePtr(*value); FAULT_ON_NULL(pVal); @@ -1010,7 +1010,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) CLR_UINT32 bits; bool fSigned; - if (m_type->m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_DateTime.m_data) + if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_DateTime.data) { CLR_INT64 *pVal = Library_corlib_native_System_DateTime::GetValuePtr(*m_value); FAULT_ON_NULL(pVal); @@ -1019,7 +1019,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) bits = 64; fSigned = false; } - else if (m_type->m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_TimeSpan.m_data) + else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) { CLR_INT64 *pVal = Library_corlib_native_System_TimeSpan::GetValuePtr(*m_value); FAULT_ON_NULL(pVal); @@ -1206,7 +1206,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi NANOCLR_CLEAR(hints); - if (cls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) + if (cls.target->flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); @@ -1243,7 +1243,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( NANOCLR_CLEAR(hints); - if (fld.m_target->Flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) + if (fld.target->flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); @@ -1661,9 +1661,9 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextField() while (NANOCLR_INDEX_IS_VALID(m_fields_CurrentClass)) { - if (m_fields_CurrentField < m_fields_CurrentClass.m_target->InstanceFieldsCount) + if (m_fields_CurrentField < m_fields_CurrentClass.target->instanceFieldsCount) { - int offset = m_fields_CurrentClass.m_target->FirstInstanceField + m_fields_CurrentField++; + int offset = m_fields_CurrentClass.target->firstInstanceField + m_fields_CurrentField++; CLR_RT_FieldDef_Index index; index.Set(m_fields_CurrentClass.Assembly(), offset); CLR_RT_FieldDef_Instance inst; @@ -1671,7 +1671,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextField() m_fields_Pointer = m_value.m_value->Dereference() + inst.CrossReference().m_offset; - if ((inst.m_target->Flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) + if ((inst.target->flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) { SerializationHintsAttribute hints; CLR_RT_TypeDescriptor desc; diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index 1898c30279..4919c0ffc2 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -171,9 +171,9 @@ HRESULT CLR_RT_Thread::PushThreadProcDelegate(CLR_RT_HeapBlock_Delegate *pDelega this->m_dlg = pDelegate; this->m_status = TH_S_Ready; - NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(this, inst, inst.m_target->ArgumentsCount)); + NANOCLR_CHECK_HRESULT(CLR_RT_StackFrame::Push(this, inst, inst.target->argumentsCount)); - if ((inst.m_target->Flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((inst.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { CLR_RT_StackFrame *stackTop = this->CurrentFrame(); @@ -592,16 +592,16 @@ void CLR_RT_Thread::DumpStack() void CLR_RT_Thread::ProcessException_FilterPseudoFrameCopyVars(CLR_RT_StackFrame *to, CLR_RT_StackFrame *from) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8 ArgumentsCount = from->m_call.m_target->ArgumentsCount; + CLR_UINT8 ArgumentsCount = from->m_call.target->argumentsCount; if (ArgumentsCount) { memcpy(to->m_arguments, from->m_arguments, sizeof(CLR_RT_HeapBlock) * ArgumentsCount); } - if (from->m_call.m_target->LocalsCount) + if (from->m_call.target->localsCount) { - memcpy(to->m_locals, from->m_locals, sizeof(CLR_RT_HeapBlock) * from->m_call.m_target->LocalsCount); + memcpy(to->m_locals, from->m_locals, sizeof(CLR_RT_HeapBlock) * from->m_call.target->localsCount); } } @@ -823,7 +823,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() } #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - if (stack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (stack->m_call.target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { CLR_PMETADATA ip; if (us.m_ip) @@ -866,7 +866,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() us.m_currentBlockEnd = eh.m_handlerStart; // Create a pseudo-frame at the top of the stack so the filter can call other functions. - CLR_UINT8 ArgumentsCount = stack->m_call.m_target->ArgumentsCount; + CLR_UINT8 ArgumentsCount = stack->m_call.target->argumentsCount; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // We don't want to send any breakpoints until after we set the IP appropriately @@ -904,12 +904,12 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() sizeof(CLR_RT_HeapBlock) * ArgumentsCount); } - if (stack->m_call.m_target->LocalsCount) + if (stack->m_call.target->localsCount) { memcpy( newStack->m_locals, stack->m_locals, - sizeof(CLR_RT_HeapBlock) * stack->m_call.m_target->LocalsCount); + sizeof(CLR_RT_HeapBlock) * stack->m_call.target->localsCount); } newStack->PushValueAndAssign(m_currentException); @@ -1093,7 +1093,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() } else #endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - if (iterStack->m_call.m_target->Flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) + if (iterStack->m_call.target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { if (iterStack->m_IP) // No IP? Either out of memory during allocation of iterStack frame or native method. { diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index fbed74ace8..91a9b24e24 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -199,7 +199,7 @@ bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_UINT32 &hash void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, const CLR_RECORD_TYPESPEC *ts) { NATIVE_PROFILE_CLR_CORE(); - Initialize_TypeSpec(assm, assm->GetSignature(ts->Sig)); + Initialize_TypeSpec(assm, assm->GetSignature(ts->signature)); } void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMETADATA ts) @@ -220,9 +220,9 @@ void CLR_RT_SignatureParser::Initialize_TypeSpec(CLR_RT_Assembly *assm, CLR_PMET void CLR_RT_SignatureParser::Initialize_Interfaces(CLR_RT_Assembly *assm, const CLR_RECORD_TYPEDEF *td) { NATIVE_PROFILE_CLR_CORE(); - if (td->Interfaces != CLR_EmptyIndex) + if (td->interfaces != CLR_EmptyIndex) { - CLR_PMETADATA sig = assm->GetSignature(td->Interfaces); + CLR_PMETADATA sig = assm->GetSignature(td->interfaces); ParamCount = (*sig++); Signature = sig; @@ -267,7 +267,7 @@ void CLR_RT_SignatureParser::Initialize_FieldDef(CLR_RT_Assembly *assm, const CL { NATIVE_PROFILE_CLR_CORE(); - Initialize_FieldDef(assm, assm->GetSignature(fd->Sig)); + Initialize_FieldDef(assm, assm->GetSignature(fd->signature)); } void CLR_RT_SignatureParser::Initialize_FieldDef(CLR_RT_Assembly *assm, CLR_PMETADATA fd) @@ -291,7 +291,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodDef_Instanc Method = md->Method(); - Initialize_MethodSignature(md->m_assm, md->m_assm->GetSignature(md->m_target->Sig)); + Initialize_MethodSignature(md->assembly, md->assembly->GetSignature(md->target->signature)); } void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, const CLR_RECORD_METHODDEF *md) @@ -300,7 +300,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, c Method = 0xFFFF; - Initialize_MethodSignature(assm, assm->GetSignature(md->Sig)); + Initialize_MethodSignature(assm, assm->GetSignature(md->signature)); } void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_Assembly *assm, CLR_PMETADATA md) @@ -335,7 +335,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instan Method = ms->Method(); - Signature = ms->m_assm->GetSignature(ms->m_target->Instantiation); + Signature = ms->assembly->GetSignature(ms->target->instantiation); Type = CLR_RT_SignatureParser::c_MethodSpec; @@ -349,7 +349,7 @@ void CLR_RT_SignatureParser::Initialize_MethodSignature(CLR_RT_MethodSpec_Instan ParamCount = (*Signature++); - Assembly = ms->m_assm; + Assembly = ms->assembly; GenParamCount = ParamCount; @@ -369,9 +369,9 @@ bool CLR_RT_SignatureParser::Initialize_GenericParamTypeSignature( Assembly = assm; // need to check for valid signature - if (gp->Sig != 0xFFFF) + if (gp->signature != 0xFFFF) { - Signature = assm->GetSignature(gp->Sig); + Signature = assm->GetSignature(gp->signature); ParamCount = 1; } else @@ -401,11 +401,11 @@ void CLR_RT_SignatureParser::Initialize_MethodLocals(CLR_RT_Assembly *assm, cons // Assembly = assm; - Signature = assm->GetSignature(md->Locals); + Signature = assm->GetSignature(md->locals); Type = CLR_RT_SignatureParser::c_Locals; Flags = 0; - ParamCount = md->LocalsCount; + ParamCount = md->localsCount; GenParamCount = 0; IsGenericInst = false; @@ -504,13 +504,13 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) desc.m_handlerCls.InitializeFromIndex(desc.m_reflex.m_data.m_type); res.Levels = desc.m_reflex.m_levels; - res.DataType = (NanoCLRDataType)desc.m_handlerCls.m_target->DataType; + res.DataType = (NanoCLRDataType)desc.m_handlerCls.target->dataType; res.Class = desc.m_reflex.m_data.m_type; // // Special case for Object types. // - if (res.Class.m_data == g_CLR_RT_WellKnownTypes.m_Object.m_data) + if (res.Class.data == g_CLR_RT_WellKnownTypes.m_Object.data) { res.DataType = DATATYPE_OBJECT; } @@ -659,14 +659,14 @@ bool CLR_RT_Assembly_Instance::InitializeFromIndex(const CLR_RT_Assembly_Index & NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; return true; } - m_data = 0; - m_assm = NULL; + data = 0; + assembly = NULL; return false; } @@ -676,7 +676,7 @@ void CLR_RT_Assembly_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_Assembly_Index::Clear(); - m_assm = NULL; + assembly = NULL; } ////////////////////////////// @@ -686,26 +686,26 @@ bool CLR_RT_TypeSpec_Instance::InitializeFromIndex(const CLR_RT_TypeSpec_Index & NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetTypeSpec(TypeSpec()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetTypeSpec(TypeSpec()); CLR_RT_SignatureParser parser; - parser.Initialize_TypeSpec(m_assm, m_assm->GetTypeSpec(index.TypeSpec())); + parser.Initialize_TypeSpec(assembly, assembly->GetTypeSpec(index.TypeSpec())); CLR_RT_SignatureParser::Element element; // get type parser.Advance(element); - TypeDefIndex = element.Class.Type(); + typeDefIndex = element.Class.Type(); return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; return false; } @@ -715,21 +715,21 @@ void CLR_RT_TypeSpec_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeSpec_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; } -bool CLR_RT_TypeSpec_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) +bool CLR_RT_TypeSpec_Instance::ResolveToken(CLR_UINT32 token, CLR_RT_Assembly *assm) { NATIVE_PROFILE_CLR_CORE(); - if (assm && CLR_TypeFromTk(tk) == TBL_TypeSpec) + if (assm && CLR_TypeFromTk(token) == TBL_TypeSpec) { - CLR_UINT32 index = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(token); - Set(assm->m_index, index); + Set(assm->assemblyIndex, index); - m_assm = assm; - m_target = assm->GetTypeSpec(index); + assembly = assm; + target = assm->GetTypeSpec(index); return true; } @@ -779,20 +779,20 @@ bool CLR_RT_TypeDef_Instance::InitializeFromIndex(const CLR_RT_TypeDef_Index &in NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetTypeDef(Type()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetTypeDef(Type()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; return false; } @@ -807,11 +807,11 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodDef_Instan Set(indexAssm, indexType); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; - m_target = m_assm->GetTypeDef(indexType); + assembly = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + target = assembly->GetTypeDef(indexType); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } @@ -831,11 +831,11 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodSpec_Insta // Set(indexAssm, indexType); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + assembly = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; // m_target = m_assm->GetTypeDef(indexType); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } @@ -850,16 +850,16 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(fd)) { - CLR_RT_Assembly *assm = fd.m_assm; + CLR_RT_Assembly *assm = fd.assembly; const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)assm->GetTable(TBL_TypeDef); CLR_INDEX indexField = fd.Field(); int i = assm->m_pTablesSize[TBL_TypeDef]; - if (fd.m_target->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { for (; i; i--, td++) { - if (td->FirstStaticField <= indexField && indexField < td->FirstStaticField + td->StaticFieldsCount) + if (td->firstStaticField <= indexField && indexField < td->firstStaticField + td->staticFieldsCount) { break; } @@ -869,8 +869,8 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance { for (; i; i--, td++) { - if (td->FirstInstanceField <= indexField && - indexField < td->FirstInstanceField + td->InstanceFieldsCount) + if (td->firstInstanceField <= indexField && + indexField < td->firstInstanceField + td->instanceFieldsCount) { break; } @@ -884,11 +884,11 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance Set(indexAssm, indexType); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; - m_target = m_assm->GetTypeDef(indexType); + assembly = g_CLR_RT_TypeSystem.m_assemblies[indexAssm - 1]; + target = assembly->GetTypeDef(indexType); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } @@ -902,7 +902,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance bool CLR_RT_TypeDef_Instance::IsATypeHandler() { NATIVE_PROFILE_CLR_CORE(); - return (m_data == g_CLR_RT_WellKnownTypes.m_Type.m_data || m_data == g_CLR_RT_WellKnownTypes.m_TypeStatic.m_data); + return (data == g_CLR_RT_WellKnownTypes.m_Type.data || data == g_CLR_RT_WellKnownTypes.m_TypeStatic.data); } void CLR_RT_TypeDef_Instance::Clear() @@ -910,8 +910,8 @@ void CLR_RT_TypeDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; } // if type token is not generic, we are going to resolve from the assembly else from the heapblock that may contains @@ -929,24 +929,24 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - m_data = assm->m_pCrossReference_TypeRef[index].Target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetTypeDef(Type()); + data = assm->m_pCrossReference_TypeRef[index].Target.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetTypeDef(Type()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; case TBL_TypeDef: - Set(assm->m_index, index); + Set(assm->assemblyIndex, index); - m_assm = assm; - m_target = assm->GetTypeDef(index); + assembly = assm; + target = assm->GetTypeDef(index); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -957,11 +957,11 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( Set(gp.Class.Assembly(), gp.Class.Type()); - m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; - m_target = m_assm->GetTypeDef(gp.Class.Type()); + assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; + target = assembly->GetTypeDef(gp.Class.Type()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -989,11 +989,11 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( CLR_RT_TypeDef_Index typeDef; NanoCLRDataType dataType; - caller->m_assm->FindGenericParamAtTypeSpec(*caller, genericParamPosition, typeDef, dataType); + caller->assembly->FindGenericParamAtTypeSpec(*caller, genericParamPosition, typeDef, dataType); - m_data = typeDef.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[typeDef.Assembly() - 1]; - m_target = m_assm->GetTypeDef(typeDef.Type()); + data = typeDef.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[typeDef.Assembly() - 1]; + target = assembly->GetTypeDef(typeDef.Type()); break; } @@ -1001,15 +1001,15 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( { CLR_RT_GenericParam_Index gpIndex; - caller->m_assm->FindGenericParamAtMethodDef(*caller, genericParamPosition, gpIndex); + caller->assembly->FindGenericParamAtMethodDef(*caller, genericParamPosition, gpIndex); CLR_RT_GenericParam_CrossReference gp = - caller->m_assm->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + caller->assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; // get TypeDef instance from generic parameter index - m_data = gp.Class.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; - m_target = m_assm->GetTypeDef(gp.Class.Type()); + data = gp.Class.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; + target = assembly->GetTypeDef(gp.Class.Type()); break; } @@ -1018,7 +1018,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( } #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -1040,7 +1040,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( // } #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -1061,20 +1061,20 @@ bool CLR_RT_TypeDef_Instance::SwitchToParent() NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(*this)) { - if (m_target->HasValidExtendsType()) + if (target->HasValidExtendsType()) { CLR_RT_TypeDef_Index tmp; const CLR_RT_TypeDef_Index *cls; - switch (m_target->Extends()) + switch (target->Extends()) { case TBL_TypeDef: - tmp.Set(Assembly(), m_target->ExtendsIndex()); + tmp.Set(Assembly(), target->ExtendsIndex()); cls = &tmp; break; case TBL_TypeRef: - cls = &m_assm->m_pCrossReference_TypeRef[m_target->ExtendsIndex()].Target; + cls = &assembly->m_pCrossReference_TypeRef[target->ExtendsIndex()].Target; break; // all others are not supported @@ -1105,20 +1105,20 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetFieldDef(Field()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetFieldDef(Field()); genericType = NULL; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; genericType = NULL; return false; @@ -1129,8 +1129,8 @@ void CLR_RT_FieldDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_FieldDef_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; genericType = NULL; } @@ -1150,9 +1150,9 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm switch (fr->Owner()) { case TBL_TypeRef: - m_data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].Target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetFieldDef(Field()); + data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].Target.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetFieldDef(Field()); // invalidate generic type genericType = NULL; @@ -1167,15 +1167,15 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm CLR_RT_FieldDef_Index field; - if (!assm->FindFieldDef(ts, assm->GetString(fr->Name), assm, fr->Sig, field)) + if (!assm->FindFieldDef(ts, assm->GetString(fr->name), assm, fr->signature, field)) { return false; } - Set(assm->m_index, field.Field()); + Set(assm->assemblyIndex, field.Field()); - m_assm = assm; - m_target = m_assm->GetFieldDef(Field()); + assembly = assm; + target = assembly->GetFieldDef(Field()); break; } @@ -1185,21 +1185,21 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm } #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } case TBL_FieldDef: - Set(assm->m_index, index); + Set(assm->assemblyIndex, index); - m_assm = assm; - m_target = m_assm->GetFieldDef(index); + assembly = assm; + target = assembly->GetFieldDef(index); // invalidate generic type genericType = NULL; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -1221,20 +1221,20 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetMethodDef(Method()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetMethodDef(Method()); genericType = NULL; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; genericType = NULL; return false; @@ -1245,8 +1245,8 @@ void CLR_RT_MethodDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; genericType = NULL; } @@ -1273,72 +1273,72 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass CLR_RT_MethodDef_Index method; - if (!assm->FindMethodDef(ts, assm->GetString(mr->Name), assm, mr->Sig, method)) + if (!assm->FindMethodDef(ts, assm->GetString(mr->name), assm, mr->signature, method)) { return false; } - Set(assm->m_index, method.Method()); + Set(assm->assemblyIndex, method.Method()); - m_assm = assm; - m_target = m_assm->GetMethodDef(method.Method()); + assembly = assm; + target = assembly->GetMethodDef(method.Method()); } else { // owner is TypeRef // get data for MethodRef (from index) - m_data = assm->m_pCrossReference_MethodRef[index].Target.m_data; + data = assm->m_pCrossReference_MethodRef[index].Target.data; // get assembly for this type ref - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; // grab the MethodDef - m_target = m_assm->GetMethodDef(Method()); + target = assembly->GetMethodDef(Method()); // invalidate GenericType genericType = NULL; } #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } case TBL_MethodDef: - Set(assm->m_index, index); + Set(assm->assemblyIndex, index); - m_assm = assm; - m_target = m_assm->GetMethodDef(index); + assembly = assm; + target = assembly->GetMethodDef(index); // invalidate generic type genericType = NULL; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; case TBL_MethodSpec: { - m_assm = assm; + assembly = assm; - const CLR_RECORD_METHODSPEC *ms = m_assm->GetMethodSpec(index); + const CLR_RECORD_METHODSPEC *ms = assembly->GetMethodSpec(index); CLR_RT_MethodSpec_Index msIndex; - msIndex.Set(m_assm->m_index, index); + msIndex.Set(assembly->assemblyIndex, index); switch (ms->MethodKind()) { case TBL_MethodDef: - Set(m_assm->m_index, ms->MethodIndex()); - m_assm = assm; - m_target = m_assm->GetMethodDef(ms->MethodIndex()); + Set(assembly->assemblyIndex, ms->MethodIndex()); + assembly = assm; + target = assembly->GetMethodDef(ms->MethodIndex()); break; case TBL_MethodRef: - m_data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetMethodDef(Method()); + data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetMethodDef(Method()); break; @@ -1348,10 +1348,10 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass } // get generic type - genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; + genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].GenericType; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } @@ -1365,23 +1365,23 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass switch (ms->MethodKind()) { case TBL_MethodDef: - Set(assm->m_index, ms->MethodIndex()); + Set(assm->assemblyIndex, ms->MethodIndex()); - m_assm = assm; - m_target = m_assm->GetMethodDef(ms->MethodIndex()); + assembly = assm; + target = assembly->GetMethodDef(ms->MethodIndex()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; case TBL_MethodRef: - m_data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetMethodDef(Method()); + data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetMethodDef(Method()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; @@ -1393,10 +1393,10 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass break; // get generic type - genericType = &m_assm->m_pCrossReference_TypeSpec[ms->Container].GenericType; + genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].GenericType; #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } @@ -1419,20 +1419,20 @@ bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetGenericParam(GenericParam()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetGenericParam(GenericParam()); #if defined(NANOCLR_INSTANCE_NAMES) - Name = m_assm->GetString(m_target->Name); + name = assembly->GetString(target->name); #endif return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; return false; } @@ -1442,8 +1442,8 @@ void CLR_RT_GenericParam_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_GenericParam_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1454,16 +1454,16 @@ bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Ind if (NANOCLR_INDEX_IS_VALID(index)) { - m_data = index.m_data; - m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; - m_target = m_assm->GetMethodSpec(Method()); + data = index.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; + target = assembly->GetMethodSpec(Method()); return true; } - m_data = 0; - m_assm = NULL; - m_target = NULL; + data = 0; + assembly = NULL; + target = NULL; return false; } @@ -1473,8 +1473,8 @@ void CLR_RT_MethodSpec_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodSpec_Index::Clear(); - m_assm = NULL; - m_target = NULL; + assembly = NULL; + target = NULL; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1563,7 +1563,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromTypeSpec(const CLR_RT_TypeSpec_Inde NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - parser.Initialize_TypeSpec(inst.m_assm, inst.m_target); + parser.Initialize_TypeSpec(inst.assembly, inst.target); NANOCLR_SET_AND_LEAVE(InitializeFromSignatureParser(parser)); @@ -1581,7 +1581,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } else { - const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_handlerCls.m_target->DataType]; + const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[m_handlerCls.target->dataType]; m_flags = dtl.m_flags & CLR_RT_DataTypeLookup::c_SemanticMask; @@ -1591,7 +1591,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl if (m_flags == CLR_RT_DataTypeLookup::c_Primitive) { - if ((m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((m_handlerCls.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { m_flags = CLR_RT_DataTypeLookup::c_Enum; @@ -1599,7 +1599,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } else { - switch (m_handlerCls.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) + switch (m_handlerCls.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) { case CLR_RECORD_TYPEDEF::TD_Semantics_ValueType: m_flags = CLR_RT_DataTypeLookup::c_ValueType; @@ -1616,12 +1616,12 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } } - if (m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_Array.m_data) + if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_Array.data) { m_flags |= CLR_RT_DataTypeLookup::c_Array; } - if (m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_ArrayList.m_data) + if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_ArrayList.data) { m_flags |= CLR_RT_DataTypeLookup::c_ArrayList; } @@ -1660,7 +1660,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromFieldDefinition(const CLR_RT_FieldD NANOCLR_HEADER(); CLR_RT_SignatureParser parser; - parser.Initialize_FieldDef(fd.m_assm, fd.m_target); + parser.Initialize_FieldDef(fd.assembly, fd.target); NANOCLR_SET_AND_LEAVE(InitializeFromSignatureParser(parser)); @@ -1973,7 +1973,7 @@ HRESULT CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(const CLR_RT_HeapBlock if (desc.GetDataType() == DATATYPE_GENERICINST) { - res.Set(desc.m_handlerGenericType.Assembly(), desc.m_handlerGenericType.TypeDefIndex); + res.Set(desc.m_handlerGenericType.Assembly(), desc.m_handlerGenericType.typeDefIndex); } else { @@ -2114,7 +2114,7 @@ bool CLR_RT_ExceptionHandler::ConvertFromEH( case CLR_RECORD_EH::EH_Catch: { CLR_RT_TypeDef_Instance cls; - if (cls.ResolveToken(eh.GetToken(), owner.m_assm) == false) + if (cls.ResolveToken(eh.GetToken(), owner.assembly) == false) return false; m_typeFilter = cls; } @@ -2124,7 +2124,7 @@ bool CLR_RT_ExceptionHandler::ConvertFromEH( return false; } - if (owner.m_target->RVA == CLR_EmptyIndex) + if (owner.target->rva == CLR_EmptyIndex) return false; m_ehType = eh.mode; @@ -2240,7 +2240,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_TypeSpec_CrossReference *dst = this->m_pCrossReference_TypeSpec; for (i = 0; i < this->m_pTablesSize[TBL_TypeSpec]; i++, src++, dst++) { - dst->GenericType.m_data = 0; + dst->GenericType.data = 0; } } @@ -2304,7 +2304,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R for (int i = 0; i < skeleton->m_pTablesSize[TBL_TypeDef]; i++, src++) { - skeleton->m_iStaticFields += src->StaticFieldsCount; + skeleton->m_iStaticFields += src->staticFieldsCount; } } @@ -2399,10 +2399,10 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R CLR_Debug::Printf( " Assembly: %s (%d.%d.%d.%d) ", assm->m_szName, - header->version.iMajorVersion, - header->version.iMinorVersion, - header->version.iBuildNumber, - header->version.iRevisionNumber); + header->version.majorVersion, + header->version.minorVersion, + header->version.buildNumber, + header->version.revisionNumber); if (s_CLR_RT_fTrace_AssemblyOverhead >= c_CLR_RT_Trace_Info) { @@ -2538,18 +2538,18 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) CLR_Debug::Printf( "Assembly: %s (%d.%d.%d.%d)", m_szName, - m_header->version.iMajorVersion, - m_header->version.iMinorVersion, - m_header->version.iBuildNumber, - m_header->version.iRevisionNumber); + m_header->version.majorVersion, + m_header->version.minorVersion, + m_header->version.buildNumber, + m_header->version.revisionNumber); CLR_Debug::Printf( " needs assembly '%s' (%d.%d.%d.%d)\r\n", szName, - src->version.iMajorVersion, - src->version.iMinorVersion, - src->version.iBuildNumber, - src->version.iRevisionNumber); + src->version.majorVersion, + src->version.minorVersion, + src->version.buildNumber, + src->version.revisionNumber); } #endif @@ -2568,9 +2568,9 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) void CLR_RT_Assembly::DestroyInstance() { NATIVE_PROFILE_CLR_CORE(); - if (m_index) + if (assemblyIndex) { - g_CLR_RT_TypeSystem.m_assemblies[m_index - 1] = NULL; + g_CLR_RT_TypeSystem.m_assemblies[assemblyIndex - 1] = NULL; } #if defined(VIRTUAL_DEVICE) @@ -2603,25 +2603,25 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() ITERATE_THROUGH_RECORDS(this, i, TypeRef, TYPEREF) { // TODO check typedef - if (src->Scope & 0x8000) // Flag for TypeRef + if (src->scope & 0x8000) // Flag for TypeRef { CLR_RT_TypeDef_Instance inst; - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->Scope & 0x7FFF].Target) == false) + if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->scope & 0x7FFF].Target) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->Scope); + CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->scope); #endif #if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown scope: %08x\r\n", src->Scope); + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Resolve: unknown scope: %08x\r\n", src->scope); #else NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown scope: %08x\r\n", src->Scope); #endif } - const char *szName = GetString(src->Name); - if (inst.m_assm->FindTypeDef(szName, inst.Type(), dst->Target) == false) + const char *szName = GetString(src->name); + if (inst.assembly->FindTypeDef(szName, inst.Type(), dst->Target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s\r\n", szName); @@ -2636,14 +2636,14 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() } else { - CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->Scope].m_target; + CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->scope].m_target; if (assm == NULL) { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: assm is null\n"); } - const char *szNameSpace = GetString(src->NameSpace); - const char *szName = GetString(src->Name); + const char *szNameSpace = GetString(src->nameSpace); + const char *szName = GetString(src->name); if (assm->FindTypeDef(szName, szNameSpace, dst->Target) == false) { #if !defined(BUILD_RTM) @@ -2697,7 +2697,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() // break; case TBL_TypeSpec: - typeSpec.Set(this->m_index, src->OwnerIndex()); + typeSpec.Set(this->assemblyIndex, src->OwnerIndex()); break; default: @@ -2720,7 +2720,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() #endif } - const char *fieldName = GetString(src->Name); + const char *fieldName = GetString(src->name); if (NANOCLR_INDEX_IS_VALID(typeSpec)) { @@ -2743,8 +2743,8 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() #endif } - if (!typeSpecInstance.m_assm - ->FindFieldDef(typeSpecInstance.m_target, fieldName, this, src->Sig, dst->Target)) + if (!typeSpecInstance.assembly + ->FindFieldDef(typeSpecInstance.target, fieldName, this, src->signature, dst->Target)) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); @@ -2758,7 +2758,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } // set TypeSpec - dst->GenericType.m_data = typeSpec.m_data; + dst->GenericType.data = typeSpec.data; } else if (NANOCLR_INDEX_IS_VALID(typeDef)) { @@ -2782,8 +2782,8 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() name); #endif - if (typeDefInstance.m_assm - ->FindFieldDef(typeDefInstance.m_target, fieldName, this, src->Sig, dst->Target) == false) + if (typeDefInstance.assembly + ->FindFieldDef(typeDefInstance.target, fieldName, this, src->signature, dst->Target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown FieldRef: %s\r\n", fieldName); @@ -2797,7 +2797,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } // invalidate GenericType - dst->GenericType.m_data = CLR_EmptyToken; + dst->GenericType.data = CLR_EmptyToken; } } @@ -2842,7 +2842,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() // break; case TBL_TypeSpec: - typeSpec.Set(this->m_index, src->OwnerIndex()); + typeSpec.Set(this->assemblyIndex, src->OwnerIndex()); break; default: @@ -2865,7 +2865,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() #endif } - name = GetString(src->Name); + name = GetString(src->name); if (NANOCLR_INDEX_IS_VALID(typeSpec)) { @@ -2888,12 +2888,12 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() #endif } - if (typeSpecInstance.m_assm->FindMethodDef(typeSpecInstance.m_target, name, this, src->Sig, dst->Target)) + if (typeSpecInstance.assembly->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->Target)) { fGot = true; // set TypeSpec - dst->GenericType.m_data = typeSpec.m_data; + dst->GenericType.data = typeSpec.data; } if (fGot == false) @@ -2943,12 +2943,12 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() while (NANOCLR_INDEX_IS_VALID(typeDefInstance)) { - if (typeDefInstance.m_assm->FindMethodDef(typeDefInstance.m_target, name, this, src->Sig, dst->Target)) + if (typeDefInstance.assembly->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->Target)) { fGot = true; // invalidate GenericType - dst->GenericType.m_data = CLR_EmptyToken; + dst->GenericType.data = CLR_EmptyToken; break; } @@ -2959,21 +2959,21 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() if (fGot == false) { #if !defined(BUILD_RTM) - const CLR_RECORD_TYPEDEF *qTD = typeDefInstance.m_target; - CLR_RT_Assembly *qASSM = typeDefInstance.m_assm; + const CLR_RECORD_TYPEDEF *qTD = typeDefInstance.target; + CLR_RT_Assembly *qASSM = typeDefInstance.assembly; CLR_Debug::Printf( "Unknown MethodRef: %s.%s.%s\r\n", - qASSM->GetString(qTD->NameSpace), - qASSM->GetString(qTD->Name), + qASSM->GetString(qTD->nameSpace), + qASSM->GetString(qTD->name), name); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", - qASSM->GetString(qTD->NameSpace), - qASSM->GetString(qTD->Name), + qASSM->GetString(qTD->nameSpace), + qASSM->GetString(qTD->name), name); #else NANOCLR_MSG1_SET_AND_LEAVE( @@ -2999,14 +2999,14 @@ HRESULT CLR_RT_Assembly::Resolve_TypeSpec() ITERATE_THROUGH_RECORDS(this, i, TypeSpec, TYPESPEC) { - dst->GenericType.Set(m_index, i); + dst->GenericType.Set(assemblyIndex, i); CLR_RT_TypeSpec_Instance inst; if (inst.InitializeFromIndex(dst->GenericType) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Resolve TypeSpec: can't create TypeSpec instance: %08x\r\n", src->Sig); + CLR_Debug::Printf("Resolve TypeSpec: can't create TypeSpec instance: %08x\r\n", src->signature); #endif NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } @@ -3030,9 +3030,9 @@ void CLR_RT_Assembly::Resolve_Link() // Link static fields. // { - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->FirstStaticField]; + CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->firstStaticField]; - num = src->StaticFieldsCount; + num = src->staticFieldsCount; for (; num; num--, fd++) { @@ -3045,14 +3045,14 @@ void CLR_RT_Assembly::Resolve_Link() // { CLR_RT_TypeDef_Index index; - index.Set(m_index, indexType); + index.Set(assemblyIndex, indexType); CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(index); CLR_INDEX tot = 0; do { - if (inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) + if (inst.target->flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) { dst->m_flags |= CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer; } @@ -3064,16 +3064,16 @@ void CLR_RT_Assembly::Resolve_Link() } #endif - tot += inst.m_target->InstanceFieldsCount; + tot += inst.target->instanceFieldsCount; } while (inst.SwitchToParent()); dst->m_totalFields = tot; //--// - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->FirstInstanceField]; + CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->firstInstanceField]; - num = src->InstanceFieldsCount; + num = src->instanceFieldsCount; i = tot - num + CLR_RT_HeapBlock::HB_Object_Fields_Offset; // Take into account the offset from the // beginning of the object. @@ -3087,9 +3087,9 @@ void CLR_RT_Assembly::Resolve_Link() // Link methods. // { - CLR_RT_MethodDef_CrossReference *md = &m_pCrossReference_MethodDef[src->FirstMethod]; + CLR_RT_MethodDef_CrossReference *md = &m_pCrossReference_MethodDef[src->firstMethod]; - num = src->VirtualMethodCount + src->InstanceMethodCount + src->StaticMethodCount; + num = src->virtualMethodCount + src->instanceMethodCount + src->staticMethodCount; for (; num; num--, md++) { @@ -3101,18 +3101,18 @@ void CLR_RT_Assembly::Resolve_Link() // Link generic parameters, if any // { - if (src->GenericParamCount) + if (src->genericParamCount) { - CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[src->FirstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[src->firstGenericParam]; // get generic parameter count for stop condition - int num = src->GenericParamCount; - CLR_UINT16 indexGenericParam = src->FirstGenericParam; + int num = src->genericParamCount; + CLR_UINT16 indexGenericParam = src->firstGenericParam; for (; num; num--, gp++, indexGenericParam++) { CLR_RT_GenericParam_Index gpIndex; - gpIndex.Set(m_index, indexGenericParam); + gpIndex.Set(assemblyIndex, indexGenericParam); gp->m_target = gpIndex; @@ -3924,7 +3924,7 @@ void CLR_RT_Assembly::Resolve_MethodDef() const MethodIndexLookup *mil = c_MethodIndexLookup; CLR_RT_MethodDef_Index index; - index.Set(m_index, indexMethod); + index.Set(assemblyIndex, indexMethod); // Check for wellKnownMethods for (size_t ii = 0; ii < ARRAYSIZE(c_MethodIndexLookup); ii++, mil++) @@ -3938,34 +3938,34 @@ void CLR_RT_Assembly::Resolve_MethodDef() _SIDE_ASSERTE(instType.InitializeFromIndex(indexType)); - if (instType.m_assm == this) + if (instType.assembly == this) { - if (!strcmp(GetString(md->Name), mil->name)) + if (!strcmp(GetString(md->name), mil->name)) { - mIndex.m_data = index.m_data; + mIndex.data = index.data; } } } } - if (md->Flags & CLR_RECORD_METHODDEF::MD_EntryPoint) + if (md->flags & CLR_RECORD_METHODDEF::MD_EntryPoint) { g_CLR_RT_TypeSystem.m_entryPoint = index; } // link generic parameters - if (md->GenericParamCount) + if (md->genericParamCount) { - CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[md->FirstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[md->firstGenericParam]; // get generic parameter count for stop condition - int num = md->GenericParamCount; - CLR_UINT16 indexGenericParam = md->FirstGenericParam; + int num = md->genericParamCount; + CLR_UINT16 indexGenericParam = md->firstGenericParam; for (; num; num--, gp++, indexGenericParam++) { CLR_RT_GenericParam_Index gpIndex; - gpIndex.Set(m_index, indexGenericParam); + gpIndex.Set(assemblyIndex, indexGenericParam); gp->m_target = gpIndex; @@ -4006,7 +4006,7 @@ HRESULT CLR_RT_Assembly::Resolve_AllocateStaticFields(CLR_RT_HeapBlock *pStaticF for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) { - if (fd->Flags & CLR_RECORD_FIELDDEF::FD_Static) + if (fd->flags & CLR_RECORD_FIELDDEF::FD_Static) { CLR_RT_FieldDef_CrossReference &res = m_pCrossReference_FieldDef[i]; @@ -4090,12 +4090,12 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_R { if (!target->HasValidEnclosingType()) { - const char *szNameSpace = GetString(target->NameSpace); - const char *szName = GetString(target->Name); + const char *szNameSpace = GetString(target->nameSpace); + const char *szName = GetString(target->name); if (!strcmp(szName, name) && !strcmp(szNameSpace, nameSpace)) { - index.Set(m_index, i); + index.Set(assemblyIndex, i); return true; } @@ -4117,11 +4117,11 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_Type { if (target->EnclosingType() == scope) { - const char *szName = GetString(target->Name); + const char *szName = GetString(target->name); if (!strcmp(szName, name)) { - index.Set(m_index, i); + index.Set(assemblyIndex, i); return true; } @@ -4148,7 +4148,7 @@ bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index) if (i != tblSize) { - index.Set(m_index, i); + index.Set(assemblyIndex, i); return true; } @@ -4195,7 +4195,7 @@ bool CLR_RT_Assembly::FindGenericParamAtTypeSpec( NATIVE_PROFILE_CLR_CORE(); CLR_RT_SignatureParser parser; - parser.Initialize_TypeSpec(md.m_assm, md.m_assm->GetTypeSpec(md.genericType->TypeSpec())); + parser.Initialize_TypeSpec(md.assembly, md.assembly->GetTypeSpec(md.genericType->TypeSpec())); CLR_RT_SignatureParser::Element element; @@ -4223,14 +4223,14 @@ bool CLR_RT_Assembly::FindGenericParamAtMethodDef( { NATIVE_PROFILE_CLR_CORE(); - CLR_INDEX paramIndex = GetMethodDef(md.Method())->FirstGenericParam; + CLR_INDEX paramIndex = GetMethodDef(md.Method())->firstGenericParam; // sanity check for valid parameter index if (paramIndex != CLR_EmptyIndex) { paramIndex += genericParameterPosition; - index.Set(m_index, paramIndex); + index.Set(assemblyIndex, paramIndex); return true; } @@ -4250,9 +4250,9 @@ bool CLR_RT_Assembly::FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT for (int i = 0; i < tblSize; i++, ms++) { - if (ms->Container == typeSpecIndex) + if (ms->container == typeSpecIndex) { - index.Set(m_index, i); + index.Set(assemblyIndex, i); return true; } @@ -4279,7 +4279,7 @@ static bool local_FindFieldDef( for (CLR_UINT32 i = 0; i < num; i++, fd++) { - const char *fieldName = assm->GetString(fd->Name); + const char *fieldName = assm->GetString(fd->name); if (!strcmp(fieldName, szText)) { @@ -4296,7 +4296,7 @@ static bool local_FindFieldDef( } } - res.Set(assm->m_index, first + i); + res.Set(assm->assemblyIndex, first + i); return true; } @@ -4315,9 +4315,9 @@ bool CLR_RT_Assembly::FindFieldDef( CLR_RT_FieldDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (local_FindFieldDef(this, td->FirstInstanceField, td->InstanceFieldsCount, name, base, sig, index)) + if (local_FindFieldDef(this, td->firstInstanceField, td->instanceFieldsCount, name, base, sig, index)) return true; - if (local_FindFieldDef(this, td->FirstStaticField, td->StaticFieldsCount, name, base, sig, index)) + if (local_FindFieldDef(this, td->firstStaticField, td->staticFieldsCount, name, base, sig, index)) return true; index.Clear(); @@ -4340,7 +4340,7 @@ bool CLR_RT_Assembly::FindFieldDef( for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) { - const char *fieldName = GetString(fd->Name); + const char *fieldName = GetString(fd->name); if (!strcmp(fieldName, name)) { @@ -4358,7 +4358,7 @@ bool CLR_RT_Assembly::FindFieldDef( } } - index.Set(m_index, i); + index.Set(assemblyIndex, i); return true; } @@ -4378,12 +4378,12 @@ bool CLR_RT_Assembly::FindMethodDef( { NATIVE_PROFILE_CLR_CORE(); int i; - int num = td->VirtualMethodCount + td->InstanceMethodCount + td->StaticMethodCount; - const CLR_RECORD_METHODDEF *md = GetMethodDef(td->FirstMethod); + int num = td->virtualMethodCount + td->instanceMethodCount + td->staticMethodCount; + const CLR_RECORD_METHODDEF *md = GetMethodDef(td->firstMethod); for (i = 0; i < num; i++, md++) { - const char *methodName = GetString(md->Name); + const char *methodName = GetString(md->name); if (!strcmp(methodName, name)) { @@ -4401,7 +4401,7 @@ bool CLR_RT_Assembly::FindMethodDef( if (fMatch) { - index.Set(m_index, i + td->FirstMethod); + index.Set(assemblyIndex, i + td->firstMethod); return true; } @@ -4423,13 +4423,13 @@ bool CLR_RT_Assembly::FindMethodDef( NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeSpec_Index tsIndex; - base->FindTypeSpec(base->GetSignature(ts->Sig), tsIndex); + base->FindTypeSpec(base->GetSignature(ts->signature), tsIndex); CLR_RT_TypeSpec_Instance tsInstance; tsInstance.InitializeFromIndex(tsIndex); const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)base->GetTable(TBL_TypeDef); - td += tsInstance.TypeDefIndex; + td += tsInstance.typeDefIndex; return CLR_RT_Assembly::FindMethodDef(td, name, base, sig, index); } @@ -4451,7 +4451,7 @@ bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &ind { // found it! // set TypeSpec index - index.Set(this->m_index, i); + index.Set(this->assemblyIndex, i); // need to advance the signature to consume it while (parserLeft.Signature != sig) @@ -4474,10 +4474,10 @@ bool CLR_RT_Assembly::FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_O NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODDEF *p = GetMethodDef(i); - if (p->RVA == CLR_EmptyIndex) + if (p->rva == CLR_EmptyIndex) return false; - start = p->RVA; + start = p->rva; while (true) { @@ -4490,9 +4490,9 @@ bool CLR_RT_Assembly::FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_O break; } - if (p->RVA != CLR_EmptyIndex) + if (p->rva != CLR_EmptyIndex) { - end = p->RVA; + end = p->rva; break; } } @@ -4503,15 +4503,15 @@ bool CLR_RT_Assembly::FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_O bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - _ASSERTE(m_index == index.Assembly()); + _ASSERTE(assemblyIndex == index.Assembly()); for (int i = index.Method(); i < m_pTablesSize[TBL_MethodDef]; i++) { const CLR_RECORD_METHODDEF *md = GetMethodDef(i); - index.Set(m_index, i); + index.Set(assemblyIndex, i); - if (md->Flags & CLR_RECORD_METHODDEF::MD_StaticConstructor) + if (md->flags & CLR_RECORD_METHODDEF::MD_StaticConstructor) { return true; } @@ -4534,22 +4534,22 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() for (int i = 0; i < m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) { CLR_RT_TypeDef_Index index; - index.Set(m_index, i); + index.Set(assemblyIndex, i); CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(index); CLR_UINT32 hash = ComputeHashForName(index, 0); while (NANOCLR_INDEX_IS_VALID(inst)) { - const CLR_RECORD_TYPEDEF *target = inst.m_target; - const CLR_RECORD_FIELDDEF *fd = inst.m_assm->GetFieldDef(target->FirstInstanceField); + const CLR_RECORD_TYPEDEF *target = inst.target; + const CLR_RECORD_FIELDDEF *fd = inst.assembly->GetFieldDef(target->firstInstanceField); - for (int j = 0; j < target->InstanceFieldsCount; j++, fd++) + for (int j = 0; j < target->instanceFieldsCount; j++, fd++) { - if ((fd->Flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) + if ((fd->flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) { CLR_RT_SignatureParser parser; - parser.Initialize_FieldDef(inst.m_assm, fd); + parser.Initialize_FieldDef(inst.assembly, fd); CLR_RT_SignatureParser::Element res; NANOCLR_CHECK_HRESULT(parser.Advance(res)); @@ -4566,7 +4566,7 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() hash = ComputeHashForName(res.Class, hash); } - const char *fieldName = inst.m_assm->GetString(fd->Name); + const char *fieldName = inst.assembly->GetString(fd->name); hash = SUPPORT_ComputeCRC(fieldName, (CLR_UINT32)hal_strlen_s(fieldName), hash); } @@ -4674,7 +4674,7 @@ void CLR_RT_TypeSystem::Link(CLR_RT_Assembly *assm) { *ppASSM = assm; - assm->m_index = index; + assm->assemblyIndex = index; PostLinkageProcessing(assm); @@ -4724,8 +4724,8 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R // we will enforce only the first two number because (by convention) // only the minor field is required to be bumped when native assemblies change CRC else if ( - ver->iMajorVersion == pASSM->m_header->version.iMajorVersion && - ver->iMinorVersion == pASSM->m_header->version.iMinorVersion) + ver->majorVersion == pASSM->m_header->version.majorVersion && + ver->minorVersion == pASSM->m_header->version.minorVersion) { return pASSM; } @@ -4870,7 +4870,7 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, inst.InitializeFromIndex(res); - if (inst.m_assm->FindTypeDef(rgName, res.Type(), res) == false) + if (inst.assembly->FindTypeDef(rgName, res.Type(), res) == false) { return false; } @@ -4979,7 +4979,7 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, inst.InitializeFromIndex(res); - if (inst.m_assm->FindTypeDef(rgName, res.Type(), res) == false) + if (inst.assembly->FindTypeDef(rgName, res.Type(), res) == false) { return false; } @@ -5023,7 +5023,7 @@ HRESULT CLR_RT_TypeSystem::LocateResourceFile( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_Assembly *pAssm = assm.m_assm; + CLR_RT_Assembly *pAssm = assm.assembly; for (indexResourceFile = 0; indexResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; indexResourceFile++) { @@ -5050,7 +5050,7 @@ HRESULT CLR_RT_TypeSystem::LocateResource( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_Assembly *pAssm = assm.m_assm; + CLR_RT_Assembly *pAssm = assm.assembly; const CLR_RECORD_RESOURCE_FILE *resourceFile; CLR_RECORD_RESOURCE resourceT; const CLR_RECORD_RESOURCE *resNext; @@ -5492,7 +5492,7 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( return false; } - if (resLeft.Class.m_data != resRight.Class.m_data) + if (resLeft.Class.data != resRight.Class.data) { return false; } @@ -5585,8 +5585,8 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( if (inst.InitializeFromIndex(cls) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - assm = inst.m_assm; - td = inst.m_target; + assm = inst.assembly; + td = inst.target; fFullName = flags & CLR_RT_TypeSystem::TYPENAME_FLAGS_FULL; if (fFullName && td->HasValidEnclosingType()) @@ -5602,9 +5602,9 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( (flags & CLR_RT_TypeSystem::TYPENAME_NESTED_SEPARATOR_DOT) ? "." : "+")); } - if (fFullName && td->NameSpace != CLR_EmptyIndex) + if (fFullName && td->nameSpace != CLR_EmptyIndex) { - const char *szNameSpace = assm->GetString(td->NameSpace); + const char *szNameSpace = assm->GetString(td->nameSpace); if (szNameSpace[0]) { @@ -5613,7 +5613,7 @@ HRESULT CLR_RT_TypeSystem::BuildTypeName( } } - NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, assm->GetString(td->Name))); + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, assm->GetString(td->name))); while (levels-- > 0) { @@ -5649,12 +5649,12 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName( { NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); - CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.assembly->GetString(inst.target->name)); } else { CLR_RT_SignatureParser parser; - parser.Initialize_TypeSpec(inst.m_assm, inst.m_assm->GetTypeSpec(genericType->TypeSpec())); + parser.Initialize_TypeSpec(inst.assembly, inst.assembly->GetTypeSpec(genericType->TypeSpec())); CLR_RT_SignatureParser::Element element; @@ -5662,7 +5662,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName( parser.Advance(element); CLR_RT_TypeDef_Index typeDef; - typeDef.m_data = element.Class.m_data; + typeDef.data = element.Class.data; BuildTypeName(typeDef, szBuffer, iBuffer); @@ -5682,7 +5682,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName( } } - CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", inst.m_assm->GetString(inst.m_target->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", inst.assembly->GetString(inst.target->name)); } NANOCLR_NOCLEANUP(); @@ -5708,7 +5708,7 @@ HRESULT CLR_RT_TypeSystem::BuildFieldName(const CLR_RT_FieldDef_Index &fd, char NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); - CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.m_assm->GetString(inst.m_target->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", inst.assembly->GetString(inst.target->name)); NANOCLR_NOCLEANUP(); } @@ -5723,23 +5723,23 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[method.Method()]; const CLR_RECORD_METHODREF *methodRef = assembly->GetMethodRef(method.Method()); - if (memberCrossRef.GenericType.m_data == CLR_EmptyToken) + if (memberCrossRef.GenericType.data == CLR_EmptyToken) { // this is a MethodRef belonging to another assembly CLR_RT_MethodDef_Instance mdInstance; - mdInstance.m_data = memberCrossRef.Target.m_data; - mdInstance.m_assm = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; - mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); + mdInstance.data = memberCrossRef.Target.data; + mdInstance.assembly = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; + mdInstance.target = mdInstance.assembly->GetMethodDef(mdInstance.Method()); CLR_RT_TypeDef_Index typeOwner; typeOwner.Set( mdInstance.Assembly(), - mdInstance.m_assm->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); + mdInstance.assembly->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); NANOCLR_CHECK_HRESULT(BuildTypeName(typeOwner, szBuffer, iBuffer)); - CLR_SafeSprintf(szBuffer, iBuffer, "::%s", mdInstance.m_assm->GetString(mdInstance.m_target->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, "::%s", mdInstance.assembly->GetString(mdInstance.target->name)); } else { @@ -5754,7 +5754,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth parser.Advance(element); CLR_RT_TypeDef_Index typeDef; - typeDef.m_data = element.Class.m_data; + typeDef.data = element.Class.data; BuildTypeName(typeDef, szBuffer, iBuffer); @@ -5774,7 +5774,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth } } - CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", assembly->GetString(methodRef->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, ">::%s", assembly->GetString(methodRef->name)); } NANOCLR_NOCLEANUP(); @@ -5800,14 +5800,14 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms assembly = g_CLR_RT_TypeSystem.m_assemblies[ms.Assembly() - 1]; - msRecord = inst.m_assm->GetMethodSpec(ms.Method()); + msRecord = inst.assembly->GetMethodSpec(ms.Method()); - parser.Initialize_TypeSpec(inst.m_assm, inst.m_assm->GetTypeSpec(msRecord->Container)); + parser.Initialize_TypeSpec(inst.assembly, inst.assembly->GetTypeSpec(msRecord->container)); // get type parser.Advance(element); - typeDef.m_data = element.Class.m_data; + typeDef.data = element.Class.data; if (instOwner.InitializeFromIndex(typeDef) == false) { @@ -5841,7 +5841,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms case TBL_MethodDef: { const CLR_RECORD_METHODDEF *md = assembly->GetMethodDef(msRecord->MethodIndex()); - CLR_SafeSprintf(szBuffer, iBuffer, "%s", assembly->GetString(md->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, "%s", assembly->GetString(md->name)); break; } case TBL_MethodRef: @@ -5850,15 +5850,15 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; CLR_RT_MethodDef_Instance mdInstance; - mdInstance.m_data = memberCrossRef.Target.m_data; - mdInstance.m_assm = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; - mdInstance.m_target = mdInstance.m_assm->GetMethodDef(mdInstance.Method()); + mdInstance.data = memberCrossRef.Target.data; + mdInstance.assembly = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; + mdInstance.target = mdInstance.assembly->GetMethodDef(mdInstance.Method()); CLR_SafeSprintf( szBuffer, iBuffer, "%s", - mdInstance.m_assm->GetString(mdInstance.CrossReference().GetOwner())); + mdInstance.assembly->GetString(mdInstance.CrossReference().GetOwner())); break; } default: @@ -5880,12 +5880,12 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( if (calleeInst.InitializeFromIndex(calleeMD)) { - const char *calleeName = calleeInst.m_assm->GetString(calleeInst.m_target->Name); + const char *calleeName = calleeInst.assembly->GetString(calleeInst.target->name); CLR_RT_TypeDef_Instance inst; inst.InitializeFromMethod(calleeInst); - if ((inst.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == + if ((inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Interface) { // @@ -5930,15 +5930,15 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( CLR_RT_MethodDef_Instance calleeInst; calleeInst.InitializeFromIndex(calleeMD); - const CLR_RECORD_METHODDEF *calleeMDR = calleeInst.m_target; - CLR_UINT8 calleeArgumentsCount = calleeMDR->ArgumentsCount; + const CLR_RECORD_METHODDEF *calleeMDR = calleeInst.target; + CLR_UINT8 calleeArgumentsCount = calleeMDR->argumentsCount; while (NANOCLR_INDEX_IS_VALID(clsInst)) { - CLR_RT_Assembly *targetAssm = clsInst.m_assm; - const CLR_RECORD_TYPEDEF *targetTDR = clsInst.m_target; - const CLR_RECORD_METHODDEF *targetMDR = targetAssm->GetMethodDef(targetTDR->FirstMethod); - int num = targetTDR->VirtualMethodCount + targetTDR->InstanceMethodCount; + CLR_RT_Assembly *targetAssm = clsInst.assembly; + const CLR_RECORD_TYPEDEF *targetTDR = clsInst.target; + const CLR_RECORD_METHODDEF *targetMDR = targetAssm->GetMethodDef(targetTDR->firstMethod); + int num = targetTDR->virtualMethodCount + targetTDR->instanceMethodCount; for (int i = 0; i < num; i++, targetMDR++) { @@ -5949,10 +5949,10 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( return true; } - if (targetMDR->ArgumentsCount == calleeArgumentsCount && - (targetMDR->Flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) + if (targetMDR->argumentsCount == calleeArgumentsCount && + (targetMDR->flags & CLR_RECORD_METHODDEF::MD_Abstract) == 0) { - const char *targetName = targetAssm->GetString(targetMDR->Name); + const char *targetName = targetAssm->GetString(targetMDR->name); if (!strcmp(targetName, calleeName)) { @@ -5963,7 +5963,7 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( if (CLR_RT_TypeSystem::MatchSignature(parserLeft, parserRight)) { - index.Set(targetAssm->m_index, i + targetTDR->FirstMethod); + index.Set(targetAssm->assemblyIndex, i + targetTDR->firstMethod); return true; } @@ -6019,28 +6019,28 @@ void CLR_RT_AttributeEnumerator::Initialize(CLR_RT_Assembly *assm) void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_TypeDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.OwnerType = TBL_TypeDef; + m_data.ownerType = TBL_TypeDef; m_data.ownerIndex = inst.Type(); - Initialize(inst.m_assm); + Initialize(inst.assembly); } void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_FieldDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.OwnerType = TBL_FieldDef; + m_data.ownerType = TBL_FieldDef; m_data.ownerIndex = inst.Field(); - Initialize(inst.m_assm); + Initialize(inst.assembly); } void CLR_RT_AttributeEnumerator::Initialize(const CLR_RT_MethodDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - m_data.OwnerType = TBL_MethodDef; + m_data.ownerType = TBL_MethodDef; m_data.ownerIndex = inst.Method(); - Initialize(inst.m_assm); + Initialize(inst.assembly); } bool CLR_RT_AttributeEnumerator::Advance() @@ -6072,7 +6072,7 @@ bool CLR_RT_AttributeEnumerator::Advance() } else { - m_match.Set(m_assm->m_index, tk); + m_match.Set(m_assm->assemblyIndex, tk); } m_blob = m_assm->GetSignature(ptr->data); @@ -6105,7 +6105,7 @@ bool CLR_RT_AttributeEnumerator::MatchNext( { if (instMD) { - if (m_match.m_data != instMD->m_data) + if (m_match.data != instMD->data) continue; } @@ -6117,7 +6117,7 @@ bool CLR_RT_AttributeEnumerator::MatchNext( md.InitializeFromIndex(m_match); td.InitializeFromMethod(md); - if (td.m_data != instTD->m_data) + if (td.data != instTD->data) continue; } @@ -6146,7 +6146,7 @@ HRESULT CLR_RT_AttributeParser::Initialize(const CLR_RT_AttributeEnumerator &en) m_blob = en.m_blob; m_currentPos = 0; - m_fixed_Count = m_md.m_target->ArgumentsCount - 1; + m_fixed_Count = m_md.target->argumentsCount - 1; m_named_Count = -1; m_constructorParsed = false; m_mdIndex = en.m_match; @@ -6304,7 +6304,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) inst.InitializeFromIndex(fd); - m_parser.Initialize_FieldDef(inst.m_assm, inst.m_target); + m_parser.Initialize_FieldDef(inst.assembly, inst.target); } else { @@ -6336,9 +6336,9 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) CLR_RT_TypeDef_Instance td; td.InitializeFromIndex(m_res.Class); - if ((td.m_target->Flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) + if ((td.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { - m_res.DataType = (NanoCLRDataType)td.m_target->DataType; + m_res.DataType = (NanoCLRDataType)td.target->dataType; } } diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 2f49bb8a85..425b069781 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1427,10 +1427,10 @@ static void GetClrReleaseInfo(CLR_DBG_Commands::Debugging_Execution_QueryCLRCapa const CLR_RECORD_VERSION *mscorlibVer = &(g_CLR_RT_TypeSystem.m_assemblyMscorlib->m_header->version); NFVersion::Init( clrInfo.m_TargetFrameworkVersion, - mscorlibVer->iMajorVersion, - mscorlibVer->iMinorVersion, - mscorlibVer->iBuildNumber, - mscorlibVer->iRevisionNumber); + mscorlibVer->majorVersion, + mscorlibVer->minorVersion, + mscorlibVer->buildNumber, + mscorlibVer->revisionNumber); } else { @@ -1491,10 +1491,10 @@ static bool GetInteropNativeAssemblies(uint8_t *&data, uint32_t *size, uint32_t NFVersion::Init( interopNativeAssemblies[index].Version, - g_CLR_InteropAssembliesNativeData[i]->m_Version.iMajorVersion, - g_CLR_InteropAssembliesNativeData[i]->m_Version.iMinorVersion, - g_CLR_InteropAssembliesNativeData[i]->m_Version.iBuildNumber, - g_CLR_InteropAssembliesNativeData[i]->m_Version.iRevisionNumber); + g_CLR_InteropAssembliesNativeData[i]->m_Version.majorVersion, + g_CLR_InteropAssembliesNativeData[i]->m_Version.minorVersion, + g_CLR_InteropAssembliesNativeData[i]->m_Version.buildNumber, + g_CLR_InteropAssembliesNativeData[i]->m_Version.revisionNumber); index++; } @@ -2017,7 +2017,7 @@ CLR_RT_Assembly *CLR_DBG_Debugger::IsGoodAssembly(CLR_INDEX indexAssm) NATIVE_PROFILE_CLR_DEBUGGER(); NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - if (pASSM->m_index == indexAssm) + if (pASSM->assemblyIndex == indexAssm) return pASSM; } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -2121,8 +2121,8 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT { CLR_RT_StackFrame *stack = th->CurrentFrame(); - const CLR_RECORD_METHODDEF *target = stack->m_call.m_target; - CLR_UINT8 numArgs = target->ArgumentsCount; + const CLR_RECORD_METHODDEF *target = stack->m_call.target; + CLR_UINT8 numArgs = target->argumentsCount; if (numArgs) { @@ -2477,8 +2477,8 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) { cmdReply.m_md = call->m_inlineFrame->m_frame.m_call; cmdReply.m_IP = (CLR_UINT32)(call->m_inlineFrame->m_frame.m_IP - call->m_inlineFrame->m_frame.m_IPStart); - cmdReply.m_numOfArguments = call->m_inlineFrame->m_frame.m_call.m_target->ArgumentsCount; - cmdReply.m_numOfLocals = call->m_inlineFrame->m_frame.m_call.m_target->LocalsCount; + cmdReply.m_numOfArguments = call->m_inlineFrame->m_frame.m_call.target->argumentsCount; + cmdReply.m_numOfLocals = call->m_inlineFrame->m_frame.m_call.target->localsCount; cmdReply.m_depthOfEvalStack = (CLR_UINT32)(call->m_evalStack - call->m_inlineFrame->m_frame.m_evalStack); } else @@ -2486,8 +2486,8 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) { cmdReply.m_md = call->m_call; cmdReply.m_IP = (CLR_UINT32)(call->m_IP - call->m_IPstart); - cmdReply.m_numOfArguments = call->m_call.m_target->ArgumentsCount; - cmdReply.m_numOfLocals = call->m_call.m_target->LocalsCount; + cmdReply.m_numOfArguments = call->m_call.target->argumentsCount; + cmdReply.m_numOfLocals = call->m_call.target->localsCount; cmdReply.m_depthOfEvalStack = (CLR_UINT32)call->TopValuePosition(); } @@ -2543,7 +2543,7 @@ static bool IsBlockEnumMaybe(CLR_RT_HeapBlock *blk) if (FAILED(desc.InitializeFromObject(*blk))) return false; - const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[desc.m_handlerCls.m_target->DataType]; + const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[desc.m_handlerCls.target->dataType]; return (dtl.m_flags & c_MaskForPrimitive) == c_MaskForPrimitive; } @@ -2683,7 +2683,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) case CLR_DBG_Commands::Debugging_Value_GetStack::c_Argument: #ifndef NANOCLR_NO_IL_INLINE array = isInline ? call->m_inlineFrame->m_frame.m_args : call->m_arguments; - num = isInline ? md.m_target->ArgumentsCount : md.m_target->ArgumentsCount; + num = isInline ? md.target->argumentsCount : md.target->argumentsCount; #else array = call->m_arguments; num = call->m_call.m_target->ArgumentsCount; @@ -2693,7 +2693,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) case CLR_DBG_Commands::Debugging_Value_GetStack::c_Local: #ifndef NANOCLR_NO_IL_INLINE array = isInline ? call->m_inlineFrame->m_frame.m_locals : call->m_locals; - num = isInline ? md.m_target->LocalsCount : md.m_target->LocalsCount; + num = isInline ? md.target->localsCount : md.target->localsCount; #else array = call->m_locals; num = call->m_call.m_target->LocalsCount; @@ -2754,7 +2754,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) } else { - parser.Initialize_MethodLocals(md.m_assm, md.m_target); + parser.Initialize_MethodLocals(md.assembly, md.target); } do @@ -2766,14 +2766,14 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) if (res.DataType == DATATYPE_VAR) { // Generic parameter in a generic TypeDef - md.m_assm->FindGenericParamAtTypeSpec(md, res.GenericParamPosition, targetClass, targetDataType); + md.assembly->FindGenericParamAtTypeSpec(md, res.GenericParamPosition, targetClass, targetDataType); // isGenericInstance = true; } else if (res.DataType == DATATYPE_MVAR) { // Generic parameter in a generic method definition - CLR_RT_Assembly *assembly = md.m_assm; + CLR_RT_Assembly *assembly = md.assembly; CLR_RT_GenericParam_Index gpIndex; assembly->FindGenericParamAtMethodDef(md, res.GenericParamPosition, gpIndex); @@ -2820,7 +2820,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) desc.InitializeFromType(targetClass); // Check for enum - if (desc.m_handlerCls.m_target->IsEnum()) + if (desc.m_handlerCls.target->IsEnum()) { td = desc.m_handlerCls; pTD = &td; @@ -2863,7 +2863,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) while (true) { - CLR_UINT32 iFields = td.m_target->InstanceFieldsCount; + CLR_UINT32 iFields = td.target->instanceFieldsCount; CLR_UINT32 totalFields = td.CrossReference().m_totalFields; CLR_UINT32 dFields = totalFields - iFields; @@ -2879,7 +2879,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) } } - cmd->m_fd.Set(td.Assembly(), td.m_target->FirstInstanceField + offset); + cmd->m_fd.Set(td.Assembly(), td.target->firstInstanceField + offset); } if (!g_CLR_DBG_Debugger->CheckFieldDef(cmd->m_fd, inst)) @@ -2934,7 +2934,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) { if (SUCCEEDED(desc.InitializeFromFieldDefinition(inst))) { - if (desc.m_handlerCls.m_target->IsEnum()) + if (desc.m_handlerCls.target->IsEnum()) { pTD = &desc.m_handlerCls; } @@ -2984,7 +2984,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) { if (td.InitializeFromIndex(array->ReflectionDataConst().m_data.m_type)) { - if (td.m_target->IsEnum()) + if (td.target->IsEnum()) { pTD = &td; } @@ -3277,7 +3277,7 @@ static HRESULT AnalyzeObject_Helper(CLR_RT_HeapBlock *ptr, AnalyzeObject &ao) case CLR_RT_DataTypeLookup::c_ValueType: case CLR_RT_DataTypeLookup::c_Enum: ao.m_fCanBeNull = - ao.m_fBoxed || (ao.m_desc.m_handlerCls.m_data == g_CLR_RT_WellKnownTypes.m_String.m_data); + ao.m_fBoxed || (ao.m_desc.m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_String.data); break; default: @@ -3383,7 +3383,7 @@ bool CLR_DBG_Debugger::Debugging_TypeSys_Assemblies(WP_Message *msg) NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - assemblies[num++].Set(pASSM->m_index); + assemblies[num++].Set(pASSM->assemblyIndex); } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -3664,7 +3664,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Method(WP_Message *msg) cmdReply->m_td = instOwner; - CLR_SafeSprintf(szBuffer, iBuffer, "%s", inst.m_assm->GetString(inst.m_target->Name)); + CLR_SafeSprintf(szBuffer, iBuffer, "%s", inst.assembly->GetString(inst.target->name)); WP_ReplyToCommand(msg, true, false, cmdReply, sizeof(CLR_DBG_Commands::Debugging_Resolve_Method::Reply)); @@ -3753,7 +3753,7 @@ bool CLR_DBG_Debugger::Debugging_Deployment_Status(WP_Message *msg) CLR_RT_Memory::ZeroFill(cmdReply, totLength); - cmdReply->EntryPoint = g_CLR_RT_TypeSystem.m_entryPoint.m_data; + cmdReply->EntryPoint = g_CLR_RT_TypeSystem.m_entryPoint.data; cmdReply->StorageStart = deploySectorStart; cmdReply->StorageLength = deployLength; @@ -3783,7 +3783,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC_Method(const CLR_RT_MethodDef_Index return false; } - if (inst.m_target->RVA == CLR_EmptyIndex) + if (inst.target->rva == CLR_EmptyIndex) { return false; } @@ -3804,12 +3804,12 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC_Type(const CLR_RT_TypeDef_Index &id if (!CheckTypeDef(idx, inst)) return false; - td = inst.m_target; - totMethods = td->VirtualMethodCount + td->InstanceMethodCount + td->StaticFieldsCount; + td = inst.target; + totMethods = td->virtualMethodCount + td->instanceMethodCount + td->staticFieldsCount; for (int i = 0; i < totMethods; i++) { - md.Set(idx.Assembly(), td->FirstMethod + i); + md.Set(idx.Assembly(), td->firstMethod + i); Debugging_Info_SetJMC_Method(md, fJMC); } diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 8fe2884397..ad9d3210bb 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -445,13 +445,13 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE #define LOOKUP_ELEMENT_REF(index, tblName, tblNameUC, tblName2) \ const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[index].Target; \ - if (s->m_data == 0) \ + if (s->data == 0) \ s = NULL #define LOOKUP_ELEMENT_IDX(index, tblName, tblNameUC) \ const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ CLR_RT_##tblName##_Index s; \ - s.Set(m_index, index) + s.Set(assemblyIndex, index) #if defined(NANOCLR_TRACE_INSTRUCTIONS) @@ -479,7 +479,7 @@ void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) } else { - CLR_Debug::Printf("%s.%s", GetString(p->NameSpace), GetString(p->Name)); + CLR_Debug::Printf("%s.%s", GetString(p->nameSpace), GetString(p->name)); } break; } @@ -492,7 +492,7 @@ void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) } else { - CLR_Debug::Printf("%s", GetString(p->Name)); + CLR_Debug::Printf("%s", GetString(p->name)); } break; } diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 940195d7d8..0d1f5b2075 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -356,8 +356,8 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_STACK_FRAME: { CLR_RT_StackFrame *stack = (CLR_RT_StackFrame *)ptr; - DumpListOfReferences(stack->m_arguments, stack->m_call.m_target->ArgumentsCount); - DumpListOfReferences(stack->m_locals, stack->m_call.m_target->LocalsCount); + DumpListOfReferences(stack->m_arguments, stack->m_call.target->argumentsCount); + DumpListOfReferences(stack->m_locals, stack->m_call.target->localsCount); DumpListOfReferences(stack->m_evalStack, stack->TopValuePosition()); break; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 88041332d7..543e00129c 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -595,8 +595,8 @@ static const int MAXTYPENAMELEN = 256; // Including terminating null byte. Enfor //////////////////////////////////////////////////////////////////////////////////////////////////// -#define NANOCLR_INDEX_IS_VALID(index) ((index).m_data != 0) -#define NANOCLR_INDEX_IS_INVALID(index) ((index).m_data == 0) +#define NANOCLR_INDEX_IS_VALID(index) ((index).data != 0) +#define NANOCLR_INDEX_IS_INVALID(index) ((index).data == 0) // // IMPORTANT: THE ASSEMBLY IDX IN ALL THE CLR_RT_*_Index STRUCTURES SHOULD ALWAYS BE ENCODED THE SAME WAY!!! @@ -607,170 +607,170 @@ static const int MAXTYPENAMELEN = 256; // Including terminating null byte. Enfor struct CLR_RT_Assembly_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm) { - m_data = indexAssm << 24; + data = indexAssm << 24; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } }; struct CLR_RT_TypeSpec_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) { - m_data = indexAssm << 24 | indexType; + data = indexAssm << 24 | indexType; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX TypeSpec() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; struct CLR_RT_TypeDef_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexType) { - m_data = indexAssm << 24 | indexType; + data = indexAssm << 24 | indexType; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX Type() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; struct CLR_RT_MethodSpec_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 24 | indexMethod; + data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX Method() const { - return (m_data & 0x7FFF); + return (data & 0x7FFF); } }; struct CLR_RT_FieldDef_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexField) { - m_data = indexAssm << 24 | indexField; + data = indexAssm << 24 | indexField; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX Field() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; struct CLR_RT_MethodDef_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 24 | indexMethod; + data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX Method() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; @@ -805,30 +805,30 @@ struct CLR_RT_MethodRef_Index struct CLR_RT_GenericParam_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexGenericParam) { - m_data = indexAssm << 24 | indexGenericParam; + data = indexAssm << 24 | indexGenericParam; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_UINT8 GenericParam() const { - return (CLR_UINT8)(m_data); + return (CLR_UINT8)(data); } }; @@ -1323,7 +1323,8 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT // this flag should be set when the m_header was malloc'ed static const CLR_UINT32 FreeOnDestroy = 0x00000100; - CLR_UINT32 m_index; // Relative to the type system (for static fields access). + // Relative to the type system (for static fields access). + CLR_UINT32 assemblyIndex; CLR_UINT32 m_flags; const CLR_RECORD_ASSEMBLY *m_header; // ANY HEAP - DO RELOCATION - @@ -2097,7 +2098,7 @@ extern CLR_RT_TypeSystem g_CLR_RT_TypeSystem; struct CLR_RT_Assembly_Instance : public CLR_RT_Assembly_Index { - CLR_RT_Assembly *m_assm; + CLR_RT_Assembly *assembly; //--// @@ -2107,10 +2108,10 @@ struct CLR_RT_Assembly_Instance : public CLR_RT_Assembly_Index struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_TYPESPEC *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_TYPESPEC *target; - CLR_INDEX TypeDefIndex; + CLR_INDEX typeDefIndex; //--// @@ -2124,11 +2125,11 @@ struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_TYPEDEF *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_TYPEDEF *target; #if defined(NANOCLR_INSTANCE_NAMES) - const char *Name; + const char *name; #endif //--// @@ -2147,7 +2148,7 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index CLR_RT_TypeDef_CrossReference &CrossReference() const { - return m_assm->m_pCrossReference_TypeDef[Type()]; + return assembly->m_pCrossReference_TypeDef[Type()]; } bool SwitchToParent(); @@ -2160,13 +2161,13 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_FIELDDEF *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_FIELDDEF *target; const CLR_RT_TypeSpec_Index *genericType; #if defined(NANOCLR_INSTANCE_NAMES) - const char *Name; + const char *name; #endif //--// @@ -2180,7 +2181,7 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index CLR_RT_FieldDef_CrossReference &CrossReference() const { - return m_assm->m_pCrossReference_FieldDef[Field()]; + return assembly->m_pCrossReference_FieldDef[Field()]; } }; @@ -2188,13 +2189,13 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_METHODDEF *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_METHODDEF *target; const CLR_RT_TypeSpec_Index *genericType; #if defined(NANOCLR_INSTANCE_NAMES) - const char *Name; + const char *name; #endif //--// @@ -2208,7 +2209,7 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index CLR_RT_MethodDef_CrossReference &CrossReference() const { - return m_assm->m_pCrossReference_MethodDef[Method()]; + return assembly->m_pCrossReference_MethodDef[Method()]; } CLR_UINT32 Hits() const { @@ -2218,18 +2219,18 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_MethodDef_DebuggingInfo &DebuggingInfo() const { - return m_assm->m_pDebuggingInfo_MethodDef[Method()]; + return assembly->m_pDebuggingInfo_MethodDef[Method()]; } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) }; struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_GENERICPARAM *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_GENERICPARAM *target; #if defined(NANOCLR_INSTANCE_NAMES) - const char *Name; + const char *name; #endif //--// @@ -2244,14 +2245,14 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index CLR_RT_GenericParam_CrossReference &CrossReference() const { - return m_assm->m_pCrossReference_GenericParam[GenericParam()]; + return assembly->m_pCrossReference_GenericParam[GenericParam()]; } }; struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index { - CLR_RT_Assembly *m_assm; - const CLR_RECORD_METHODSPEC *m_target; + CLR_RT_Assembly *assembly; + const CLR_RECORD_METHODSPEC *target; //--// @@ -2261,7 +2262,7 @@ struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index CLR_RT_MethodSpec_CrossReference &CrossReference() const { - return m_assm->m_pCrossReference_MethodSpec[Method()]; + return assembly->m_pCrossReference_MethodSpec[Method()]; } CLR_INDEX Container(); @@ -2359,9 +2360,9 @@ struct CLR_RT_TypeDescriptor NanoCLRDataType GetDataType() const { - if (m_handlerCls.m_data != 0) + if (m_handlerCls.data != 0) { - return (NanoCLRDataType)m_handlerCls.m_target->DataType; + return (NanoCLRDataType)m_handlerCls.target->dataType; } else { diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 19573c6a24..00071e91b9 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -1165,7 +1165,7 @@ struct CLR_RT_HeapBlock void SetGenericType(const CLR_RT_TypeSpec_Index& genericType) { m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_GENERICINST, 0, 1); - m_data.genericInstance.genericType.m_data = genericType.m_data; + m_data.genericInstance.genericType.data = genericType.data; } const CLR_RT_TypeSpec_Index& ObjectGenericType() const diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index 8f4e30e5be..8cc3c3d792 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -997,10 +997,10 @@ struct CLR_Debug struct CLR_RECORD_VERSION { - CLR_UINT16 iMajorVersion; - CLR_UINT16 iMinorVersion; - CLR_UINT16 iBuildNumber; - CLR_UINT16 iRevisionNumber; + CLR_UINT16 majorVersion; + CLR_UINT16 minorVersion; + CLR_UINT16 buildNumber; + CLR_UINT16 revisionNumber; }; struct CLR_RECORD_ASSEMBLY @@ -1090,15 +1090,15 @@ struct CLR_RECORD_TYPEREF { /// @brief Index into TBL_Strings /// - CLR_STRING Name; + CLR_STRING name; /// @brief Index into TBL_Strings /// - CLR_STRING NameSpace; + CLR_STRING nameSpace; /// @brief TypeRefOrAssemblyRef -> Index into TBL_AssemblyRef (ORed with 0x0000) | TBL_TypeRef (ORed with 0x8000) /// - CLR_INDEX Scope; + CLR_INDEX scope; }; CT_ASSERT(sizeof(CLR_RECORD_TYPEREF) == sizeOf_CLR_RECORD_TYPEREF) @@ -1107,14 +1107,14 @@ struct CLR_RECORD_FIELDREF { /// @brief Index into TBL_Strings /// - CLR_STRING Name; + CLR_STRING name; /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing this field CLR_EncodedTypeRefOrSpec encodedOwner; /// @brief Index into TBL_Signatures /// - CLR_SIG Sig; + CLR_SIG signature; /// @brief Index into owner table /// @@ -1139,7 +1139,7 @@ struct CLR_RECORD_METHODREF { /// @brief Index into TBL_Strings /// - CLR_STRING Name; + CLR_STRING name; /// @brief Encoded index into TBL_TypeRef or TBL_TypeSpec for the type containing the method /// @@ -1147,7 +1147,7 @@ struct CLR_RECORD_METHODREF /// @brief Index into TBL_Signatures /// - CLR_SIG Sig; + CLR_SIG signature; //--// @@ -1229,11 +1229,11 @@ struct CLR_RECORD_TYPEDEF /// @brief Index into TBL_Strings with the name of the type /// - CLR_STRING Name; + CLR_STRING name; /// @brief Index into TBL_Strings with the name of the namespace containing the type /// - CLR_STRING NameSpace; + CLR_STRING nameSpace; /// @brief Encoded index for TypeDefOrRef -> Index into TBL_TypeDef | TBL_TypeRef /// @@ -1245,66 +1245,66 @@ struct CLR_RECORD_TYPEDEF /// @brief Index into TBL_Signatures blob table for the set of interfaces implemented by this type /// - CLR_SIG Interfaces; + CLR_SIG interfaces; /// @brief Index into TBL_MethodDef for the first method of the type /// - CLR_INDEX FirstMethod; + CLR_INDEX firstMethod; /// @brief Count of virtual methods in the type /// - CLR_UINT8 VirtualMethodCount; + CLR_UINT8 virtualMethodCount; /// @brief Count of instance methods in the type /// - CLR_UINT8 InstanceMethodCount; + CLR_UINT8 instanceMethodCount; /// @brief Count of static methods in the type /// - CLR_UINT8 StaticMethodCount; + CLR_UINT8 staticMethodCount; /// @brief Data type identity for the type /// - CLR_UINT8 DataType; + CLR_UINT8 dataType; /// @brief Index into TBL_FieldDef for the first static field of the type /// - CLR_INDEX FirstStaticField; + CLR_INDEX firstStaticField; /// @brief Index into TBL_FieldDef for the first instance field of the type /// - CLR_INDEX FirstInstanceField; + CLR_INDEX firstInstanceField; /// @brief Count of static fields in the type /// - CLR_UINT8 StaticFieldsCount; + CLR_UINT8 staticFieldsCount; /// @brief Count of instance fields in the type /// - CLR_UINT8 InstanceFieldsCount; + CLR_UINT8 instanceFieldsCount; /// @brief Index into TBL_GenericParam for the first generic parameter for the type /// - CLR_INDEX FirstGenericParam; + CLR_INDEX firstGenericParam; /// @brief Count of generic parameters for the type /// - CLR_UINT8 GenericParamCount; + CLR_UINT8 genericParamCount; /// @brief Flags defining intrinsic attributes and access modifiers for the type /// - CLR_UINT16 Flags; + CLR_UINT16 flags; //--// bool IsEnum() const { - return (Flags & (TD_Semantics_Mask)) == TD_Semantics_Enum; + return (flags & (TD_Semantics_Mask)) == TD_Semantics_Enum; } bool IsDelegate() const { - return (Flags & (TD_Delegate | TD_MulticastDelegate)) != 0; + return (flags & (TD_Delegate | TD_MulticastDelegate)) != 0; } bool HasValidExtendsType() const @@ -1379,17 +1379,17 @@ struct CLR_RECORD_FIELDDEF /// @brief Index into TBL_Strings /// - CLR_STRING Name; + CLR_STRING name; /// @brief Index into TBL_Signatures /// - CLR_SIG Sig; + CLR_SIG signature; /// @brief Index into TBL_Signatures /// - CLR_SIG DefaultValue; + CLR_SIG defaultValue; - CLR_UINT16 Flags; + CLR_UINT16 flags; }; CT_ASSERT(sizeof(CLR_RECORD_FIELDDEF) == sizeOf_CLR_RECORD_FIELDDEF) @@ -1491,47 +1491,47 @@ struct CLR_RECORD_METHODDEF /// @brief Index into TBL_Strings for the name of the method /// - CLR_STRING Name; + CLR_STRING name; /// @brief Offset into the IL byte code blob table for the opcodes of the method /// - CLR_OFFSET RVA; + CLR_OFFSET rva; /// @brief Flags to indicate intrinsic attributes and semantics of the method /// - CLR_UINT32 Flags; + CLR_UINT32 flags; /// @brief DataType of the return value for the method /// - CLR_UINT8 RetVal; + CLR_UINT8 retValDataType; /// @brief Count of arguments to the method /// - CLR_UINT8 ArgumentsCount; + CLR_UINT8 argumentsCount; /// @brief Count of local variables for the method /// - CLR_UINT8 LocalsCount; + CLR_UINT8 localsCount; /// @brief Length of the evaluation stack for the method /// - CLR_UINT8 LengthEvalStack; + CLR_UINT8 lengthEvalStack; /// @brief Index into TBL_Signatures to describe the locals for the method /// - CLR_SIG Locals; + CLR_SIG locals; /// @brief Index into TBL_GenericParam for the first generic parameter for the method /// - CLR_INDEX FirstGenericParam; + CLR_INDEX firstGenericParam; /// @brief Count of generic parameters for the method /// - CLR_UINT8 GenericParamCount; + CLR_UINT8 genericParamCount; /// @brief Index into TBL_Signatures that describes the method itself /// - CLR_SIG Sig; + CLR_SIG signature; }; CT_ASSERT(sizeof(CLR_RECORD_METHODDEF) == sizeOf_CLR_RECORD_METHODDEF) @@ -1546,7 +1546,7 @@ struct CLR_RECORD_ATTRIBUTE { /// @brief one of TBL_TypeDef, TBL_MethodDef, or TBL_FieldDef. /// - CLR_UINT16 OwnerType; + CLR_UINT16 ownerType; /// @brief TBL_TypeDef | TBL_MethodDef | TBL_FielfDef /// @@ -1559,7 +1559,7 @@ struct CLR_RECORD_ATTRIBUTE CLR_UINT16 Key() const { - return *(CLR_UINT16 *)&OwnerType; + return *(CLR_UINT16 *)&ownerType; } }; @@ -1571,7 +1571,7 @@ struct CLR_RECORD_TYPESPEC { /// @brief Index into TBL_Signatures /// - CLR_SIG Sig; + CLR_SIG signature; }; CT_ASSERT(sizeof(CLR_RECORD_TYPESPEC) == sizeOf_CLR_RECORD_TYPESPEC) @@ -1580,23 +1580,23 @@ struct CLR_RECORD_GENERICPARAM { /// @brief 2-byte index of the generic parameter, numbered left -to-right, from zero. /// - CLR_UINT16 Number; + CLR_UINT16 number; /// @brief 2-byte bitmask of type GenericParamAttributes /// - CLR_UINT16 Flags; + CLR_UINT16 flags; /// @brief TypeOrMethodDef -> Index into TBL_TypeDef TBL_MethodDef /// - CLR_TYPEORMETHODDEF Owner; + CLR_TYPEORMETHODDEF owner; /// @brief Index into TBL_Signatures for parameter type signature /// - CLR_SIG Sig; + CLR_SIG signature; /// @brief Index into TBL_Strings /// - CLR_STRING Name; + CLR_STRING name; }; CT_ASSERT(sizeof(CLR_RECORD_GENERICPARAM) == sizeOf_CLR_RECORD_GENERICPARAM) @@ -1609,11 +1609,11 @@ struct CLR_RECORD_METHODSPEC /// @brief Index into TBL_Signatures holding the signature of this instantiation /// - CLR_SIG Instantiation; + CLR_SIG instantiation; /// @brief Index into TBL_Signatures for the type specification containing the method /// - CLR_INDEX Container; + CLR_INDEX container; /// @brief Index into table pointed by TBL_MethodDef | TBL_MethodRef /// diff --git a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp index fef7f0117c..785bece01f 100644 --- a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp +++ b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp @@ -45,7 +45,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO if (resource != NULL) // otherwise NULL is returned { - pAssm = assm.m_assm; + pAssm = assm.assembly; buf = pAssm->GetResourceData(resource->offset); switch (resource->kind) @@ -139,7 +139,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO if (resource != NULL) // otherwise NULL is returned { - pAssm = assm.m_assm; + pAssm = assm.assembly; buf = pAssm->GetResourceData(resource->offset); switch (resource->kind) diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index bc20c2f3d7..acb581e75b 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -513,10 +513,10 @@ struct Settings printf( "Missing assembly: %s (%d.%d.%d.%d)\n", szName, - src->version.iMajorVersion, - src->version.iMinorVersion, - src->version.iBuildNumber, - src->version.iRevisionNumber); + src->version.majorVersion, + src->version.minorVersion, + src->version.buildNumber, + src->version.revisionNumber); fError = true; } From ff65d4f84dff34ca196a40a207b4816acc7571c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 17:18:31 +0100 Subject: [PATCH 042/168] Global rename step 2 --- .../CorLib/corlib_native_System_Object.cpp | 6 +- ...tive_System_Reflection_ConstructorInfo.cpp | 2 +- ...lib_native_System_Reflection_FieldInfo.cpp | 2 +- ...ib_native_System_Reflection_MethodBase.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 32 +-- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 18 +- src/CLR/Core/CLR_RT_Memory.cpp | 16 +- src/CLR/Core/Execution.cpp | 30 +-- src/CLR/Core/Interpreter.cpp | 8 +- .../Core/Serialization/BinaryFormatter.cpp | 22 +- src/CLR/Core/TypeSystem.cpp | 246 +++++++++--------- src/CLR/Debugger/Debugger.cpp | 22 +- src/CLR/Diagnostics/Info.cpp | 2 +- src/CLR/Diagnostics/Profiler.cpp | 12 +- src/CLR/Include/nanoCLR_Runtime.h | 89 +++---- 15 files changed, 255 insertions(+), 254 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Object.cpp b/src/CLR/CorLib/corlib_native_System_Object.cpp index f54488e118..e7a4e5bbb7 100644 --- a/src/CLR/CorLib/corlib_native_System_Object.cpp +++ b/src/CLR/CorLib/corlib_native_System_Object.cpp @@ -45,9 +45,9 @@ HRESULT Library_corlib_native_System_Object::GetType___SystemType(CLR_RT_StackFr if (pObj && arg0.DataType() == DATATYPE_REFLECTION) { - index.m_kind = REFLECTION_TYPE; - index.m_levels = 0; - index.m_data.m_type.data = desc.m_handlerCls.data; + index.kind = REFLECTION_TYPE; + index.levels = 0; + index.data.type.data = desc.m_handlerCls.data; } else { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp index 32b1c52014..d85d083888 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp @@ -27,7 +27,7 @@ HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT CLR_RT_HeapBlock *args = NULL; int ArgumentsCount = 0; - if (md.InitializeFromIndex(thisRef->ReflectionDataConst().m_data.m_method) == false) + if (md.InitializeFromIndex(thisRef->ReflectionDataConst().data.method) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); if (stack.m_customState == 0) diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index 459d787378..b4ba19b52d 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -115,7 +115,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( CLR_RT_St NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - obj = &obj[ instFD.CrossReference().m_offset ]; + obj = &obj[ instFD.CrossReference().offset ]; } NANOCLR_NOCLEANUP(); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 379fd0b217..7efe0a6a33 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -259,7 +259,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ // deal with array types if (paramElement.Levels > 0) { - hbObj->ReflectionData().m_levels = (CLR_UINT16)paramElement.Levels; + hbObj->ReflectionData().levels = (CLR_UINT16)paramElement.Levels; } // move pointer to the next element diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index b8e5f5cfe2..8fe35a4415 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -225,9 +225,9 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_Assembly_Index &assm) NANOCLR_HEADER(); m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); - m_data.reflection.m_kind = REFLECTION_ASSEMBLY; - m_data.reflection.m_levels = 0; - m_data.reflection.m_data.m_assm = assm; + m_data.reflection.kind = REFLECTION_ASSEMBLY; + m_data.reflection.levels = 0; + m_data.reflection.data.assembly = assm; NANOCLR_NOCLEANUP_NOLABEL(); } @@ -253,9 +253,9 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_TypeDef_Index &cls) NANOCLR_HEADER(); m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); - m_data.reflection.m_kind = REFLECTION_TYPE; - m_data.reflection.m_levels = 0; - m_data.reflection.m_data.m_type = cls; + m_data.reflection.kind = REFLECTION_TYPE; + m_data.reflection.levels = 0; + m_data.reflection.data.type = cls; NANOCLR_NOCLEANUP_NOLABEL(); } @@ -266,9 +266,9 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_FieldDef_Index &fd) NANOCLR_HEADER(); m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); - m_data.reflection.m_kind = REFLECTION_FIELD; - m_data.reflection.m_levels = 0; - m_data.reflection.m_data.m_field = fd; + m_data.reflection.kind = REFLECTION_FIELD; + m_data.reflection.levels = 0; + m_data.reflection.data.field = fd; NANOCLR_NOCLEANUP_NOLABEL(); } @@ -286,10 +286,10 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_MethodDef_Index &md) } m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); - m_data.reflection.m_kind = + m_data.reflection.kind = (inst.target->flags & CLR_RECORD_METHODDEF::MD_Constructor) ? REFLECTION_CONSTRUCTOR : REFLECTION_METHOD; - m_data.reflection.m_levels = 0; - m_data.reflection.m_data.m_method = md; + m_data.reflection.levels = 0; + m_data.reflection.data.method = md; NANOCLR_NOCLEANUP(); } @@ -1161,7 +1161,7 @@ CLR_UINT32 CLR_RT_HeapBlock::GetHashCode(CLR_RT_HeapBlock *ptr, bool fRecurse, C if (fRecurse) { - int totFields = cls.CrossReference().m_totalFields; + int totFields = cls.CrossReference().totalFields; if (totFields > 0) { @@ -1416,7 +1416,7 @@ static const CLR_RT_HeapBlock *FixReflectionForType(const CLR_RT_HeapBlock &src, NATIVE_PROFILE_CLR_CORE(); const CLR_RT_ReflectionDef_Index &rd = src.ReflectionDataConst(); - if (rd.m_kind == REFLECTION_TYPE) + if (rd.kind == REFLECTION_TYPE) { CLR_RT_TypeDef_Instance inst; CLR_UINT32 levels; @@ -1427,7 +1427,7 @@ static const CLR_RT_HeapBlock *FixReflectionForType(const CLR_RT_HeapBlock &src, CLR_RT_ReflectionDef_Index &rd2 = tmp.ReflectionData(); - rd2.InitializeFromHash(inst.CrossReference().m_hash); + rd2.InitializeFromHash(inst.CrossReference().hash); return &tmp; } @@ -1636,7 +1636,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C CLR_RT_HeapBlock hbLeft; CLR_RT_HeapBlock hbRight; - if (left.ReflectionDataConst().m_kind != right.ReflectionDataConst().m_kind) + if (left.ReflectionDataConst().kind != right.ReflectionDataConst().kind) { ptrLeft = FixReflectionForType(left, hbLeft); ptrRight = FixReflectionForType(right, hbRight); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index 40b3b1e9e2..0087231e0e 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -24,14 +24,14 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( if ((CLR_INT32)length < 0) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - if (reflex.m_kind != REFLECTION_TYPE) + if (reflex.kind != REFLECTION_TYPE) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if (reflex.m_levels == 1) + if (reflex.levels == 1) { - cls = reflex.m_data.m_type; + cls = reflex.data.type; } else { @@ -73,9 +73,9 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( CLR_RT_ReflectionDef_Index reflex; - reflex.m_kind = REFLECTION_TYPE; - reflex.m_levels = 1; - reflex.m_data.m_type = cls; + reflex.kind = REFLECTION_TYPE; + reflex.levels = 1; + reflex.data.type = cls; NANOCLR_SET_AND_LEAVE(CreateInstance(reference, length, reflex)); @@ -108,7 +108,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - ref.ReflectionData().m_levels++; + ref.ReflectionData().levels++; NANOCLR_SET_AND_LEAVE(CreateInstance(reference, length, ref.ReflectionData())); @@ -128,7 +128,7 @@ HRESULT CLR_RT_HeapBlock_Array::ClearElements(int index, int length) if (m_fReference) { NanoCLRDataType dt = (NanoCLRDataType)m_typeOfElement; - bool fAllocate = (reflex.m_levels == 1 && dt == DATATYPE_VALUETYPE); + bool fAllocate = (reflex.levels == 1 && dt == DATATYPE_VALUETYPE); CLR_RT_HeapBlock *ptr = (CLR_RT_HeapBlock *)data; switch (dt) @@ -150,7 +150,7 @@ HRESULT CLR_RT_HeapBlock_Array::ClearElements(int index, int length) if (fAllocate) { - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*ptr, reflex.m_data.m_type)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*ptr, reflex.data.type)); } ptr++; diff --git a/src/CLR/Core/CLR_RT_Memory.cpp b/src/CLR/Core/CLR_RT_Memory.cpp index 2da9ee3471..bbb5005a0c 100644 --- a/src/CLR/Core/CLR_RT_Memory.cpp +++ b/src/CLR/Core/CLR_RT_Memory.cpp @@ -22,11 +22,11 @@ static int s_PreHeapInitIndex = 0; void CLR_RT_Memory::Reset() { NATIVE_PROFILE_CLR_CORE(); - ::HeapLocation(s_CLR_RT_Heap.m_location, s_CLR_RT_Heap.m_size); + ::HeapLocation(s_CLR_RT_Heap.location, s_CLR_RT_Heap.size); // adjust GC thresholds - g_CLR_RT_GarbageCollector.c_memoryThreshold = (CLR_UINT32)(s_CLR_RT_Heap.m_size * HEAP_SIZE_THRESHOLD_RATIO); - g_CLR_RT_GarbageCollector.c_memoryThreshold2 = (CLR_UINT32)(s_CLR_RT_Heap.m_size * HEAP_SIZE_THRESHOLD_UPPER_RATIO); + g_CLR_RT_GarbageCollector.c_memoryThreshold = (CLR_UINT32)(s_CLR_RT_Heap.size * HEAP_SIZE_THRESHOLD_RATIO); + g_CLR_RT_GarbageCollector.c_memoryThreshold2 = (CLR_UINT32)(s_CLR_RT_Heap.size * HEAP_SIZE_THRESHOLD_UPPER_RATIO); #if defined(NANOCLR_TRACE_MALLOC) s_TotalAllocated = 0; @@ -38,11 +38,11 @@ void *CLR_RT_Memory::SubtractFromSystem(size_t len) NATIVE_PROFILE_CLR_CORE(); len = ROUNDTOMULTIPLE(len, CLR_UINT32); - if (len <= s_CLR_RT_Heap.m_size) + if (len <= s_CLR_RT_Heap.size) { - s_CLR_RT_Heap.m_size -= (CLR_UINT32)len; + s_CLR_RT_Heap.size -= (CLR_UINT32)len; - return &s_CLR_RT_Heap.m_location[s_CLR_RT_Heap.m_size]; + return &s_CLR_RT_Heap.location[s_CLR_RT_Heap.size]; } return NULL; @@ -64,7 +64,7 @@ void CLR_RT_Memory::Release(void *ptr) NATIVE_PROFILE_CLR_CORE(); // CLR heap not initialized yet, return (this is not an error condition because we allow pre - if (s_CLR_RT_Heap.m_size == 0) + if (s_CLR_RT_Heap.size == 0) { return; } @@ -125,7 +125,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) { NATIVE_PROFILE_CLR_CORE(); - if (s_CLR_RT_Heap.m_size == 0) + if (s_CLR_RT_Heap.size == 0) { unsigned char *heapStart = NULL; unsigned int heapSize = 0; diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 01103f6c41..0fd49e9419 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -135,8 +135,8 @@ HRESULT CLR_RT_ExecutionEngine::AllocateHeaps() const CLR_UINT32 c_HeapClusterSize = sizeof(CLR_RT_HeapBlock) * CLR_RT_HeapBlock::HB_MaxSize; - CLR_UINT8 *heapFirstFree = s_CLR_RT_Heap.m_location; - CLR_UINT32 heapFree = s_CLR_RT_Heap.m_size; + CLR_UINT8 *heapFirstFree = s_CLR_RT_Heap.location; + CLR_UINT32 heapFree = s_CLR_RT_Heap.size; CLR_INT32 i = 0; CLR_UINT32 blockSize = 1; @@ -958,7 +958,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread CLR_RT_AssemblyRef_CrossReference *ar = pASSM->m_pCrossReference_AssemblyRef; for (int i = 0; i < pASSM->m_pTablesSize[TBL_AssemblyRef]; i++, ar++) { - if ((ar->m_target->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) + if ((ar->target->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) { fDepedenciesRun = true; break; @@ -1725,7 +1725,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe } } #else - return &inst.assembly->m_pStaticFields[inst.CrossReference().m_offset]; + return &inst.assembly->m_pStaticFields[inst.CrossReference().offset]; #endif } @@ -1855,7 +1855,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - cls = assembly->m_pCrossReference_TypeRef[index].Target; + cls = assembly->m_pCrossReference_TypeRef[index].target; break; case TBL_TypeDef: @@ -1901,8 +1901,8 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; - cls = gp.Class; - dt = gp.DataType; + cls = gp.classTypeDef; + dt = gp.dataType; goto done; } @@ -2062,7 +2062,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR case DATATYPE_VALUETYPE: { int clsFields = inst.target->instanceFieldsCount; - int totFields = inst.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; + int totFields = inst.CrossReference().totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; CLR_RT_HeapBlock *obj = ExtractHeapBlocksForClassOrValueTypes(dt, 0, inst, totFields); CHECK_ALLOCATION(obj); @@ -2177,7 +2177,7 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( reference.SetObjectReference(NULL); int clsFields = instance.target->instanceFieldsCount; - int totFields = instance.CrossReference().m_totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; + int totFields = instance.CrossReference().totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; CLR_RT_HeapBlock_GenericInstance *genericInst; @@ -2299,7 +2299,7 @@ HRESULT CLR_RT_ExecutionEngine::CopyValueType(CLR_RT_HeapBlock *destination, con { CLR_RT_TypeDef_Instance inst; inst.InitializeFromIndex(cls); - CLR_UINT32 totFields = inst.CrossReference().m_totalFields; + CLR_UINT32 totFields = inst.CrossReference().totalFields; if (source->IsBoxed()) destination->Box(); @@ -2422,7 +2422,7 @@ HRESULT CLR_RT_ExecutionEngine::FindField(CLR_RT_HeapBlock &reference, const cha res = reference.Dereference(); FAULT_ON_NULL(res); - res += inst.CrossReference().m_offset; + res += inst.CrossReference().offset; } field = res; @@ -2959,7 +2959,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( CLR_RT_TypeDef_Instance &instTarget = descTarget.m_handlerCls; bool fArray = false; - while (desc.m_reflex.m_levels > 0 && descTarget.m_reflex.m_levels > 0) + while (desc.m_reflex.levels > 0 && descTarget.m_reflex.levels > 0) { desc.GetElementType(desc); descTarget.GetElementType(descTarget); @@ -2968,14 +2968,14 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( } // only check reflection levels if this is not an array - if (!fArray && desc.m_reflex.m_levels < descTarget.m_reflex.m_levels) + if (!fArray && desc.m_reflex.levels < descTarget.m_reflex.levels) { return false; } - if (desc.m_reflex.m_levels > descTarget.m_reflex.m_levels) + if (desc.m_reflex.levels > descTarget.m_reflex.levels) { - if (descTarget.m_reflex.m_levels == 0 && !isInstInstruction) + if (descTarget.m_reflex.levels == 0 && !isInstInstruction) { // // Casting from [] to System.Array or System.Object is always allowed. diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 4df4edc3b5..ca330c39a8 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -2532,7 +2532,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { case DATATYPE_CLASS: case DATATYPE_VALUETYPE: - evalPos[0].Assign(obj[fieldInst.CrossReference().m_offset]); + evalPos[0].Assign(obj[fieldInst.CrossReference().offset]); goto Execute_LoadAndPromote; case DATATYPE_DATETIME: case DATATYPE_TIMESPAN: @@ -2583,7 +2583,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) #endif if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) { - evalPos[0].SetReference(obj[fieldInst.CrossReference().m_offset]); + evalPos[0].SetReference(obj[fieldInst.CrossReference().offset]); } else if (dt == DATATYPE_DATETIME || dt == DATATYPE_TIMESPAN) // Special case. { @@ -2623,7 +2623,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) case DATATYPE_CLASS: case DATATYPE_VALUETYPE: case DATATYPE_GENERICINST: - obj[fieldInst.CrossReference().m_offset].AssignAndPreserveType(evalPos[2]); + obj[fieldInst.CrossReference().offset].AssignAndPreserveType(evalPos[2]); break; case DATATYPE_DATETIME: // Special case. case DATATYPE_TIMESPAN: // Special case. @@ -3381,7 +3381,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } else { - len = (CLR_RT_HeapBlock::HB_Object_Fields_Offset + clsInst.CrossReference().m_totalFields) * + len = (CLR_RT_HeapBlock::HB_Object_Fields_Offset + clsInst.CrossReference().totalFields) * sizeof(CLR_RT_HeapBlock); } diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index b928269fbc..38896d7a34 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -153,7 +153,7 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() if (m_typeExpected->m_flags & CLR_RT_DataTypeLookup::c_Array) { - sub.InitializeFromType(m_typeExpected->m_reflex.m_data.m_type); + sub.InitializeFromType(m_typeExpected->m_reflex.data.type); td = ⊂ } @@ -363,7 +363,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( if (value && value->DataType() == DATATYPE_REFLECTION) { - switch (value->ReflectionDataConst().m_kind) + switch (value->ReflectionDataConst().kind) { case REFLECTION_TYPE: case REFLECTION_TYPE_DELAYED: @@ -412,10 +412,10 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( if ((mask & c_Signature_Type) != 0) { - NANOCLR_CHECK_HRESULT(m_bf->WriteBits((CLR_UINT32)type->m_reflex.m_levels, TE_ArrayDepth)); + NANOCLR_CHECK_HRESULT(m_bf->WriteBits((CLR_UINT32)type->m_reflex.levels, TE_ArrayDepth)); CLR_RT_TypeDescriptor typeSub; - typeSub.InitializeFromType(type->m_reflex.m_data.m_type); + typeSub.InitializeFromType(type->m_reflex.data.type); NANOCLR_CHECK_HRESULT(EmitSignature_Inner(c_Signature_Header | c_Signature_Type, &typeSub, NULL)); } @@ -486,7 +486,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( if ((mask & c_Signature_Type) != 0) { - NANOCLR_SET_AND_LEAVE(m_bf->WriteType(type->m_handlerCls.CrossReference().m_hash)); + NANOCLR_SET_AND_LEAVE(m_bf->WriteType(type->m_handlerCls.CrossReference().hash)); } } @@ -625,7 +625,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) NANOCLR_SET_AND_LEAVE(CLR_E_SERIALIZATION_BADSTREAM); } - m_type->m_reflex.m_levels = depth; + m_type->m_reflex.levels = depth; m_type->ConvertToArray(); } } @@ -732,7 +732,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) { CLR_RT_TypeDescriptor sub; - if (m_type->m_reflex.m_levels != 1) + if (m_type->m_reflex.levels != 1) { // // Only simple arrays can have variable size. @@ -740,7 +740,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - sub.InitializeFromType(m_type->m_reflex.m_data.m_type); + sub.InitializeFromType(m_type->m_reflex.data.type); len = m_hints._arraySize; @@ -833,7 +833,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) if (value->DataType() == DATATYPE_REFLECTION) { - switch (value->ReflectionDataConst().m_kind) + switch (value->ReflectionDataConst().kind) { case REFLECTION_TYPE: case REFLECTION_TYPE_DELAYED: @@ -1343,7 +1343,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) reflex = &(src->ReflectionDataConst()); - switch (reflex->m_kind) + switch (reflex->kind) { case REFLECTION_ASSEMBLY: cls = &g_CLR_RT_WellKnownTypes.m_Assembly; @@ -1669,7 +1669,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextField() CLR_RT_FieldDef_Instance inst; inst.InitializeFromIndex(index); - m_fields_Pointer = m_value.m_value->Dereference() + inst.CrossReference().m_offset; + m_fields_Pointer = m_value.m_value->Dereference() + inst.CrossReference().offset; if ((inst.target->flags & CLR_RECORD_FIELDDEF::FD_NotSerialized) == 0) { diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 91a9b24e24..ab632ec7e8 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -77,31 +77,31 @@ bool s_CLR_RT_fTimeWarp = false; void CLR_RT_ReflectionDef_Index::Clear() { NATIVE_PROFILE_CLR_CORE(); - m_kind = REFLECTION_INVALID; - m_levels = 0; - m_data.m_raw = 0; + kind = REFLECTION_INVALID; + levels = 0; + data.raw = 0; } CLR_UINT32 CLR_RT_ReflectionDef_Index::GetTypeHash() const { NATIVE_PROFILE_CLR_CORE(); - switch (m_kind) + switch (kind) { case REFLECTION_TYPE: { CLR_RT_TypeDef_Instance inst; - if (m_levels != 0) + if (levels != 0) return 0; - if (!inst.InitializeFromIndex(m_data.m_type)) + if (!inst.InitializeFromIndex(data.type)) return 0; - return inst.CrossReference().m_hash; + return inst.CrossReference().hash; } case REFLECTION_TYPE_DELAYED: - return m_data.m_raw; + return data.raw; } return 0; @@ -110,9 +110,9 @@ CLR_UINT32 CLR_RT_ReflectionDef_Index::GetTypeHash() const void CLR_RT_ReflectionDef_Index::InitializeFromHash(CLR_UINT32 hash) { NATIVE_PROFILE_CLR_CORE(); - m_kind = REFLECTION_TYPE_DELAYED; - m_levels = 0; - m_data.m_raw = hash; + kind = REFLECTION_TYPE_DELAYED; + levels = 0; + data.raw = hash; } CLR_UINT64 CLR_RT_ReflectionDef_Index::GetRawData() const @@ -139,7 +139,7 @@ bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_RT_Assembly_ NATIVE_PROFILE_CLR_CORE(); if (ref.DataType() == DATATYPE_REFLECTION) { - return inst.InitializeFromIndex(ref.ReflectionDataConst().m_data.m_assm); + return inst.InitializeFromIndex(ref.ReflectionDataConst().data.assembly); } return false; @@ -161,11 +161,11 @@ bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_RT_MethodDef NATIVE_PROFILE_CLR_CORE(); if (ref.DataType() == DATATYPE_REFLECTION) { - switch (ref.ReflectionData().m_kind) + switch (ref.ReflectionData().kind) { case REFLECTION_CONSTRUCTOR: case REFLECTION_METHOD: - return inst.InitializeFromIndex(ref.ReflectionDataConst().m_data.m_method); + return inst.InitializeFromIndex(ref.ReflectionDataConst().data.method); } } @@ -175,9 +175,9 @@ bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_RT_MethodDef bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_RT_FieldDef_Instance &inst) { NATIVE_PROFILE_CLR_CORE(); - if (ref.DataType() == DATATYPE_REFLECTION && ref.ReflectionData().m_kind == REFLECTION_FIELD) + if (ref.DataType() == DATATYPE_REFLECTION && ref.ReflectionData().kind == REFLECTION_FIELD) { - return inst.InitializeFromIndex(ref.ReflectionDataConst().m_data.m_field); + return inst.InitializeFromIndex(ref.ReflectionDataConst().data.field); } return false; @@ -501,11 +501,11 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(*ptr)); } - desc.m_handlerCls.InitializeFromIndex(desc.m_reflex.m_data.m_type); + desc.m_handlerCls.InitializeFromIndex(desc.m_reflex.data.type); - res.Levels = desc.m_reflex.m_levels; + res.Levels = desc.m_reflex.levels; res.DataType = (NanoCLRDataType)desc.m_handlerCls.target->dataType; - res.Class = desc.m_reflex.m_data.m_type; + res.Class = desc.m_reflex.data.type; // // Special case for Object types. @@ -560,7 +560,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) break; case TBL_TypeRef: - res.Class = Assembly->m_pCrossReference_TypeRef[index].Target; + res.Class = Assembly->m_pCrossReference_TypeRef[index].target; break; case TBL_TypeDef: @@ -748,23 +748,23 @@ bool CLR_RT_TypeDef_Instance::InitializeFromReflection(const CLR_RT_ReflectionDe const CLR_RT_TypeDef_Index *ptr = NULL; if (levels) - *levels = reflex.m_levels; + *levels = reflex.levels; - switch (reflex.m_kind) + switch (reflex.kind) { case REFLECTION_TYPE: - if (reflex.m_levels > 0 && levels == NULL) + if (reflex.levels > 0 && levels == NULL) { ptr = &g_CLR_RT_WellKnownTypes.m_Array; } else { - ptr = &reflex.m_data.m_type; + ptr = &reflex.data.type; } break; case REFLECTION_TYPE_DELAYED: - if (g_CLR_RT_TypeSystem.FindTypeDef(reflex.m_data.m_raw, cls)) + if (g_CLR_RT_TypeSystem.FindTypeDef(reflex.data.raw, cls)) { ptr = &cls; } @@ -929,7 +929,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - data = assm->m_pCrossReference_TypeRef[index].Target.data; + data = assm->m_pCrossReference_TypeRef[index].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetTypeDef(Type()); @@ -955,10 +955,10 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( { CLR_RT_GenericParam_CrossReference gp = assm->m_pCrossReference_GenericParam[index]; - Set(gp.Class.Assembly(), gp.Class.Type()); + Set(gp.classTypeDef.Assembly(), gp.classTypeDef.Type()); - assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; - target = assembly->GetTypeDef(gp.Class.Type()); + assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.classTypeDef.Assembly() - 1]; + target = assembly->GetTypeDef(gp.classTypeDef.Type()); #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1007,9 +1007,9 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( caller->assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; // get TypeDef instance from generic parameter index - data = gp.Class.data; - assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.Class.Assembly() - 1]; - target = assembly->GetTypeDef(gp.Class.Type()); + data = gp.classTypeDef.data; + assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.classTypeDef.Assembly() - 1]; + target = assembly->GetTypeDef(gp.classTypeDef.Type()); break; } @@ -1074,7 +1074,7 @@ bool CLR_RT_TypeDef_Instance::SwitchToParent() break; case TBL_TypeRef: - cls = &assembly->m_pCrossReference_TypeRef[target->ExtendsIndex()].Target; + cls = &assembly->m_pCrossReference_TypeRef[target->ExtendsIndex()].target; break; // all others are not supported @@ -1095,7 +1095,7 @@ bool CLR_RT_TypeDef_Instance::HasFinalizer() const { NATIVE_PROFILE_CLR_CORE(); return NANOCLR_INDEX_IS_VALID(*this) && - (CrossReference().m_flags & CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer); + (CrossReference().flags & CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer); } ////////////////////////////// @@ -1150,7 +1150,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm switch (fr->Owner()) { case TBL_TypeRef: - data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].Target.data; + data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetFieldDef(Field()); @@ -1161,7 +1161,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm case TBL_TypeSpec: { - genericType = &assm->m_pCrossReference_FieldRef[index].GenericType; + genericType = &assm->m_pCrossReference_FieldRef[index].genericType; const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); @@ -1267,7 +1267,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass { // owner is TypeSpec - genericType = &assm->m_pCrossReference_MethodRef[index].GenericType; + genericType = &assm->m_pCrossReference_MethodRef[index].genericType; const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); @@ -1288,7 +1288,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass // owner is TypeRef // get data for MethodRef (from index) - data = assm->m_pCrossReference_MethodRef[index].Target.data; + data = assm->m_pCrossReference_MethodRef[index].target.data; // get assembly for this type ref assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; // grab the MethodDef @@ -1336,7 +1336,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass break; case TBL_MethodRef: - data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.data; + data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetMethodDef(Method()); @@ -1348,7 +1348,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass } // get generic type - genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].GenericType; + genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].genericType; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1376,7 +1376,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass return true; case TBL_MethodRef: - data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].Target.data; + data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetMethodDef(Method()); @@ -1393,7 +1393,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass break; // get generic type - genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].GenericType; + genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].genericType; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1510,9 +1510,9 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromDataType(NanoCLRDataType dt) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - m_reflex.m_kind = REFLECTION_TYPE; - m_reflex.m_levels = 0; - m_reflex.m_data.m_type = *dtl.m_cls; + m_reflex.kind = REFLECTION_TYPE; + m_reflex.levels = 0; + m_reflex.data.type = *dtl.m_cls; } else { @@ -1542,7 +1542,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromReflection(const CLR_RT_ReflectionD if (levels) { - m_reflex.m_levels = levels; + m_reflex.levels = levels; ConvertToArray(); } @@ -1585,9 +1585,9 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl m_flags = dtl.m_flags & CLR_RT_DataTypeLookup::c_SemanticMask; - m_reflex.m_kind = REFLECTION_TYPE; - m_reflex.m_levels = 0; - m_reflex.m_data.m_type = m_handlerCls; + m_reflex.kind = REFLECTION_TYPE; + m_reflex.levels = 0; + m_reflex.data.type = m_handlerCls; if (m_flags == CLR_RT_DataTypeLookup::c_Primitive) { @@ -1645,8 +1645,8 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_I { m_flags = CLR_RT_DataTypeLookup::c_ManagedType | CLR_RT_DataTypeLookup::c_GenericInstance; - m_reflex.m_kind = REFLECTION_GENERICTYPE; - m_reflex.m_data.m_genericType = m_handlerGenericType; + m_reflex.kind = REFLECTION_GENERICTYPE; + m_reflex.data.genericType = m_handlerGenericType; } m_handlerCls.Clear(); @@ -1692,7 +1692,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromSignatureParser(CLR_RT_SignaturePar if (res.Levels) { - m_reflex.m_levels = res.Levels; + m_reflex.levels = res.Levels; ConvertToArray(); } @@ -1739,7 +1739,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) { case DATATYPE_SZARRAY: reflex = &obj->ReflectionDataConst(); - cls = &reflex->m_data.m_type; + cls = &reflex->data.type; break; case DATATYPE_VALUETYPE: @@ -1777,7 +1777,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) case DATATYPE_REFLECTION: reflex = &(obj->ReflectionDataConst()); - switch (reflex->m_kind) + switch (reflex->kind) { case REFLECTION_ASSEMBLY: cls = &g_CLR_RT_WellKnownTypes.m_Assembly; @@ -1816,7 +1816,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) } reflex = &array->ReflectionDataConst(); - cls = &reflex->m_data.m_type; + cls = &reflex->data.type; } break; @@ -1879,7 +1879,7 @@ bool CLR_RT_TypeDescriptor::ShouldEmitHash() return false; } - if (m_handlerCls.CrossReference().m_hash != 0) + if (m_handlerCls.CrossReference().hash != 0) { return true; } @@ -1890,18 +1890,18 @@ bool CLR_RT_TypeDescriptor::ShouldEmitHash() bool CLR_RT_TypeDescriptor::GetElementType(CLR_RT_TypeDescriptor &sub) { NATIVE_PROFILE_CLR_CORE(); - switch (m_reflex.m_levels) + switch (m_reflex.levels) { case 0: return false; case 1: - sub.InitializeFromType(m_reflex.m_data.m_type); + sub.InitializeFromType(m_reflex.data.type); break; default: sub = *this; - sub.m_reflex.m_levels--; + sub.m_reflex.levels--; break; } @@ -2193,9 +2193,9 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_TypeDef_CrossReference *dst = this->m_pCrossReference_TypeDef; for (i = 0; i < this->m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) { - dst->m_flags = 0; - dst->m_totalFields = 0; - dst->m_hash = 0; + dst->flags = 0; + dst->totalFields = 0; + dst->hash = 0; } } @@ -2204,7 +2204,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_FieldDef_CrossReference *dst = this->m_pCrossReference_FieldDef; for (i = 0; i < this->m_pTablesSize[TBL_FieldDef]; i++, src++, dst++) { - dst->m_offset = CLR_EmptyIndex; + dst->offset = CLR_EmptyIndex; } } @@ -2213,7 +2213,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_MethodDef_CrossReference *dst = this->m_pCrossReference_MethodDef; for (i = 0; i < this->m_pTablesSize[TBL_MethodDef]; i++, src++, dst++) { - dst->m_data = CLR_EmptyIndex; + dst->data = CLR_EmptyIndex; } } @@ -2222,7 +2222,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_GenericParam_CrossReference *dst = this->m_pCrossReference_GenericParam; for (i = 0; i < this->m_pTablesSize[TBL_GenericParam]; i++, src++, dst++) { - dst->m_data = CLR_EmptyIndex; + dst->data = CLR_EmptyIndex; } } @@ -2231,7 +2231,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_MethodSpec_CrossReference *dst = this->m_pCrossReference_MethodSpec; for (i = 0; i < this->m_pTablesSize[TBL_MethodSpec]; i++, src++, dst++) { - dst->m_data = CLR_EmptyIndex; + dst->data = CLR_EmptyIndex; } } @@ -2240,7 +2240,7 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) CLR_RT_TypeSpec_CrossReference *dst = this->m_pCrossReference_TypeSpec; for (i = 0; i < this->m_pTablesSize[TBL_TypeSpec]; i++, src++, dst++) { - dst->GenericType.data = 0; + dst->genericType.data = 0; } } @@ -2526,7 +2526,7 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) { const char *szName = GetString(src->name); - if (dst->m_target == NULL) + if (dst->target == NULL) { CLR_RT_Assembly *target = g_CLR_RT_TypeSystem.FindAssembly(szName, &src->version, false); @@ -2557,7 +2557,7 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) } else { - dst->m_target = target; + dst->target = target; } } } @@ -2607,7 +2607,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() { CLR_RT_TypeDef_Instance inst; - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->scope & 0x7FFF].Target) == false) + if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->scope & 0x7FFF].target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->scope); @@ -2621,7 +2621,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() } const char *szName = GetString(src->name); - if (inst.assembly->FindTypeDef(szName, inst.Type(), dst->Target) == false) + if (inst.assembly->FindTypeDef(szName, inst.Type(), dst->target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s\r\n", szName); @@ -2636,7 +2636,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() } else { - CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->scope].m_target; + CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->scope].target; if (assm == NULL) { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: assm is null\n"); @@ -2644,7 +2644,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() const char *szNameSpace = GetString(src->nameSpace); const char *szName = GetString(src->name); - if (assm->FindTypeDef(szName, szNameSpace, dst->Target) == false) + if (assm->FindTypeDef(szName, szNameSpace, dst->target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown type: %s.%s\r\n", szNameSpace, szName); @@ -2684,7 +2684,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() switch (src->Owner()) { case TBL_TypeRef: - typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; + typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].target; break; // case CLR_MemberRefParent::MRP_TypeDef: @@ -2744,7 +2744,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } if (!typeSpecInstance.assembly - ->FindFieldDef(typeSpecInstance.target, fieldName, this, src->signature, dst->Target)) + ->FindFieldDef(typeSpecInstance.target, fieldName, this, src->signature, dst->target)) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); @@ -2758,11 +2758,11 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } // set TypeSpec - dst->GenericType.data = typeSpec.data; + dst->genericType.data = typeSpec.data; } else if (NANOCLR_INDEX_IS_VALID(typeDef)) { - if (typeDefInstance.InitializeFromIndex(m_pCrossReference_TypeRef[src->OwnerIndex()].Target) == false) + if (typeDefInstance.InitializeFromIndex(m_pCrossReference_TypeRef[src->OwnerIndex()].target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); @@ -2783,7 +2783,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() #endif if (typeDefInstance.assembly - ->FindFieldDef(typeDefInstance.target, fieldName, this, src->signature, dst->Target) == false) + ->FindFieldDef(typeDefInstance.target, fieldName, this, src->signature, dst->target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown FieldRef: %s\r\n", fieldName); @@ -2797,7 +2797,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } // invalidate GenericType - dst->GenericType.data = CLR_EmptyToken; + dst->genericType.data = CLR_EmptyToken; } } @@ -2829,7 +2829,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() switch (src->Owner()) { case TBL_TypeRef: - typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].Target; + typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].target; break; // case CLR_MemberRefParent::MRP_TypeDef: @@ -2888,12 +2888,12 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() #endif } - if (typeSpecInstance.assembly->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->Target)) + if (typeSpecInstance.assembly->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->target)) { fGot = true; // set TypeSpec - dst->GenericType.data = typeSpec.data; + dst->genericType.data = typeSpec.data; } if (fGot == false) @@ -2943,12 +2943,12 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() while (NANOCLR_INDEX_IS_VALID(typeDefInstance)) { - if (typeDefInstance.assembly->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->Target)) + if (typeDefInstance.assembly->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->target)) { fGot = true; // invalidate GenericType - dst->GenericType.data = CLR_EmptyToken; + dst->genericType.data = CLR_EmptyToken; break; } @@ -2999,11 +2999,11 @@ HRESULT CLR_RT_Assembly::Resolve_TypeSpec() ITERATE_THROUGH_RECORDS(this, i, TypeSpec, TYPESPEC) { - dst->GenericType.Set(assemblyIndex, i); + dst->genericType.Set(assemblyIndex, i); CLR_RT_TypeSpec_Instance inst; - if (inst.InitializeFromIndex(dst->GenericType) == false) + if (inst.InitializeFromIndex(dst->genericType) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve TypeSpec: can't create TypeSpec instance: %08x\r\n", src->signature); @@ -3036,7 +3036,7 @@ void CLR_RT_Assembly::Resolve_Link() for (; num; num--, fd++) { - fd->m_offset = iStaticFields++; + fd->offset = iStaticFields++; } } @@ -3054,7 +3054,7 @@ void CLR_RT_Assembly::Resolve_Link() { if (inst.target->flags & CLR_RECORD_TYPEDEF::TD_HasFinalizer) { - dst->m_flags |= CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer; + dst->flags |= CLR_RT_TypeDef_CrossReference::TD_CR_HasFinalizer; } #if defined(NANOCLR_APPDOMAINS) @@ -3067,7 +3067,7 @@ void CLR_RT_Assembly::Resolve_Link() tot += inst.target->instanceFieldsCount; } while (inst.SwitchToParent()); - dst->m_totalFields = tot; + dst->totalFields = tot; //--// @@ -3079,7 +3079,7 @@ void CLR_RT_Assembly::Resolve_Link() for (; num; num--, i++, fd++) { - fd->m_offset = i; + fd->offset = i; } } @@ -3093,7 +3093,7 @@ void CLR_RT_Assembly::Resolve_Link() for (; num; num--, md++) { - md->m_data = indexType; + md->data = indexType; } } @@ -3116,8 +3116,8 @@ void CLR_RT_Assembly::Resolve_Link() gp->m_target = gpIndex; - gp->m_data = indexType; - gp->m_TypeOrMethodDef = TBL_TypeDef; + gp->data = indexType; + gp->typeOrMethodDef = TBL_TypeDef; CLR_RT_SignatureParser sub; if (sub.Initialize_GenericParamTypeSignature(this, GetGenericParam(indexGenericParam))) @@ -3127,17 +3127,17 @@ void CLR_RT_Assembly::Resolve_Link() // get generic param type sub.Advance(res); - gp->DataType = res.DataType; - gp->Class = res.Class; + gp->dataType = res.DataType; + gp->classTypeDef = res.Class; } else { - gp->DataType = DATATYPE_VOID; + gp->dataType = DATATYPE_VOID; CLR_RT_TypeDef_Index td; td.Clear(); - gp->Class = td; + gp->classTypeDef = td; } } } @@ -3969,8 +3969,8 @@ void CLR_RT_Assembly::Resolve_MethodDef() gp->m_target = gpIndex; - gp->m_data = indexMethod; - gp->m_TypeOrMethodDef = TBL_MethodDef; + gp->data = indexMethod; + gp->typeOrMethodDef = TBL_MethodDef; CLR_RT_SignatureParser sub; if (sub.Initialize_GenericParamTypeSignature(this, GetGenericParam(indexGenericParam))) @@ -3980,17 +3980,17 @@ void CLR_RT_Assembly::Resolve_MethodDef() // get generic param type sub.Advance(res); - gp->DataType = res.DataType; - gp->Class = res.Class; + gp->dataType = res.DataType; + gp->classTypeDef = res.Class; } else { - gp->DataType = DATATYPE_VOID; + gp->dataType = DATATYPE_VOID; CLR_RT_TypeDef_Index td; td.Clear(); - gp->Class = td; + gp->classTypeDef = td; } } } @@ -4010,7 +4010,7 @@ HRESULT CLR_RT_Assembly::Resolve_AllocateStaticFields(CLR_RT_HeapBlock *pStaticF { CLR_RT_FieldDef_CrossReference &res = m_pCrossReference_FieldDef[i]; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeReference(pStaticFields[res.m_offset], fd, this)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeReference(pStaticFields[res.offset], fd, this)); } } @@ -4038,11 +4038,11 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() ITERATE_THROUGH_RECORDS(this, i, AssemblyRef, ASSEMBLYREF) { - _ASSERTE(dst->m_target != NULL); + _ASSERTE(dst->target != NULL); - if (dst->m_target != NULL) + if (dst->target != NULL) { - NANOCLR_CHECK_HRESULT(dst->m_target->PrepareForExecution()); + NANOCLR_CHECK_HRESULT(dst->target->PrepareForExecution()); } } @@ -4142,7 +4142,7 @@ bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index) for (i = 0; i < tblSize; i++, p++) { - if (p->m_hash == hash) + if (p->hash == hash) break; } @@ -4575,7 +4575,7 @@ HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() inst.SwitchToParent(); } - dst->m_hash = hash ? hash : 0xFFFFFFFF; // Don't allow zero as an hash value!! + dst->hash = hash ? hash : 0xFFFFFFFF; // Don't allow zero as an hash value!! } NANOCLR_NOCLEANUP(); @@ -4987,10 +4987,10 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, } while (c == '+'); } - reflex.m_kind = REFLECTION_TYPE; + reflex.kind = REFLECTION_TYPE; // make sure this works for multidimensional arrays. - reflex.m_levels = arrayType ? 1 : 0; - reflex.m_data.m_type = res; + reflex.levels = arrayType ? 1 : 0; + reflex.data.type = res; return true; } } @@ -5452,13 +5452,13 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( CLR_RT_ReflectionDef_Index indexRight; CLR_RT_TypeDescriptor descRight; - indexLeft.m_kind = REFLECTION_TYPE; - indexLeft.m_levels = resLeft.Levels; - indexLeft.m_data.m_type = resLeft.Class; + indexLeft.kind = REFLECTION_TYPE; + indexLeft.levels = resLeft.Levels; + indexLeft.data.type = resLeft.Class; - indexRight.m_kind = REFLECTION_TYPE; - indexRight.m_levels = resRight.Levels; - indexRight.m_data.m_type = resRight.Class; + indexRight.kind = REFLECTION_TYPE; + indexRight.levels = resRight.Levels; + indexRight.data.type = resRight.Class; if (FAILED(descLeft.InitializeFromReflection(indexLeft))) { @@ -5723,12 +5723,12 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[method.Method()]; const CLR_RECORD_METHODREF *methodRef = assembly->GetMethodRef(method.Method()); - if (memberCrossRef.GenericType.data == CLR_EmptyToken) + if (memberCrossRef.genericType.data == CLR_EmptyToken) { // this is a MethodRef belonging to another assembly CLR_RT_MethodDef_Instance mdInstance; - mdInstance.data = memberCrossRef.Target.data; + mdInstance.data = memberCrossRef.target.data; mdInstance.assembly = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; mdInstance.target = mdInstance.assembly->GetMethodDef(mdInstance.Method()); @@ -5746,7 +5746,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth // this is a MethodRef for a generic type CLR_RT_SignatureParser parser; - parser.Initialize_TypeSpec(assembly, assembly->GetTypeSpec(memberCrossRef.GenericType.TypeSpec())); + parser.Initialize_TypeSpec(assembly, assembly->GetTypeSpec(memberCrossRef.genericType.TypeSpec())); CLR_RT_SignatureParser::Element element; @@ -5850,7 +5850,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; CLR_RT_MethodDef_Instance mdInstance; - mdInstance.data = memberCrossRef.Target.data; + mdInstance.data = memberCrossRef.target.data; mdInstance.assembly = g_CLR_RT_TypeSystem.m_assemblies[mdInstance.Assembly() - 1]; mdInstance.target = mdInstance.assembly->GetMethodDef(mdInstance.Method()); @@ -6068,7 +6068,7 @@ bool CLR_RT_AttributeEnumerator::Advance() // check TYPEDEF if (tk & 0x8000) { - m_match = m_assm->m_pCrossReference_MethodRef[tk & 0x7FFF].Target; + m_match = m_assm->m_pCrossReference_MethodRef[tk & 0x7FFF].target; } else { diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 425b069781..55c1ae9577 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1869,8 +1869,8 @@ static bool FillValues( CLR_RT_HeapBlock_Array *ptr2 = (CLR_RT_HeapBlock_Array *)ptr; dst->m_array_numOfElements = ptr2->m_numOfElements; - dst->m_array_depth = ptr2->ReflectionDataConst().m_levels; - dst->m_array_typeIndex = ptr2->ReflectionDataConst().m_data.m_type; + dst->m_array_depth = ptr2->ReflectionDataConst().levels; + dst->m_array_typeIndex = ptr2->ReflectionDataConst().data.type; } break; @@ -2781,8 +2781,8 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) CLR_RT_GenericParam_CrossReference gp = assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; - targetClass = gp.Class; - targetDataType = gp.DataType; + targetClass = gp.classTypeDef; + targetDataType = gp.dataType; // isGenericInstance = true; } @@ -2864,7 +2864,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) while (true) { CLR_UINT32 iFields = td.target->instanceFieldsCount; - CLR_UINT32 totalFields = td.CrossReference().m_totalFields; + CLR_UINT32 totalFields = td.CrossReference().totalFields; CLR_UINT32 dFields = totalFields - iFields; if (offset >= dFields) @@ -2895,7 +2895,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) { if (cmd->m_offset == 0) { - cmd->m_offset = inst.CrossReference().m_offset; + cmd->m_offset = inst.CrossReference().offset; } if (cmd->m_offset == 0) @@ -2982,7 +2982,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) if (IsBlockEnumMaybe(blk)) { - if (td.InitializeFromIndex(array->ReflectionDataConst().m_data.m_type)) + if (td.InitializeFromIndex(array->ReflectionDataConst().data.type)) { if (td.target->IsEnum()) { @@ -3143,9 +3143,9 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) { CLR_RT_ReflectionDef_Index reflex; - reflex.m_kind = REFLECTION_TYPE; - reflex.m_levels = cmd->m_depth; - reflex.m_data.m_type = cmd->m_td; + reflex.kind = REFLECTION_TYPE; + reflex.levels = cmd->m_depth; + reflex.data.type = cmd->m_td; if (SUCCEEDED(CLR_RT_HeapBlock_Array::CreateInstance(*ptr, cmd->m_numOfElements, reflex))) { @@ -3617,7 +3617,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Field(WP_Message *msg) instClass.InitializeFromField(inst); cmdReply->m_td = instClass; - cmdReply->m_index = inst.CrossReference().m_offset; + cmdReply->m_index = inst.CrossReference().offset; WP_ReplyToCommand(msg, true, false, cmdReply, sizeof(CLR_DBG_Commands::Debugging_Resolve_Field::Reply)); diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index ad9d3210bb..8ad7cdbcd4 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -444,7 +444,7 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE #define LOOKUP_ELEMENT_REF(index, tblName, tblNameUC, tblName2) \ const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ - const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[index].Target; \ + const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[index].target; \ if (s->data == 0) \ s = NULL diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 0d1f5b2075..80f5d39edc 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -45,7 +45,7 @@ void CLR_PRF_Profiler::SendMemoryLayout() // Send Memory Layout m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Memory_Layout, CLR_PRF_CMDS::Bits::CommandHeader); PackAndWriteBits(0); - PackAndWriteBits(s_CLR_RT_Heap.m_size); + PackAndWriteBits(s_CLR_RT_Heap.size); Stream_Send(); } @@ -291,8 +291,8 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) // Special case needed to dump out array data type and levels. CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; - PackAndWriteBits(array->ReflectionDataConst().m_data.m_type); - PackAndWriteBits(array->ReflectionDataConst().m_levels); + PackAndWriteBits(array->ReflectionDataConst().data.type); + PackAndWriteBits(array->ReflectionDataConst().levels); if (array->m_fReference) { @@ -481,7 +481,7 @@ void CLR_PRF_Profiler::DumpEndOfRefsList() void CLR_PRF_Profiler::DumpPointer(void *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.m_location)); + PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.location)); } void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock *ptr) @@ -653,8 +653,8 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) else if (dt == DATATYPE_SZARRAY) { CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; - PackAndWriteBits(array->ReflectionDataConst().m_data.m_type); - PackAndWriteBits(array->ReflectionDataConst().m_levels); + PackAndWriteBits(array->ReflectionDataConst().data.type); + PackAndWriteBits(array->ReflectionDataConst().levels); } Stream_Send(); } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 543e00129c..f019fb2b58 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -501,8 +501,8 @@ struct CLR_PROF_Handler struct CLR_RT_MemoryRange { - unsigned char *m_location; - unsigned int m_size; + unsigned char *location; + unsigned int size; bool LimitToRange(CLR_RT_MemoryRange &filtered, unsigned char *address, unsigned int length) const; }; @@ -776,30 +776,30 @@ struct CLR_RT_MethodDef_Index struct CLR_RT_MethodRef_Index { - CLR_UINT32 m_data; + CLR_UINT32 data; //--// void Clear() { - m_data = 0; + data = 0; } void Set(CLR_UINT32 indexAssm, CLR_UINT32 indexMethod) { - m_data = indexAssm << 24 | indexMethod; + data = indexAssm << 24 | indexMethod; } //--// CLR_INDEX Assembly() const { - return (CLR_INDEX)(m_data >> 24); + return (CLR_INDEX)(data >> 24); } CLR_INDEX Method() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; @@ -834,17 +834,18 @@ struct CLR_RT_GenericParam_Index struct CLR_RT_ReflectionDef_Index { - CLR_UINT16 m_kind; // CLR_ReflectionType - CLR_UINT16 m_levels; + // CLR_ReflectionType + CLR_UINT16 kind; + CLR_UINT16 levels; union { - CLR_RT_Assembly_Index m_assm; - CLR_RT_TypeDef_Index m_type; - CLR_RT_MethodDef_Index m_method; - CLR_RT_FieldDef_Index m_field; - CLR_RT_TypeSpec_Index m_genericType; - CLR_UINT32 m_raw; - } m_data; + CLR_RT_Assembly_Index assembly; + CLR_RT_TypeDef_Index type; + CLR_RT_MethodDef_Index method; + CLR_RT_FieldDef_Index field; + CLR_RT_TypeSpec_Index genericType; + CLR_UINT32 raw; + } data; //--// @@ -871,29 +872,29 @@ struct CLR_RT_ReflectionDef_Index struct CLR_RT_AssemblyRef_CrossReference { - CLR_RT_Assembly *m_target; // EVENT HEAP - NO RELOCATION - + CLR_RT_Assembly *target; // EVENT HEAP - NO RELOCATION - }; struct CLR_RT_TypeRef_CrossReference { - CLR_RT_TypeDef_Index Target; + CLR_RT_TypeDef_Index target; }; struct CLR_RT_FieldRef_CrossReference { - CLR_RT_FieldDef_Index Target; - CLR_RT_TypeSpec_Index GenericType; + CLR_RT_FieldDef_Index target; + CLR_RT_TypeSpec_Index genericType; }; struct CLR_RT_MethodRef_CrossReference { - CLR_RT_MethodDef_Index Target; - CLR_RT_TypeSpec_Index GenericType; + CLR_RT_MethodDef_Index target; + CLR_RT_TypeSpec_Index genericType; }; struct CLR_RT_FieldDef_CrossReference { - CLR_INDEX m_offset; + CLR_INDEX offset; }; struct CLR_RT_TypeDef_CrossReference @@ -902,9 +903,9 @@ struct CLR_RT_TypeDef_CrossReference static const CLR_UINT32 TD_CR_HasFinalizer = 0x0002; static const CLR_UINT32 TD_CR_IsMarshalByRefObject = 0x0004; - CLR_UINT16 m_flags; - CLR_INDEX m_totalFields; - CLR_UINT32 m_hash; + CLR_UINT16 flags; + CLR_INDEX totalFields; + CLR_UINT32 hash; }; struct CLR_RT_MethodDef_CrossReference @@ -912,11 +913,11 @@ struct CLR_RT_MethodDef_CrossReference static const CLR_UINT16 MD_CR_Patched = 0x8000; static const CLR_UINT16 MD_CR_OwnerMask = 0x7FFF; - CLR_UINT16 m_data; + CLR_UINT16 data; CLR_INDEX GetOwner() const { - return (CLR_INDEX)(m_data); + return (CLR_INDEX)(data); } }; @@ -924,33 +925,33 @@ struct CLR_RT_GenericParam_CrossReference { /// @brief Generic Parameter Owner -> Index to TypeDef or MethodDef /// - CLR_UINT16 m_data; + CLR_UINT16 data; /// @brief Tag for owner (TypeDef or MethodDef) /// - NanoCLRTable m_TypeOrMethodDef; + NanoCLRTable typeOrMethodDef; CLR_RT_GenericParam_Index m_target; /// @brief DataType for the generic parameter /// - NanoCLRDataType DataType; + NanoCLRDataType dataType; /// @brief Class of the generic parameter /// - CLR_RT_TypeDef_Index Class; + CLR_RT_TypeDef_Index classTypeDef; }; struct CLR_RT_MethodSpec_CrossReference { - CLR_RT_TypeSpec_Index GenericType; + CLR_RT_TypeSpec_Index genericType; - CLR_RT_MethodDef_Index MethodDef; - CLR_RT_MethodRef_Index MethodRef; + CLR_RT_MethodDef_Index methodDef; + CLR_RT_MethodRef_Index methodRef; - CLR_INDEX Signature; + CLR_INDEX signature; - CLR_UINT16 m_data; + CLR_UINT16 data; // CLR_INDEX GetMethod() const //{ @@ -960,13 +961,13 @@ struct CLR_RT_MethodSpec_CrossReference struct CLR_RT_TypeSpec_CrossReference { - CLR_RT_TypeSpec_Index GenericType; + CLR_RT_TypeSpec_Index genericType; }; struct CLR_RT_MethodDef_Patch { - CLR_INDEX m_orig; - CLR_INDEX m_patched; + CLR_INDEX original; + CLR_INDEX patched; }; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -976,7 +977,7 @@ struct CLR_RT_MethodDef_DebuggingInfo static const CLR_UINT8 MD_DI_JustMyCode = 0x01; static const CLR_UINT8 MD_DI_HasBreakpoint = 0x02; - CLR_UINT8 m_flags; + CLR_UINT8 flags; bool IsJMC() const { @@ -999,15 +1000,15 @@ struct CLR_RT_MethodDef_DebuggingInfo private: void SetFlags(CLR_UINT8 flags) { - m_flags |= flags; + flags |= flags; } void ResetFlags(CLR_UINT8 flags) { - m_flags &= ~flags; + flags &= ~flags; } bool IsFlagSet(CLR_UINT8 flags) const { - return (m_flags & flags) != 0; + return (flags & flags) != 0; } void SetResetFlags(bool b, CLR_UINT8 flags) { From 15072693efddd764cec5b27867eddaa28eb76b75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 17:35:58 +0100 Subject: [PATCH 043/168] Global rename step 3 --- ...rlib_native_System_Reflection_Assembly.cpp | 18 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 4 +- src/CLR/Core/Cache.cpp | 2 +- src/CLR/Core/Execution.cpp | 24 +- src/CLR/Core/GarbageCollector.cpp | 4 +- src/CLR/Core/TypeSystem.cpp | 546 +++++++++--------- src/CLR/Debugger/Debugger.cpp | 26 +- src/CLR/Diagnostics/Info.cpp | 26 +- src/CLR/Diagnostics/Profiler.cpp | 4 +- src/CLR/Include/nanoCLR_Runtime.h | 201 +++---- src/CLR/Startup/CLRStartup.cpp | 14 +- ...native_System_Net_Sockets_NativeSocket.cpp | 6 +- .../Graphics/Core/Graphics.cpp | 8 +- .../nanoFramework.nanoCLR/CLRStartup.cpp | 16 +- 14 files changed, 453 insertions(+), 446 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 670076b192..4e690b6d82 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -20,9 +20,9 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, instance)); assm = instance.assembly; - header = assm->m_header; + header = assm->header; - if (hal_strlen_s(assm->m_szName) > NANOCLR_MAX_ASSEMBLY_NAME) + if (hal_strlen_s(assm->name) > NANOCLR_MAX_ASSEMBLY_NAME) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -30,7 +30,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( sprintf( buffer, "%s, Version=%d.%d.%d.%d", - assm->m_szName, + assm->name, header->version.majorVersion, header->version.minorVersion, header->version.buildNumber, @@ -85,7 +85,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys { CLR_RT_Assembly *pASSM = assm.assembly; - CLR_UINT32 num = pASSM->m_pTablesSize[TBL_TypeDef]; + CLR_UINT32 num = pASSM->tablesSize[TBL_TypeDef]; CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; @@ -130,7 +130,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYR NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); - const CLR_RECORD_VERSION &version = assm.assembly->m_header->version; + const CLR_RECORD_VERSION &version = assm.assembly->header->version; // we do not check for the reference not to be NULL because this is an internal method stack.Arg1().Dereference()->NumericByRef().s4 = version.majorVersion; @@ -158,13 +158,13 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( result, - pAssm->m_pTablesSize[TBL_ResourcesFiles], + pAssm->tablesSize[TBL_ResourcesFiles], g_CLR_RT_WellKnownTypes.m_String)); { CLR_RT_HeapBlock *pArray = (CLR_RT_HeapBlock *)result.Array()->GetFirstElement(); - for (int indexResourceFile = 0; indexResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; + for (int indexResourceFile = 0; indexResourceFile < pAssm->tablesSize[TBL_ResourcesFiles]; indexResourceFile++) { const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(indexResourceFile); @@ -308,7 +308,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR { NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); - assm->m_pFile = array; + assm->file = array; g_CLR_RT_TypeSystem.Link(assm); @@ -348,7 +348,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR while (eventResult) { - if (assm->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) + if (assm->flags & CLR_RT_Assembly::StaticConstructorsExecuted) { // static constructors executed, we are good here break; diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index f63e536613..2663a3a713 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -143,7 +143,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan stack->m_flags = CLR_RT_StackFrame::c_MethodKind_Native; stack->m_IPstart = NULL; } - else if (assm->m_nativeCode && (impl = assm->m_nativeCode[stack->m_call.Method()]) != NULL) + else if (assm->nativeCode && (impl = assm->nativeCode[stack->m_call.Method()]) != NULL) { stack->m_nativeMethod = impl; @@ -290,7 +290,7 @@ bool CLR_RT_StackFrame::PushInline( CLR_RECORD_METHODDEF::MD_Constructor || // Do not try to inline constructors, etc because they require // special processing (0 != (md->flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing - (calleeInst.assembly->m_nativeCode != NULL && (calleeInst.assembly->m_nativeCode[calleeInst.Method()] != + (calleeInst.assembly->nativeCode != NULL && (calleeInst.assembly->nativeCode[calleeInst.Method()] != NULL)) || // Make sure the callee is not an internal method (md->rva == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method !g_CLR_RT_EventCache.GetInlineFrameBuffer( diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index 48fbc7ce51..055a7c7482 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -260,7 +260,7 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( if (cls.Assembly() == mdVirtual.Assembly()) { CLR_RT_Assembly *assm = g_CLR_RT_TypeSystem.m_assemblies[mdVirtual.Assembly() - 1]; - CLR_INDEX owner = assm->m_pCrossReference_MethodDef[mdVirtual.Method()].GetOwner(); + CLR_INDEX owner = assm->crossReferenceMethodDef[mdVirtual.Method()].GetOwner(); if (cls.Type() == owner) { diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 0fd49e9419..a031971054 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -309,7 +309,7 @@ void CLR_RT_ExecutionEngine::LoadDownloadedAssemblies() if (SUCCEEDED(CLR_RT_Assembly::CreateInstance(header, assm))) { - assm->m_pFile = weak->m_targetSerialized; + assm->file = weak->m_targetSerialized; g_CLR_RT_TypeSystem.Link(assm); } @@ -322,14 +322,14 @@ void CLR_RT_ExecutionEngine::LoadDownloadedAssemblies() NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - if (pASSM->m_pFile) + if (pASSM->file) { // // For those assemblies that failed to load (missing dependency?), clean up. // - if ((pASSM->m_flags & CLR_RT_Assembly::ResolutionCompleted) == 0) + if ((pASSM->flags & CLR_RT_Assembly::ResolutionCompleted) == 0) { - pASSM->m_pFile = NULL; + pASSM->file = NULL; pASSM->DestroyInstance(); } @@ -913,7 +913,7 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( } } - assembly->m_flags |= CLR_RT_Assembly::StaticConstructorsExecuted; + assembly->flags |= CLR_RT_Assembly::StaticConstructorsExecuted; return false; } @@ -948,17 +948,17 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { // Find an AppDomainAssembly that does not have it's static constructor bit set... - if ((pASSM->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) + if ((pASSM->flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) { CLR_RT_MethodDef_Index index; index.Set(pASSM->assemblyIndex, 0); bool fDepedenciesRun = true; // Check that all dependent assemblies have had static constructors run. - CLR_RT_AssemblyRef_CrossReference *ar = pASSM->m_pCrossReference_AssemblyRef; - for (int i = 0; i < pASSM->m_pTablesSize[TBL_AssemblyRef]; i++, ar++) + CLR_RT_AssemblyRef_CrossReference *ar = pASSM->crossReferenceAssemblyRef; + for (int i = 0; i < pASSM->tablesSize[TBL_AssemblyRef]; i++, ar++) { - if ((ar->target->m_flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) + if ((ar->target->flags & CLR_RT_Assembly::StaticConstructorsExecuted) == 0) { fDepedenciesRun = true; break; @@ -1725,7 +1725,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe } } #else - return &inst.assembly->m_pStaticFields[inst.CrossReference().offset]; + return &inst.assembly->staticFields[inst.CrossReference().offset]; #endif } @@ -1855,7 +1855,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - cls = assembly->m_pCrossReference_TypeRef[index].target; + cls = assembly->crossReferenceTypeRef[index].target; break; case TBL_TypeDef: @@ -1899,7 +1899,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( assembly->FindGenericParamAtMethodDef(methodDefInstance, genericParamPosition, gpIndex); CLR_RT_GenericParam_CrossReference gp = - assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + assembly->crossReferenceGenericParam[gpIndex.GenericParam()]; cls = gp.classTypeDef; dt = gp.dataType; diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index 0b7dbd05a8..c6f94a5c6a 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -676,10 +676,10 @@ void CLR_RT_GarbageCollector::Assembly_Mark() { #if !defined(NANOCLR_APPDOMAINS) - CheckMultipleBlocks(pASSM->m_pStaticFields, pASSM->m_iStaticFields); + CheckMultipleBlocks(pASSM->staticFields, pASSM->staticFieldsCount); #endif - CheckSingleBlock(&pASSM->m_pFile); + CheckSingleBlock(&pASSM->file); } NANOCLR_FOREACH_ASSEMBLY_END(); } diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index ab632ec7e8..1cc48750ce 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -12,8 +12,8 @@ #define ITERATE_THROUGH_RECORDS(assm, i, tblName, tblNameUC) \ const CLR_RECORD_##tblNameUC *src = (const CLR_RECORD_##tblNameUC *)assm->GetTable(TBL_##tblName); \ - CLR_RT_##tblName##_CrossReference *dst = assm->m_pCrossReference_##tblName; \ - for (i = 0; i < assm->m_pTablesSize[TBL_##tblName]; i++, src++, dst++) + CLR_RT_##tblName##_CrossReference *dst = assm->crossReference##tblName; \ + for (i = 0; i < assm->tablesSize[TBL_##tblName]; i++, src++, dst++) //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -560,7 +560,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) break; case TBL_TypeRef: - res.Class = Assembly->m_pCrossReference_TypeRef[index].target; + res.Class = Assembly->crossReferenceTypeRef[index].target; break; case TBL_TypeDef: @@ -853,7 +853,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance CLR_RT_Assembly *assm = fd.assembly; const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)assm->GetTable(TBL_TypeDef); CLR_INDEX indexField = fd.Field(); - int i = assm->m_pTablesSize[TBL_TypeDef]; + int i = assm->tablesSize[TBL_TypeDef]; if (fd.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { @@ -880,7 +880,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance if (i) { CLR_INDEX indexAssm = fd.Assembly(); - CLR_INDEX indexType = assm->m_pTablesSize[TBL_TypeDef] - i; + CLR_INDEX indexType = assm->tablesSize[TBL_TypeDef] - i; Set(indexAssm, indexType); @@ -929,7 +929,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( switch (CLR_TypeFromTk(tk)) { case TBL_TypeRef: - data = assm->m_pCrossReference_TypeRef[index].target.data; + data = assm->crossReferenceTypeRef[index].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetTypeDef(Type()); @@ -953,7 +953,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( case TBL_GenericParam: { - CLR_RT_GenericParam_CrossReference gp = assm->m_pCrossReference_GenericParam[index]; + CLR_RT_GenericParam_CrossReference gp = assm->crossReferenceGenericParam[index]; Set(gp.classTypeDef.Assembly(), gp.classTypeDef.Type()); @@ -1004,7 +1004,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( caller->assembly->FindGenericParamAtMethodDef(*caller, genericParamPosition, gpIndex); CLR_RT_GenericParam_CrossReference gp = - caller->assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + caller->assembly->crossReferenceGenericParam[gpIndex.GenericParam()]; // get TypeDef instance from generic parameter index data = gp.classTypeDef.data; @@ -1074,7 +1074,7 @@ bool CLR_RT_TypeDef_Instance::SwitchToParent() break; case TBL_TypeRef: - cls = &assembly->m_pCrossReference_TypeRef[target->ExtendsIndex()].target; + cls = &assembly->crossReferenceTypeRef[target->ExtendsIndex()].target; break; // all others are not supported @@ -1150,7 +1150,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm switch (fr->Owner()) { case TBL_TypeRef: - data = assm->m_pCrossReference_FieldRef[fr->OwnerIndex()].target.data; + data = assm->crossReferenceFieldRef[fr->OwnerIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetFieldDef(Field()); @@ -1161,7 +1161,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm case TBL_TypeSpec: { - genericType = &assm->m_pCrossReference_FieldRef[index].genericType; + genericType = &assm->crossReferenceFieldRef[index].genericType; const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); @@ -1267,7 +1267,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass { // owner is TypeSpec - genericType = &assm->m_pCrossReference_MethodRef[index].genericType; + genericType = &assm->crossReferenceMethodRef[index].genericType; const CLR_RECORD_TYPESPEC *ts = assm->GetTypeSpec(genericType->TypeSpec()); @@ -1288,7 +1288,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass // owner is TypeRef // get data for MethodRef (from index) - data = assm->m_pCrossReference_MethodRef[index].target.data; + data = assm->crossReferenceMethodRef[index].target.data; // get assembly for this type ref assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; // grab the MethodDef @@ -1336,7 +1336,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass break; case TBL_MethodRef: - data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].target.data; + data = assm->crossReferenceMethodRef[ms->MethodIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetMethodDef(Method()); @@ -1348,7 +1348,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass } // get generic type - genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].genericType; + genericType = &assembly->crossReferenceTypeSpec[ms->container].genericType; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1376,7 +1376,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass return true; case TBL_MethodRef: - data = assm->m_pCrossReference_MethodRef[ms->MethodIndex()].target.data; + data = assm->crossReferenceMethodRef[ms->MethodIndex()].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetMethodDef(Method()); @@ -1393,7 +1393,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass break; // get generic type - genericType = &assembly->m_pCrossReference_TypeSpec[ms->container].genericType; + genericType = &assembly->crossReferenceTypeSpec[ms->container].genericType; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -2140,7 +2140,7 @@ bool CLR_RT_ExceptionHandler::ConvertFromEH( bool CLR_RT_Assembly::IsSameAssembly(const CLR_RT_Assembly &assm) const { - if (m_header->headerCRC == assm.m_header->headerCRC && m_header->assemblyCRC == assm.m_header->assemblyCRC) + if (header->headerCRC == assm.header->headerCRC && header->assemblyCRC == assm.header->assemblyCRC) { return true; } @@ -2148,50 +2148,50 @@ bool CLR_RT_Assembly::IsSameAssembly(const CLR_RT_Assembly &assm) const return false; } -void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) +void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) { NATIVE_PROFILE_CLR_CORE(); CLR_UINT8 *buffer = (CLR_UINT8 *)this; int i; - m_szName = GetString(m_header->assemblyName); + name = GetString(header->assemblyName); //--// - buffer += offsets.iBase; - m_pCrossReference_AssemblyRef = (CLR_RT_AssemblyRef_CrossReference *)buffer; - buffer += offsets.iAssemblyRef; - m_pCrossReference_TypeRef = (CLR_RT_TypeRef_CrossReference *)buffer; - buffer += offsets.iTypeRef; - m_pCrossReference_FieldRef = (CLR_RT_FieldRef_CrossReference *)buffer; - buffer += offsets.iFieldRef; - m_pCrossReference_MethodRef = (CLR_RT_MethodRef_CrossReference *)buffer; - buffer += offsets.iMethodRef; - m_pCrossReference_TypeDef = (CLR_RT_TypeDef_CrossReference *)buffer; - buffer += offsets.iTypeDef; - m_pCrossReference_FieldDef = (CLR_RT_FieldDef_CrossReference *)buffer; - buffer += offsets.iFieldDef; - m_pCrossReference_MethodDef = (CLR_RT_MethodDef_CrossReference *)buffer; - buffer += offsets.iMethodDef; - m_pCrossReference_GenericParam = (CLR_RT_GenericParam_CrossReference *)buffer; - buffer += offsets.iGenericParam; - m_pCrossReference_MethodSpec = (CLR_RT_MethodSpec_CrossReference *)buffer; - buffer += offsets.iMethodSpec; - m_pCrossReference_TypeSpec = (CLR_RT_TypeSpec_CrossReference *)buffer; - buffer += offsets.iTypeSpec; + buffer += offsets.base; + crossReferenceAssemblyRef = (CLR_RT_AssemblyRef_CrossReference *)buffer; + buffer += offsets.assemblyRef; + crossReferenceTypeRef = (CLR_RT_TypeRef_CrossReference *)buffer; + buffer += offsets.typeRef; + crossReferenceFieldRef = (CLR_RT_FieldRef_CrossReference *)buffer; + buffer += offsets.fieldRef; + crossReferenceMethodRef = (CLR_RT_MethodRef_CrossReference *)buffer; + buffer += offsets.methodRef; + crossReferenceTypeDef = (CLR_RT_TypeDef_CrossReference *)buffer; + buffer += offsets.typeDef; + crossReferenceFieldDef = (CLR_RT_FieldDef_CrossReference *)buffer; + buffer += offsets.fieldDef; + crossReferenceMethodDef = (CLR_RT_MethodDef_CrossReference *)buffer; + buffer += offsets.methodDef; + crossReferenceGenericParam = (CLR_RT_GenericParam_CrossReference *)buffer; + buffer += offsets.genericParam; + crossReferenceMethodSpec = (CLR_RT_MethodSpec_CrossReference *)buffer; + buffer += offsets.methodSpec; + crossReferenceTypeSpec = (CLR_RT_TypeSpec_CrossReference *)buffer; + buffer += offsets.typeSpec; #if !defined(NANOCLR_APPDOMAINS) - m_pStaticFields = (CLR_RT_HeapBlock *)buffer; - buffer += offsets.iStaticFields; + staticFields = (CLR_RT_HeapBlock *)buffer; + buffer += offsets.staticFieldsCount; - memset(m_pStaticFields, 0, offsets.iStaticFields); + memset(staticFields, 0, offsets.staticFieldsCount); #endif //--// { const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)this->GetTable(TBL_TypeDef); - CLR_RT_TypeDef_CrossReference *dst = this->m_pCrossReference_TypeDef; - for (i = 0; i < this->m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) + CLR_RT_TypeDef_CrossReference *dst = this->crossReferenceTypeDef; + for (i = 0; i < this->tablesSize[TBL_TypeDef]; i++, src++, dst++) { dst->flags = 0; dst->totalFields = 0; @@ -2201,8 +2201,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) { const CLR_RECORD_FIELDDEF *src = (const CLR_RECORD_FIELDDEF *)this->GetTable(TBL_FieldDef); - CLR_RT_FieldDef_CrossReference *dst = this->m_pCrossReference_FieldDef; - for (i = 0; i < this->m_pTablesSize[TBL_FieldDef]; i++, src++, dst++) + CLR_RT_FieldDef_CrossReference *dst = this->crossReferenceFieldDef; + for (i = 0; i < this->tablesSize[TBL_FieldDef]; i++, src++, dst++) { dst->offset = CLR_EmptyIndex; } @@ -2210,8 +2210,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) { const CLR_RECORD_METHODDEF *src = (const CLR_RECORD_METHODDEF *)this->GetTable(TBL_MethodDef); - CLR_RT_MethodDef_CrossReference *dst = this->m_pCrossReference_MethodDef; - for (i = 0; i < this->m_pTablesSize[TBL_MethodDef]; i++, src++, dst++) + CLR_RT_MethodDef_CrossReference *dst = this->crossReferenceMethodDef; + for (i = 0; i < this->tablesSize[TBL_MethodDef]; i++, src++, dst++) { dst->data = CLR_EmptyIndex; } @@ -2219,8 +2219,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) { const CLR_RECORD_GENERICPARAM *src = (const CLR_RECORD_GENERICPARAM *)this->GetTable(TBL_GenericParam); - CLR_RT_GenericParam_CrossReference *dst = this->m_pCrossReference_GenericParam; - for (i = 0; i < this->m_pTablesSize[TBL_GenericParam]; i++, src++, dst++) + CLR_RT_GenericParam_CrossReference *dst = this->crossReferenceGenericParam; + for (i = 0; i < this->tablesSize[TBL_GenericParam]; i++, src++, dst++) { dst->data = CLR_EmptyIndex; } @@ -2228,8 +2228,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) { const CLR_RECORD_METHODSPEC *src = (const CLR_RECORD_METHODSPEC *)this->GetTable(TBL_MethodSpec); - CLR_RT_MethodSpec_CrossReference *dst = this->m_pCrossReference_MethodSpec; - for (i = 0; i < this->m_pTablesSize[TBL_MethodSpec]; i++, src++, dst++) + CLR_RT_MethodSpec_CrossReference *dst = this->crossReferenceMethodSpec; + for (i = 0; i < this->tablesSize[TBL_MethodSpec]; i++, src++, dst++) { dst->data = CLR_EmptyIndex; } @@ -2237,8 +2237,8 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) { const CLR_RECORD_TYPESPEC *src = (const CLR_RECORD_TYPESPEC *)this->GetTable(TBL_TypeSpec); - CLR_RT_TypeSpec_CrossReference *dst = this->m_pCrossReference_TypeSpec; - for (i = 0; i < this->m_pTablesSize[TBL_TypeSpec]; i++, src++, dst++) + CLR_RT_TypeSpec_CrossReference *dst = this->crossReferenceTypeSpec; + for (i = 0; i < this->tablesSize[TBL_TypeSpec]; i++, src++, dst++) { dst->genericType.data = 0; } @@ -2247,9 +2247,9 @@ void CLR_RT_Assembly::Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets) #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) { m_pDebuggingInfo_MethodDef = (CLR_RT_MethodDef_DebuggingInfo *)buffer; - buffer += offsets.iDebuggingInfoMethods; + buffer += offsets.debuggingInfoMethods; - memset(m_pDebuggingInfo_MethodDef, 0, offsets.iDebuggingInfoMethods); + memset(m_pDebuggingInfo_MethodDef, 0, offsets.debuggingInfoMethods); } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } @@ -2272,28 +2272,28 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Failed in type system: assembly is not good.\n"); } - skeleton->m_header = header; + skeleton->header = header; // Compute overall size for assembly data structure. { - for (uint32_t i = 0; i < ARRAYSIZE(skeleton->m_pTablesSize) - 1; i++) + for (uint32_t i = 0; i < ARRAYSIZE(skeleton->tablesSize) - 1; i++) { - skeleton->m_pTablesSize[i] = header->SizeOfTable((NanoCLRTable)i); + skeleton->tablesSize[i] = header->SizeOfTable((NanoCLRTable)i); } - skeleton->m_pTablesSize[TBL_AssemblyRef] /= sizeof(CLR_RECORD_ASSEMBLYREF); - skeleton->m_pTablesSize[TBL_TypeRef] /= sizeof(CLR_RECORD_TYPEREF); - skeleton->m_pTablesSize[TBL_FieldRef] /= sizeof(CLR_RECORD_FIELDREF); - skeleton->m_pTablesSize[TBL_MethodRef] /= sizeof(CLR_RECORD_METHODREF); - skeleton->m_pTablesSize[TBL_TypeDef] /= sizeof(CLR_RECORD_TYPEDEF); - skeleton->m_pTablesSize[TBL_FieldDef] /= sizeof(CLR_RECORD_FIELDDEF); - skeleton->m_pTablesSize[TBL_MethodDef] /= sizeof(CLR_RECORD_METHODDEF); - skeleton->m_pTablesSize[TBL_GenericParam] /= sizeof(CLR_RECORD_GENERICPARAM); - skeleton->m_pTablesSize[TBL_MethodSpec] /= sizeof(CLR_RECORD_METHODSPEC); - skeleton->m_pTablesSize[TBL_TypeSpec] /= sizeof(CLR_RECORD_TYPESPEC); - skeleton->m_pTablesSize[TBL_Attributes] /= sizeof(CLR_RECORD_ATTRIBUTE); - skeleton->m_pTablesSize[TBL_Resources] /= sizeof(CLR_RECORD_RESOURCE); - skeleton->m_pTablesSize[TBL_ResourcesFiles] /= sizeof(CLR_RECORD_RESOURCE_FILE); + skeleton->tablesSize[TBL_AssemblyRef] /= sizeof(CLR_RECORD_ASSEMBLYREF); + skeleton->tablesSize[TBL_TypeRef] /= sizeof(CLR_RECORD_TYPEREF); + skeleton->tablesSize[TBL_FieldRef] /= sizeof(CLR_RECORD_FIELDREF); + skeleton->tablesSize[TBL_MethodRef] /= sizeof(CLR_RECORD_METHODREF); + skeleton->tablesSize[TBL_TypeDef] /= sizeof(CLR_RECORD_TYPEDEF); + skeleton->tablesSize[TBL_FieldDef] /= sizeof(CLR_RECORD_FIELDDEF); + skeleton->tablesSize[TBL_MethodDef] /= sizeof(CLR_RECORD_METHODDEF); + skeleton->tablesSize[TBL_GenericParam] /= sizeof(CLR_RECORD_GENERICPARAM); + skeleton->tablesSize[TBL_MethodSpec] /= sizeof(CLR_RECORD_METHODSPEC); + skeleton->tablesSize[TBL_TypeSpec] /= sizeof(CLR_RECORD_TYPESPEC); + skeleton->tablesSize[TBL_Attributes] /= sizeof(CLR_RECORD_ATTRIBUTE); + skeleton->tablesSize[TBL_Resources] /= sizeof(CLR_RECORD_RESOURCE); + skeleton->tablesSize[TBL_ResourcesFiles] /= sizeof(CLR_RECORD_RESOURCE_FILE); } //--// @@ -2302,9 +2302,9 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R { const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)skeleton->GetTable(TBL_TypeDef); - for (int i = 0; i < skeleton->m_pTablesSize[TBL_TypeDef]; i++, src++) + for (int i = 0; i < skeleton->tablesSize[TBL_TypeDef]; i++, src++) { - skeleton->m_iStaticFields += src->staticFieldsCount; + skeleton->staticFieldsCount += src->staticFieldsCount; } } @@ -2313,63 +2313,63 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R { CLR_RT_Assembly::Offsets offsets; - offsets.iBase = ROUNDTOMULTIPLE(sizeof(CLR_RT_Assembly), CLR_UINT32); + offsets.base = ROUNDTOMULTIPLE(sizeof(CLR_RT_Assembly), CLR_UINT32); - offsets.iAssemblyRef = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), + offsets.assemblyRef = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), CLR_UINT32); - offsets.iTypeRef = - ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), CLR_UINT32); + offsets.typeRef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), CLR_UINT32); - offsets.iFieldRef = - ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); + offsets.fieldRef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); - offsets.iMethodRef = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), + offsets.methodRef = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), CLR_UINT32); - offsets.iTypeDef = - ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); + offsets.typeDef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); - offsets.iFieldDef = - ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); + offsets.fieldDef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); - offsets.iMethodDef = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), + offsets.methodDef = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), CLR_UINT32); - offsets.iGenericParam = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), + offsets.genericParam = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), CLR_UINT32); - offsets.iMethodSpec = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_MethodSpec] * sizeof(CLR_RT_MethodSpec_CrossReference), + offsets.methodSpec = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_MethodSpec] * sizeof(CLR_RT_MethodSpec_CrossReference), CLR_UINT32); - offsets.iTypeSpec = - ROUNDTOMULTIPLE(skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RT_TypeSpec_CrossReference), CLR_UINT32); + offsets.typeSpec = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_TypeSpec] * sizeof(CLR_RT_TypeSpec_CrossReference), CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) - offsets.iStaticFields = ROUNDTOMULTIPLE(skeleton->m_iStaticFields * sizeof(CLR_RT_HeapBlock), CLR_UINT32); + offsets.staticFieldsCount = ROUNDTOMULTIPLE(skeleton->staticFieldsCount * sizeof(CLR_RT_HeapBlock), CLR_UINT32); #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - offsets.iDebuggingInfoMethods = ROUNDTOMULTIPLE( - skeleton->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), + offsets.debuggingInfoMethods = ROUNDTOMULTIPLE( + skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - size_t iTotalRamSize = offsets.iBase + offsets.iAssemblyRef + offsets.iTypeRef + offsets.iFieldRef + - offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + - offsets.iGenericParam + offsets.iMethodSpec + offsets.iTypeSpec; + size_t iTotalRamSize = offsets.base + offsets.assemblyRef + offsets.typeRef + offsets.fieldRef + + offsets.methodRef + offsets.typeDef + offsets.fieldDef + offsets.methodDef + + offsets.genericParam + offsets.methodSpec + offsets.typeSpec; #if !defined(NANOCLR_APPDOMAINS) - iTotalRamSize += offsets.iStaticFields; + iTotalRamSize += offsets.staticFieldsCount; #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - iTotalRamSize += offsets.iDebuggingInfoMethods; + iTotalRamSize += offsets.debuggingInfoMethods; #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) //--// @@ -2393,12 +2393,12 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R memcpy(&dst[1], &src[1], sizeof(*assm) - sizeof(CLR_RT_HeapBlock)); } - assm->Assembly_Initialize(offsets); + assm->AssemblyInitialize(offsets); #if !defined(BUILD_RTM) CLR_Debug::Printf( " Assembly: %s (%d.%d.%d.%d) ", - assm->m_szName, + assm->name, header->version.majorVersion, header->version.minorVersion, header->version.buildNumber, @@ -2421,69 +2421,69 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R CLR_Debug::Printf( " AssemblyRef = %6d bytes (%5d elements)\r\n", - offsets.iAssemblyRef, - skeleton->m_pTablesSize[TBL_AssemblyRef]); + offsets.assemblyRef, + skeleton->tablesSize[TBL_AssemblyRef]); CLR_Debug::Printf( " TypeRef = %6d bytes (%5d elements)\r\n", - offsets.iTypeRef, - skeleton->m_pTablesSize[TBL_TypeRef]); + offsets.typeRef, + skeleton->tablesSize[TBL_TypeRef]); CLR_Debug::Printf( " FieldRef = %6d bytes (%5d elements)\r\n", - offsets.iFieldRef, - skeleton->m_pTablesSize[TBL_FieldRef]); + offsets.fieldRef, + skeleton->tablesSize[TBL_FieldRef]); CLR_Debug::Printf( " MethodRef = %6d bytes (%5d elements)\r\n", - offsets.iMethodRef, - skeleton->m_pTablesSize[TBL_MethodRef]); + offsets.methodRef, + skeleton->tablesSize[TBL_MethodRef]); CLR_Debug::Printf( " TypeDef = %6d bytes (%5d elements)\r\n", - offsets.iTypeDef, - skeleton->m_pTablesSize[TBL_TypeDef]); + offsets.typeDef, + skeleton->tablesSize[TBL_TypeDef]); CLR_Debug::Printf( " FieldDef = %6d bytes (%5d elements)\r\n", - offsets.iFieldDef, - skeleton->m_pTablesSize[TBL_FieldDef]); + offsets.fieldDef, + skeleton->tablesSize[TBL_FieldDef]); CLR_Debug::Printf( " MethodDef = %6d bytes (%5d elements)\r\n", - offsets.iMethodDef, - skeleton->m_pTablesSize[TBL_MethodDef]); + offsets.methodDef, + skeleton->tablesSize[TBL_MethodDef]); CLR_Debug::Printf( " GenericParam = %6d bytes (%5d elements)\r\n", - offsets.iGenericParam, - skeleton->m_pTablesSize[TBL_GenericParam]); + offsets.genericParam, + skeleton->tablesSize[TBL_GenericParam]); CLR_Debug::Printf( " MethodSpec = %6d bytes (%5d elements)\r\n", - offsets.iMethodSpec, - skeleton->m_pTablesSize[TBL_MethodSpec]); + offsets.methodSpec, + skeleton->tablesSize[TBL_MethodSpec]); #if !defined(NANOCLR_APPDOMAINS) CLR_Debug::Printf( " StaticFields = %6d bytes (%5d elements)\r\n", - offsets.iStaticFields, - skeleton->m_iStaticFields); + offsets.staticFieldsCount, + skeleton->staticFieldsCount); #endif CLR_Debug::Printf("\r\n"); CLR_Debug::Printf( " Attributes = %6d bytes (%5d elements)\r\n", - skeleton->m_pTablesSize[TBL_Attributes] * sizeof(CLR_RECORD_ATTRIBUTE), - skeleton->m_pTablesSize[TBL_Attributes]); + skeleton->tablesSize[TBL_Attributes] * sizeof(CLR_RECORD_ATTRIBUTE), + skeleton->tablesSize[TBL_Attributes]); CLR_Debug::Printf( " TypeSpec = %6d bytes (%5d elements)\r\n", - skeleton->m_pTablesSize[TBL_TypeSpec] * sizeof(CLR_RECORD_TYPESPEC), - skeleton->m_pTablesSize[TBL_TypeSpec]); + skeleton->tablesSize[TBL_TypeSpec] * sizeof(CLR_RECORD_TYPESPEC), + skeleton->tablesSize[TBL_TypeSpec]); CLR_Debug::Printf( " Resources = %6d bytes (%5d elements)\r\n", - skeleton->m_pTablesSize[TBL_Resources] * sizeof(CLR_RECORD_RESOURCE), - skeleton->m_pTablesSize[TBL_Resources]); + skeleton->tablesSize[TBL_Resources] * sizeof(CLR_RECORD_RESOURCE), + skeleton->tablesSize[TBL_Resources]); CLR_Debug::Printf( " Resources Files = %6d bytes (%5d elements)\r\n", - skeleton->m_pTablesSize[TBL_ResourcesFiles] * sizeof(CLR_RECORD_RESOURCE), - skeleton->m_pTablesSize[TBL_ResourcesFiles]); - CLR_Debug::Printf(" Resources Data = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_ResourcesData]); - CLR_Debug::Printf(" Strings = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_Strings]); - CLR_Debug::Printf(" Signatures = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_Signatures]); - CLR_Debug::Printf(" ByteCode = %6d bytes\r\n", skeleton->m_pTablesSize[TBL_ByteCode]); + skeleton->tablesSize[TBL_ResourcesFiles] * sizeof(CLR_RECORD_RESOURCE), + skeleton->tablesSize[TBL_ResourcesFiles]); + CLR_Debug::Printf(" Resources Data = %6d bytes\r\n", skeleton->tablesSize[TBL_ResourcesData]); + CLR_Debug::Printf(" Strings = %6d bytes\r\n", skeleton->tablesSize[TBL_Strings]); + CLR_Debug::Printf(" Signatures = %6d bytes\r\n", skeleton->tablesSize[TBL_Signatures]); + CLR_Debug::Printf(" ByteCode = %6d bytes\r\n", skeleton->tablesSize[TBL_ByteCode]); CLR_Debug::Printf("\r\n\r\n"); } #endif @@ -2509,14 +2509,14 @@ HRESULT CLR_RT_Assembly::CreateInstance( { CLR_RT_UnicodeHelper::ConvertToUTF8(szName, strPath); - assm->m_strPath = new std::string(strPath); + assm->path = new std::string(strPath); } NANOCLR_NOCLEANUP(); } #endif -bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) +bool CLR_RT_Assembly::ResolveAssemblyRef(bool fOutput) { NATIVE_PROFILE_CLR_CORE(); bool fGot = true; @@ -2530,18 +2530,18 @@ bool CLR_RT_Assembly::Resolve_AssemblyRef(bool fOutput) { CLR_RT_Assembly *target = g_CLR_RT_TypeSystem.FindAssembly(szName, &src->version, false); - if (target == NULL || (target->m_flags & CLR_RT_Assembly::Resolved) == 0) + if (target == NULL || (target->flags & CLR_RT_Assembly::Resolved) == 0) { #if !defined(BUILD_RTM) if (fOutput) { CLR_Debug::Printf( "Assembly: %s (%d.%d.%d.%d)", - m_szName, - m_header->version.majorVersion, - m_header->version.minorVersion, - m_header->version.buildNumber, - m_header->version.revisionNumber); + name, + header->version.majorVersion, + header->version.minorVersion, + header->version.buildNumber, + header->version.revisionNumber); CLR_Debug::Printf( " needs assembly '%s' (%d.%d.%d.%d)\r\n", @@ -2574,17 +2574,17 @@ void CLR_RT_Assembly::DestroyInstance() } #if defined(VIRTUAL_DEVICE) - if (this->m_strPath != NULL) + if (this->path != NULL) { - delete this->m_strPath; - this->m_strPath = NULL; + delete this->path; + this->path = NULL; } #endif // check if header has to be freed (in case the assembly lives in RAM) - if ((this->m_flags & CLR_RT_Assembly::FreeOnDestroy) != 0) + if ((this->flags & CLR_RT_Assembly::FreeOnDestroy) != 0) { - platform_free((void *)this->m_header); + platform_free((void *)this->header); } //--// @@ -2593,7 +2593,7 @@ void CLR_RT_Assembly::DestroyInstance() } //--// -HRESULT CLR_RT_Assembly::Resolve_TypeRef() +HRESULT CLR_RT_Assembly::ResolveTypeRef() { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -2607,7 +2607,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() { CLR_RT_TypeDef_Instance inst; - if (inst.InitializeFromIndex(m_pCrossReference_TypeRef[src->scope & 0x7FFF].target) == false) + if (inst.InitializeFromIndex(crossReferenceTypeRef[src->scope & 0x7FFF].target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Resolve: unknown scope: %08x\r\n", src->scope); @@ -2636,7 +2636,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() } else { - CLR_RT_Assembly *assm = m_pCrossReference_AssemblyRef[src->scope].target; + CLR_RT_Assembly *assm = crossReferenceAssemblyRef[src->scope].target; if (assm == NULL) { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: assm is null\n"); @@ -2662,7 +2662,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeRef() NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_Assembly::Resolve_FieldRef() +HRESULT CLR_RT_Assembly::ResolveFieldRef() { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -2684,7 +2684,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() switch (src->Owner()) { case TBL_TypeRef: - typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].target; + typeDef = crossReferenceTypeRef[src->OwnerIndex()].target; break; // case CLR_MemberRefParent::MRP_TypeDef: @@ -2762,7 +2762,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() } else if (NANOCLR_INDEX_IS_VALID(typeDef)) { - if (typeDefInstance.InitializeFromIndex(m_pCrossReference_TypeRef[src->OwnerIndex()].target) == false) + if (typeDefInstance.InitializeFromIndex(crossReferenceTypeRef[src->OwnerIndex()].target) == false) { #if !defined(BUILD_RTM) CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); @@ -2804,7 +2804,7 @@ HRESULT CLR_RT_Assembly::Resolve_FieldRef() NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_Assembly::Resolve_MethodRef() +HRESULT CLR_RT_Assembly::ResolveMethodRef() { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -2829,7 +2829,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() switch (src->Owner()) { case TBL_TypeRef: - typeDef = m_pCrossReference_TypeRef[src->OwnerIndex()].target; + typeDef = crossReferenceTypeRef[src->OwnerIndex()].target; break; // case CLR_MemberRefParent::MRP_TypeDef: @@ -2990,7 +2990,7 @@ HRESULT CLR_RT_Assembly::Resolve_MethodRef() NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_Assembly::Resolve_TypeSpec() +HRESULT CLR_RT_Assembly::ResolveTypeSpec() { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -3015,7 +3015,7 @@ HRESULT CLR_RT_Assembly::Resolve_TypeSpec() NANOCLR_NOCLEANUP(); } -void CLR_RT_Assembly::Resolve_Link() +void CLR_RT_Assembly::ResolveLink() { NATIVE_PROFILE_CLR_CORE(); int iStaticFields = 0; @@ -3030,7 +3030,7 @@ void CLR_RT_Assembly::Resolve_Link() // Link static fields. // { - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->firstStaticField]; + CLR_RT_FieldDef_CrossReference *fd = &crossReferenceFieldDef[src->firstStaticField]; num = src->staticFieldsCount; @@ -3071,7 +3071,7 @@ void CLR_RT_Assembly::Resolve_Link() //--// - CLR_RT_FieldDef_CrossReference *fd = &m_pCrossReference_FieldDef[src->firstInstanceField]; + CLR_RT_FieldDef_CrossReference *fd = &crossReferenceFieldDef[src->firstInstanceField]; num = src->instanceFieldsCount; i = tot - num + CLR_RT_HeapBlock::HB_Object_Fields_Offset; // Take into account the offset from the @@ -3087,7 +3087,7 @@ void CLR_RT_Assembly::Resolve_Link() // Link methods. // { - CLR_RT_MethodDef_CrossReference *md = &m_pCrossReference_MethodDef[src->firstMethod]; + CLR_RT_MethodDef_CrossReference *md = &crossReferenceMethodDef[src->firstMethod]; num = src->virtualMethodCount + src->instanceMethodCount + src->staticMethodCount; @@ -3103,7 +3103,7 @@ void CLR_RT_Assembly::Resolve_Link() { if (src->genericParamCount) { - CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[src->firstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &crossReferenceGenericParam[src->firstGenericParam]; // get generic parameter count for stop condition int num = src->genericParamCount; @@ -3882,7 +3882,7 @@ static const MethodIndexLookup c_MethodIndexLookup[] = { #undef MIL }; -void CLR_RT_Assembly::Resolve_TypeDef() +void CLR_RT_Assembly::ResolveTypeDef() { NATIVE_PROFILE_CLR_CORE(); const TypeIndexLookup *tilOuterClass = NULL; @@ -3914,12 +3914,12 @@ void CLR_RT_Assembly::Resolve_TypeDef() } } -void CLR_RT_Assembly::Resolve_MethodDef() +void CLR_RT_Assembly::ResolveMethodDef() { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODDEF *md = GetMethodDef(0); - for (int indexMethod = 0; indexMethod < m_pTablesSize[TBL_MethodDef]; indexMethod++, md++) + for (int indexMethod = 0; indexMethod < tablesSize[TBL_MethodDef]; indexMethod++, md++) { const MethodIndexLookup *mil = c_MethodIndexLookup; @@ -3956,7 +3956,7 @@ void CLR_RT_Assembly::Resolve_MethodDef() // link generic parameters if (md->genericParamCount) { - CLR_RT_GenericParam_CrossReference *gp = &m_pCrossReference_GenericParam[md->firstGenericParam]; + CLR_RT_GenericParam_CrossReference *gp = &crossReferenceGenericParam[md->firstGenericParam]; // get generic parameter count for stop condition int num = md->genericParamCount; @@ -3997,18 +3997,18 @@ void CLR_RT_Assembly::Resolve_MethodDef() } } -HRESULT CLR_RT_Assembly::Resolve_AllocateStaticFields(CLR_RT_HeapBlock *pStaticFields) +HRESULT CLR_RT_Assembly::ResolveAllocateStaticFields(CLR_RT_HeapBlock *pStaticFields) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); const CLR_RECORD_FIELDDEF *fd = GetFieldDef(0); - for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) + for (int i = 0; i < tablesSize[TBL_FieldDef]; i++, fd++) { if (fd->flags & CLR_RECORD_FIELDDEF::FD_Static) { - CLR_RT_FieldDef_CrossReference &res = m_pCrossReference_FieldDef[i]; + CLR_RT_FieldDef_CrossReference &res = crossReferenceFieldDef[i]; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.InitializeReference(pStaticFields[res.offset], fd, this)); } @@ -4022,7 +4022,7 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if ((m_flags & CLR_RT_Assembly::PreparingForExecution) != 0) + if ((flags & CLR_RT_Assembly::PreparingForExecution) != 0) { // Circular dependency _ASSERTE(false); @@ -4030,11 +4030,11 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Failed to prepare type system for execution\n"); } - if ((m_flags & CLR_RT_Assembly::PreparedForExecution) == 0) + if ((flags & CLR_RT_Assembly::PreparedForExecution) == 0) { int i; - m_flags |= CLR_RT_Assembly::PreparingForExecution; + flags |= CLR_RT_Assembly::PreparingForExecution; ITERATE_THROUGH_RECORDS(this, i, AssemblyRef, ASSEMBLYREF) { @@ -4058,8 +4058,8 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() NANOCLR_CLEANUP(); // Only try once. If this fails, then what? - m_flags |= CLR_RT_Assembly::PreparedForExecution; - m_flags &= ~CLR_RT_Assembly::PreparingForExecution; + flags |= CLR_RT_Assembly::PreparedForExecution; + flags &= ~CLR_RT_Assembly::PreparingForExecution; NANOCLR_CLEANUP_END(); } @@ -4069,13 +4069,13 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() CLR_UINT32 CLR_RT_Assembly::ComputeAssemblyHash() { NATIVE_PROFILE_CLR_CORE(); - return m_header->ComputeAssemblyHash(m_szName, m_header->version); + return header->ComputeAssemblyHash(name, header->version); } CLR_UINT32 CLR_RT_Assembly::ComputeAssemblyHash(const CLR_RECORD_ASSEMBLYREF *ar) { NATIVE_PROFILE_CLR_CORE(); - return m_header->ComputeAssemblyHash(GetString(ar->name), ar->version); + return header->ComputeAssemblyHash(GetString(ar->name), ar->version); } //--// @@ -4084,7 +4084,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_R { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); - int tblSize = m_pTablesSize[TBL_TypeDef]; + int tblSize = tablesSize[TBL_TypeDef]; for (int i = 0; i < tblSize; i++, target++) { @@ -4111,7 +4111,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_Type { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); - int tblSize = m_pTablesSize[TBL_TypeDef]; + int tblSize = tablesSize[TBL_TypeDef]; for (int i = 0; i < tblSize; i++, target++) { @@ -4136,8 +4136,8 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_Type bool CLR_RT_Assembly::FindTypeDef(CLR_UINT32 hash, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_TypeDef_CrossReference *p = m_pCrossReference_TypeDef; - CLR_UINT32 tblSize = m_pTablesSize[TBL_TypeDef]; + CLR_RT_TypeDef_CrossReference *p = crossReferenceTypeDef; + CLR_UINT32 tblSize = tablesSize[TBL_TypeDef]; CLR_UINT32 i; for (i = 0; i < tblSize; i++, p++) @@ -4164,7 +4164,7 @@ bool CLR_RT_Assembly::FindGenericParam(CLR_INDEX typeSpecIndex, CLR_RT_GenericPa { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_GENERICPARAM *gp = this->GetGenericParam(0); - int tblSize = this->m_pTablesSize[TBL_GenericParam]; + int tblSize = this->tablesSize[TBL_GenericParam]; for (int i = 0; i < tblSize; i++, gp++) { @@ -4246,7 +4246,7 @@ bool CLR_RT_Assembly::FindMethodSpecFromTypeSpec(CLR_INDEX typeSpecIndex, CLR_RT { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODSPEC *ms = this->GetMethodSpec(0); - int tblSize = this->m_pTablesSize[TBL_MethodSpec]; + int tblSize = this->tablesSize[TBL_MethodSpec]; for (int i = 0; i < tblSize; i++, ms++) { @@ -4338,7 +4338,7 @@ bool CLR_RT_Assembly::FindFieldDef( const CLR_RECORD_FIELDDEF *fd = GetFieldDef(0); - for (int i = 0; i < m_pTablesSize[TBL_FieldDef]; i++, fd++) + for (int i = 0; i < tablesSize[TBL_FieldDef]; i++, fd++) { const char *fieldName = GetString(fd->name); @@ -4438,7 +4438,7 @@ bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &ind { NATIVE_PROFILE_CLR_CORE(); - for (int i = 0; i < m_pTablesSize[TBL_TypeSpec]; i++) + for (int i = 0; i < tablesSize[TBL_TypeSpec]; i++) { const CLR_RECORD_TYPESPEC *ts = GetTypeSpec(i); @@ -4484,9 +4484,9 @@ bool CLR_RT_Assembly::FindMethodBoundaries(CLR_INDEX i, CLR_OFFSET &start, CLR_O p++; i++; - if (i == m_pTablesSize[TBL_MethodDef]) + if (i == tablesSize[TBL_MethodDef]) { - end = m_pTablesSize[TBL_ByteCode]; + end = tablesSize[TBL_ByteCode]; break; } @@ -4505,7 +4505,7 @@ bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &index) NATIVE_PROFILE_CLR_CORE(); _ASSERTE(assemblyIndex == index.Assembly()); - for (int i = index.Method(); i < m_pTablesSize[TBL_MethodDef]; i++) + for (int i = index.Method(); i < tablesSize[TBL_MethodDef]; i++) { const CLR_RECORD_METHODDEF *md = GetMethodDef(i); @@ -4523,15 +4523,15 @@ bool CLR_RT_Assembly::FindNextStaticConstructor(CLR_RT_MethodDef_Index &index) //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_Assembly::Resolve_ComputeHashes() +HRESULT CLR_RT_Assembly::ResolveComputeHashes() { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); const CLR_RECORD_TYPEDEF *src = GetTypeDef(0); - CLR_RT_TypeDef_CrossReference *dst = m_pCrossReference_TypeDef; + CLR_RT_TypeDef_CrossReference *dst = crossReferenceTypeDef; - for (int i = 0; i < m_pTablesSize[TBL_TypeDef]; i++, src++, dst++) + for (int i = 0; i < tablesSize[TBL_TypeDef]; i++, src++, dst++) { CLR_RT_TypeDef_Index index; index.Set(assemblyIndex, i); @@ -4621,7 +4621,7 @@ CLR_RT_HeapBlock *CLR_RT_Assembly::GetStaticField(const int index) #else - return &m_pStaticFields[index]; + return &staticFields[index]; #endif } @@ -4633,13 +4633,13 @@ void CLR_RT_Assembly::Relocate() NATIVE_PROFILE_CLR_CORE(); #if !defined(NANOCLR_APPDOMAINS) - CLR_RT_GarbageCollector::Heap_Relocate(m_pStaticFields, m_iStaticFields); + CLR_RT_GarbageCollector::Heap_Relocate(staticFields, staticFieldsCount); #endif - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_header); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_szName); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_pFile); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_nativeCode); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&header); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&name); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&file); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&nativeCode); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4689,11 +4689,11 @@ void CLR_RT_TypeSystem::Link(CLR_RT_Assembly *assm) void CLR_RT_TypeSystem::PostLinkageProcessing(CLR_RT_Assembly *assm) { NATIVE_PROFILE_CLR_CORE(); - if (!strcmp(assm->m_szName, "mscorlib")) + if (!strcmp(assm->name, "mscorlib")) { m_assemblyMscorlib = assm; } - if (!strcmp(assm->m_szName, "nanoFramework.Runtime.Native")) + if (!strcmp(assm->name, "nanoFramework.Runtime.Native")) { m_assemblyNative = assm; } @@ -4705,7 +4705,7 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R NANOCLR_FOREACH_ASSEMBLY(*this) { - if (!strcmp(pASSM->m_szName, szName)) + if (!strcmp(pASSM->name, szName)) { // if there is no version information, anything goes if (NULL == ver) @@ -4715,7 +4715,7 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R // exact match requested: must take into accoutn all numbers in the version else if (fExact) { - if (0 == memcmp(&pASSM->m_header->version, ver, sizeof(*ver))) + if (0 == memcmp(&pASSM->header->version, ver, sizeof(*ver))) { return pASSM; } @@ -4724,8 +4724,8 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R // we will enforce only the first two number because (by convention) // only the minor field is required to be bumped when native assemblies change CRC else if ( - ver->majorVersion == pASSM->m_header->version.majorVersion && - ver->minorVersion == pASSM->m_header->version.minorVersion) + ver->majorVersion == pASSM->header->version.majorVersion && + ver->minorVersion == pASSM->header->version.minorVersion) { return pASSM; } @@ -5025,7 +5025,7 @@ HRESULT CLR_RT_TypeSystem::LocateResourceFile( CLR_RT_Assembly *pAssm = assm.assembly; - for (indexResourceFile = 0; indexResourceFile < pAssm->m_pTablesSize[TBL_ResourcesFiles]; indexResourceFile++) + for (indexResourceFile = 0; indexResourceFile < pAssm->tablesSize[TBL_ResourcesFiles]; indexResourceFile++) { const CLR_RECORD_RESOURCE_FILE *resourceFile = pAssm->GetResourceFile(indexResourceFile); @@ -5059,7 +5059,7 @@ HRESULT CLR_RT_TypeSystem::LocateResource( res = NULL; size = 0; - if (indexResourceFile < 0 || indexResourceFile >= pAssm->m_pTablesSize[TBL_ResourcesFiles]) + if (indexResourceFile < 0 || indexResourceFile >= pAssm->tablesSize[TBL_ResourcesFiles]) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); resourceFile = pAssm->GetResourceFile(indexResourceFile); @@ -5077,7 +5077,7 @@ HRESULT CLR_RT_TypeSystem::LocateResource( { // compute size here... // assert not the last resource - _ASSERTE(res + 1 <= pAssm->GetResource(pAssm->m_pTablesSize[TBL_Resources] - 1)); + _ASSERTE(res + 1 <= pAssm->GetResource(pAssm->tablesSize[TBL_Resources] - 1)); resNext = res + 1; size = resNext->offset - res->offset; @@ -5103,30 +5103,30 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() NANOCLR_FOREACH_ASSEMBLY(*this) { - if ((pASSM->m_flags & CLR_RT_Assembly::Resolved) == 0) + if ((pASSM->flags & CLR_RT_Assembly::Resolved) == 0) { fNeedResolution = true; - if (pASSM->Resolve_AssemblyRef(fOutput)) + if (pASSM->ResolveAssemblyRef(fOutput)) { fGot = true; - pASSM->m_flags |= CLR_RT_Assembly::Resolved; + pASSM->flags |= CLR_RT_Assembly::Resolved; - NANOCLR_CHECK_HRESULT(pASSM->Resolve_TypeRef()); - NANOCLR_CHECK_HRESULT(pASSM->Resolve_FieldRef()); - NANOCLR_CHECK_HRESULT(pASSM->Resolve_MethodRef()); - /********************/ pASSM->Resolve_TypeDef(); - /********************/ pASSM->Resolve_MethodDef(); - NANOCLR_CHECK_HRESULT(pASSM->Resolve_TypeSpec()); - /********************/ pASSM->Resolve_Link(); - NANOCLR_CHECK_HRESULT(pASSM->Resolve_ComputeHashes()); + NANOCLR_CHECK_HRESULT(pASSM->ResolveTypeRef()); + NANOCLR_CHECK_HRESULT(pASSM->ResolveFieldRef()); + NANOCLR_CHECK_HRESULT(pASSM->ResolveMethodRef()); + /********************/ pASSM->ResolveTypeDef(); + /********************/ pASSM->ResolveMethodDef(); + NANOCLR_CHECK_HRESULT(pASSM->ResolveTypeSpec()); + /********************/ pASSM->ResolveLink(); + NANOCLR_CHECK_HRESULT(pASSM->ResolveComputeHashes()); #if !defined(NANOCLR_APPDOMAINS) - NANOCLR_CHECK_HRESULT(pASSM->Resolve_AllocateStaticFields(pASSM->m_pStaticFields)); + NANOCLR_CHECK_HRESULT(pASSM->ResolveAllocateStaticFields(pASSM->staticFields)); #endif - pASSM->m_flags |= CLR_RT_Assembly::ResolutionCompleted; + pASSM->flags |= CLR_RT_Assembly::ResolutionCompleted; } } } @@ -5171,67 +5171,67 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() NANOCLR_FOREACH_ASSEMBLY(*this) { - offsets.iBase += ROUNDTOMULTIPLE(sizeof(CLR_RT_Assembly), CLR_UINT32); - offsets.iAssemblyRef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), + offsets.base += ROUNDTOMULTIPLE(sizeof(CLR_RT_Assembly), CLR_UINT32); + offsets.assemblyRef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), CLR_UINT32); - offsets.iTypeRef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), + offsets.typeRef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), CLR_UINT32); - offsets.iFieldRef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), + offsets.fieldRef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); - offsets.iMethodRef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), + offsets.methodRef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), CLR_UINT32); - offsets.iTypeDef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), + offsets.typeDef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); - offsets.iFieldDef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), + offsets.fieldDef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); - offsets.iMethodDef += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), + offsets.methodDef += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), CLR_UINT32); - offsets.iGenericParam += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), + offsets.genericParam += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) - offsets.iStaticFields += ROUNDTOMULTIPLE(pASSM->m_iStaticFields * sizeof(CLR_RT_HeapBlock), CLR_UINT32); + offsets.staticFieldsCount += ROUNDTOMULTIPLE(pASSM->staticFieldsCount * sizeof(CLR_RT_HeapBlock), CLR_UINT32); #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - offsets.iDebuggingInfoMethods += ROUNDTOMULTIPLE( - pASSM->m_pTablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), + offsets.debuggingInfoMethods += ROUNDTOMULTIPLE( + pASSM->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - iMetaData += pASSM->m_header->SizeOfTable(TBL_AssemblyRef) + pASSM->m_header->SizeOfTable(TBL_TypeRef) + - pASSM->m_header->SizeOfTable(TBL_FieldRef) + pASSM->m_header->SizeOfTable(TBL_MethodRef) + - pASSM->m_header->SizeOfTable(TBL_TypeDef) + pASSM->m_header->SizeOfTable(TBL_FieldDef) + - pASSM->m_header->SizeOfTable(TBL_MethodDef) + - pASSM->m_header->SizeOfTable(TBL_GenericParam) + - pASSM->m_header->SizeOfTable(TBL_TypeSpec) + pASSM->m_header->SizeOfTable(TBL_Attributes) + - pASSM->m_header->SizeOfTable(TBL_Signatures); + iMetaData += pASSM->header->SizeOfTable(TBL_AssemblyRef) + pASSM->header->SizeOfTable(TBL_TypeRef) + + pASSM->header->SizeOfTable(TBL_FieldRef) + pASSM->header->SizeOfTable(TBL_MethodRef) + + pASSM->header->SizeOfTable(TBL_TypeDef) + pASSM->header->SizeOfTable(TBL_FieldDef) + + pASSM->header->SizeOfTable(TBL_MethodDef) + + pASSM->header->SizeOfTable(TBL_GenericParam) + + pASSM->header->SizeOfTable(TBL_TypeSpec) + pASSM->header->SizeOfTable(TBL_Attributes) + + pASSM->header->SizeOfTable(TBL_Signatures); for (int tbl = 0; tbl < TBL_Max; tbl++) { - pTablesSize[tbl] += pASSM->m_pTablesSize[tbl]; + pTablesSize[tbl] += pASSM->tablesSize[tbl]; } - iTotalRomSize += pASSM->m_header->TotalSize(); + iTotalRomSize += pASSM->header->TotalSize(); - iStaticFields += pASSM->m_iStaticFields; + iStaticFields += pASSM->staticFieldsCount; } NANOCLR_FOREACH_ASSEMBLY_END(); - iTotalRamSize = offsets.iBase + offsets.iAssemblyRef + offsets.iTypeRef + offsets.iFieldRef + - offsets.iMethodRef + offsets.iTypeDef + offsets.iFieldDef + offsets.iMethodDef + - offsets.iGenericParam; + iTotalRamSize = offsets.base + offsets.assemblyRef + offsets.typeRef + offsets.fieldRef + + offsets.methodRef + offsets.typeDef + offsets.fieldDef + offsets.methodDef + + offsets.genericParam; #if !defined(NANOCLR_APPDOMAINS) - iTotalRamSize += offsets.iStaticFields; + iTotalRamSize += offsets.staticFieldsCount; #endif CLR_Debug::Printf( @@ -5242,52 +5242,52 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() CLR_Debug::Printf( " AssemblyRef = %6d bytes (%5d elements)\r\n", - offsets.iAssemblyRef, + offsets.assemblyRef, pTablesSize[TBL_AssemblyRef]); CLR_Debug::Printf( " TypeRef = %6d bytes (%5d elements)\r\n", - offsets.iTypeRef, + offsets.typeRef, pTablesSize[TBL_TypeRef]); CLR_Debug::Printf( " FieldRef = %6d bytes (%5d elements)\r\n", - offsets.iFieldRef, + offsets.fieldRef, pTablesSize[TBL_FieldRef]); CLR_Debug::Printf( " MethodRef = %6d bytes (%5d elements)\r\n", - offsets.iMethodRef, + offsets.methodRef, pTablesSize[TBL_MethodRef]); CLR_Debug::Printf( " TypeDef = %6d bytes (%5d elements)\r\n", - offsets.iTypeDef, + offsets.typeDef, pTablesSize[TBL_TypeDef]); CLR_Debug::Printf( " FieldDef = %6d bytes (%5d elements)\r\n", - offsets.iFieldDef, + offsets.fieldDef, pTablesSize[TBL_FieldDef]); CLR_Debug::Printf( " MethodDef = %6d bytes (%5d elements)\r\n", - offsets.iMethodDef, + offsets.methodDef, pTablesSize[TBL_MethodDef]); CLR_Debug::Printf( " GenericParam = %6d bytes (%5d elements)\r\n", - offsets.iGenericParam, + offsets.genericParam, pTablesSize[TBL_GenericParam]); CLR_Debug::Printf( " MethodSpec = %6d bytes (%5d elements)\r\n", - offsets.iMethodSpec, + offsets.methodSpec, pTablesSize[TBL_MethodSpec]); #if !defined(NANOCLR_APPDOMAINS) CLR_Debug::Printf( " StaticFields = %6d bytes (%5d elements)\r\n", - offsets.iStaticFields, + offsets.staticFieldsCount, iStaticFields); #endif CLR_Debug::Printf("\r\n"); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - CLR_Debug::Printf(" DebuggingInfo = %6d bytes\r\n", offsets.iDebuggingInfoMethods); + CLR_Debug::Printf(" DebuggingInfo = %6d bytes\r\n", offsets.debuggingInfoMethods); CLR_Debug::Printf("\r\n"); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -5327,7 +5327,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecutionHelper(const char *szAssembly) NANOCLR_FOREACH_ASSEMBLY(*this) { - if (!strcmp(szAssembly, pASSM->m_szName)) + if (!strcmp(szAssembly, pASSM->name)) { NANOCLR_CHECK_HRESULT(pASSM->PrepareForExecution()); } @@ -5720,7 +5720,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth CLR_RT_Assembly *assembly = g_CLR_RT_TypeSystem.m_assemblies[method.Assembly() - 1]; - const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->m_pCrossReference_MethodRef[method.Method()]; + const CLR_RT_MethodRef_CrossReference memberCrossRef = assembly->crossReferenceMethodRef[method.Method()]; const CLR_RECORD_METHODREF *methodRef = assembly->GetMethodRef(method.Method()); if (memberCrossRef.genericType.data == CLR_EmptyToken) @@ -5735,7 +5735,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodRefName(const CLR_RT_MethodRef_Index &meth CLR_RT_TypeDef_Index typeOwner; typeOwner.Set( mdInstance.Assembly(), - mdInstance.assembly->m_pCrossReference_MethodDef[mdInstance.Method()].GetOwner()); + mdInstance.assembly->crossReferenceMethodDef[mdInstance.Method()].GetOwner()); NANOCLR_CHECK_HRESULT(BuildTypeName(typeOwner, szBuffer, iBuffer)); @@ -5847,7 +5847,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodSpecName(const CLR_RT_MethodSpec_Index &ms case TBL_MethodRef: { const CLR_RT_MethodRef_CrossReference memberCrossRef = - assembly->m_pCrossReference_MethodRef[msRecord->MethodIndex()]; + assembly->crossReferenceMethodRef[msRecord->MethodIndex()]; CLR_RT_MethodDef_Instance mdInstance; mdInstance.data = memberCrossRef.target.data; @@ -6054,7 +6054,7 @@ bool CLR_RT_AttributeEnumerator::Advance() if (ptr == NULL) { ptr = m_assm->GetAttribute(0) - 1; - num = m_assm->m_pTablesSize[TBL_Attributes]; + num = m_assm->tablesSize[TBL_Attributes]; } while (num) @@ -6068,7 +6068,7 @@ bool CLR_RT_AttributeEnumerator::Advance() // check TYPEDEF if (tk & 0x8000) { - m_match = m_assm->m_pCrossReference_MethodRef[tk & 0x7FFF].target; + m_match = m_assm->crossReferenceMethodRef[tk & 0x7FFF].target; } else { diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 55c1ae9577..fc48dfaa78 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1422,9 +1422,9 @@ static void GetClrReleaseInfo(CLR_DBG_Commands::Debugging_Execution_QueryCLRCapa PLATFORMNAMESTRING, ARRAYSIZE(PLATFORMNAMESTRING)); - if (g_CLR_RT_TypeSystem.m_assemblyMscorlib && g_CLR_RT_TypeSystem.m_assemblyMscorlib->m_header) + if (g_CLR_RT_TypeSystem.m_assemblyMscorlib && g_CLR_RT_TypeSystem.m_assemblyMscorlib->header) { - const CLR_RECORD_VERSION *mscorlibVer = &(g_CLR_RT_TypeSystem.m_assemblyMscorlib->m_header->version); + const CLR_RECORD_VERSION *mscorlibVer = &(g_CLR_RT_TypeSystem.m_assemblyMscorlib->header->version); NFVersion::Init( clrInfo.m_TargetFrameworkVersion, mscorlibVer->majorVersion, @@ -2030,7 +2030,7 @@ bool CLR_DBG_Debugger::CheckTypeDef(const CLR_RT_TypeDef_Index &td, CLR_RT_TypeD NATIVE_PROFILE_CLR_DEBUGGER(); CLR_RT_Assembly *assm = IsGoodAssembly(td.Assembly()); - if (assm && td.Type() < assm->m_pTablesSize[TBL_TypeDef]) + if (assm && td.Type() < assm->tablesSize[TBL_TypeDef]) { return inst.InitializeFromIndex(td); } @@ -2043,7 +2043,7 @@ bool CLR_DBG_Debugger::CheckFieldDef(const CLR_RT_FieldDef_Index &fd, CLR_RT_Fie NATIVE_PROFILE_CLR_DEBUGGER(); CLR_RT_Assembly *assm = IsGoodAssembly(fd.Assembly()); - if (assm && fd.Field() < assm->m_pTablesSize[TBL_FieldDef]) + if (assm && fd.Field() < assm->tablesSize[TBL_FieldDef]) { return inst.InitializeFromIndex(fd); } @@ -2056,7 +2056,7 @@ bool CLR_DBG_Debugger::CheckMethodDef(const CLR_RT_MethodDef_Index &md, CLR_RT_M NATIVE_PROFILE_CLR_DEBUGGER(); CLR_RT_Assembly *assm = IsGoodAssembly(md.Assembly()); - if (assm && md.Method() < assm->m_pTablesSize[TBL_MethodDef]) + if (assm && md.Method() < assm->tablesSize[TBL_MethodDef]) { return inst.InitializeFromIndex(md); } @@ -2779,7 +2779,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) assembly->FindGenericParamAtMethodDef(md, res.GenericParamPosition, gpIndex); CLR_RT_GenericParam_CrossReference gp = - assembly->m_pCrossReference_GenericParam[gpIndex.GenericParam()]; + assembly->crossReferenceGenericParam[gpIndex.GenericParam()]; targetClass = gp.classTypeDef; targetDataType = gp.dataType; @@ -3505,14 +3505,14 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Assembly(WP_Message *msg) { #if defined(VIRTUAL_DEVICE) // append path - if (assm->m_strPath != NULL) + if (assm->path != NULL) { sprintf_s( cmdReply->m_szName, ARRAYSIZE(cmdReply->m_szName), "%s,%s", - assm->m_szName, - assm->m_strPath->c_str()); + assm->name, + assm->path->c_str()); } else #endif @@ -3520,12 +3520,12 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Assembly(WP_Message *msg) hal_strncpy_s( cmdReply->m_szName, ARRAYSIZE(cmdReply->m_szName), - assm->m_szName, + assm->name, MAXSTRLEN(cmdReply->m_szName)); } - cmdReply->m_flags = assm->m_flags; - cmdReply->m_version = assm->m_header->version; + cmdReply->m_flags = assm->flags; + cmdReply->m_version = assm->header->version; WP_ReplyToCommand(msg, true, false, cmdReply, sizeof(CLR_DBG_Commands::Debugging_Resolve_Assembly::Reply)); @@ -3835,7 +3835,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) return false; } - for (int i = 0; i < assm->m_pTablesSize[TBL_TypeDef]; i++) + for (int i = 0; i < assm->tablesSize[TBL_TypeDef]; i++) { CLR_RT_TypeDef_Index idx; diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 8ad7cdbcd4..d412b04d52 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -440,27 +440,27 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE #endif //////////////////////////////////////////////////////////////////////////////////////////////////// -#define LOOKUP_ELEMENT(index, tblName, tblNameUC) const CLR_RECORD_##tblNameUC *p = Get##tblName(index) +#define LOOKUP_ELEMENT(idx, tblName, tblNameUC) const CLR_RECORD_##tblNameUC *p = Get##tblName(idx) -#define LOOKUP_ELEMENT_REF(index, tblName, tblNameUC, tblName2) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ - const CLR_RT_##tblName2##_Index *s = &m_pCrossReference_##tblName[index].target; \ +#define LOOKUP_ELEMENT_REF(idx, tblName, tblNameUC, tblName2) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ + const CLR_RT_##tblName2##_Index *s = &crossReference##tblName[idx].target; \ if (s->data == 0) \ s = NULL -#define LOOKUP_ELEMENT_IDX(index, tblName, tblNameUC) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(index); \ +#define LOOKUP_ELEMENT_IDX(idx, tblName, tblNameUC) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ CLR_RT_##tblName##_Index s; \ - s.Set(assemblyIndex, index) + s.Set(assemblyIndex, idx) #if defined(NANOCLR_TRACE_INSTRUCTIONS) -void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) +void CLR_RT_Assembly::DumpToken(CLR_UINT32 token) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_UINT32 index = CLR_DataFromTk(tk); + CLR_UINT32 index = CLR_DataFromTk(token); - switch (CLR_TypeFromTk(tk)) + switch (CLR_TypeFromTk(token)) { case TBL_AssemblyRef: { @@ -534,7 +534,7 @@ void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) } default: - CLR_Debug::Printf("[%08x]", tk); + CLR_Debug::Printf("[%08x]", token); } } @@ -655,9 +655,9 @@ void CLR_RT_Assembly::DumpSignature(const CLR_UINT8 *&p) void CLR_RT_Assembly::DumpSignatureToken(const CLR_UINT8 *&p) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - CLR_UINT32 tk = CLR_TkFromStream(p); + CLR_UINT32 token = CLR_TkFromStream(p); - CLR_Debug::Printf("[%08x]", tk); + CLR_Debug::Printf("[%08x]", token); } //--// diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 80f5d39edc..2837940c76 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -304,9 +304,9 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_ASSEMBLY: { CLR_RT_Assembly *assembly = (CLR_RT_Assembly *)ptr; - DumpSingleReference(assembly->m_pFile); + DumpSingleReference(assembly->file); #if !defined(NANOCLR_APPDOMAINS) - DumpListOfReferences(assembly->m_pStaticFields, assembly->m_iStaticFields); + DumpListOfReferences(assembly->staticFields, assembly->staticFieldsCount); #endif break; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index f019fb2b58..31b66f15e3 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -998,24 +998,24 @@ struct CLR_RT_MethodDef_DebuggingInfo } private: - void SetFlags(CLR_UINT8 flags) + void SetFlags(CLR_UINT8 newFlags) { - flags |= flags; + flags |= newFlags; } - void ResetFlags(CLR_UINT8 flags) + void ResetFlags(CLR_UINT8 newFlags) { - flags &= ~flags; + flags &= ~newFlags; } - bool IsFlagSet(CLR_UINT8 flags) const + bool IsFlagSet(CLR_UINT8 newFlags) const { - return (flags & flags) != 0; + return (flags & newFlags) != 0; } - void SetResetFlags(bool b, CLR_UINT8 flags) + void SetResetFlags(bool b, CLR_UINT8 newFlags) { if (b) - SetFlags(flags); + SetFlags(newFlags); else - ResetFlags(flags); + ResetFlags(newFlags); } }; @@ -1287,24 +1287,24 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT { struct Offsets { - size_t iBase; - size_t iAssemblyRef; - size_t iTypeRef; - size_t iFieldRef; - size_t iMethodRef; - size_t iTypeDef; - size_t iFieldDef; - size_t iMethodDef; - size_t iGenericParam; - size_t iMethodSpec; - size_t iTypeSpec; + size_t base; + size_t assemblyRef; + size_t typeRef; + size_t fieldRef; + size_t methodRef; + size_t typeDef; + size_t fieldDef; + size_t methodDef; + size_t genericParam; + size_t methodSpec; + size_t typeSpec; #if !defined(NANOCLR_APPDOMAINS) - size_t iStaticFields; + size_t staticFieldsCount; #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - size_t iDebuggingInfoMethods; + size_t debuggingInfoMethods; #endif }; @@ -1326,56 +1326,71 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT // Relative to the type system (for static fields access). CLR_UINT32 assemblyIndex; - CLR_UINT32 m_flags; + CLR_UINT32 flags; - const CLR_RECORD_ASSEMBLY *m_header; // ANY HEAP - DO RELOCATION - - const char *m_szName; // ANY HEAP - DO RELOCATION - + // ANY HEAP - DO RELOCATION - + const CLR_RECORD_ASSEMBLY *header; + // ANY HEAP - DO RELOCATION - + const char *name; - const CLR_RT_MethodHandler *m_nativeCode; + const CLR_RT_MethodHandler *nativeCode; - int m_pTablesSize[TBL_Max]; + int tablesSize[TBL_Max]; #if !defined(NANOCLR_APPDOMAINS) - CLR_RT_HeapBlock *m_pStaticFields; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + CLR_RT_HeapBlock *staticFields; #endif - int m_iStaticFields; + int staticFieldsCount; - CLR_RT_HeapBlock_Array *m_pFile; // ANY HEAP - DO RELOCATION - + // ANY HEAP - DO RELOCATION - + CLR_RT_HeapBlock_Array *file; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_AssemblyRef_CrossReference - *m_pCrossReference_AssemblyRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceAssemblyRef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_TypeRef_CrossReference - *m_pCrossReference_TypeRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceTypeRef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_FieldRef_CrossReference - *m_pCrossReference_FieldRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceFieldRef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodRef_CrossReference - *m_pCrossReference_MethodRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceMethodRef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_TypeDef_CrossReference - *m_pCrossReference_TypeDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceTypeDef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_FieldDef_CrossReference - *m_pCrossReference_FieldDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceFieldDef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodDef_CrossReference - *m_pCrossReference_MethodDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceMethodDef; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_GenericParam_CrossReference * - m_pCrossReference_GenericParam; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + crossReferenceGenericParam; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodSpec_CrossReference - *m_pCrossReference_MethodSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceMethodSpec; + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_TypeSpec_CrossReference - *m_pCrossReference_TypeSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) + *crossReferenceTypeSpec; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodDef_DebuggingInfo - *m_pDebuggingInfo_MethodDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + *m_pDebuggingInfo_MethodDef; +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING #if defined(NANOCLR_TRACE_STACK_HEAVY) && defined(VIRTUAL_DEVICE) - int m_maxOpcodes; - int *m_stackDepth; + int maxOpcodes; + int *stackDepth; #endif #if defined(VIRTUAL_DEVICE) - std::string *m_strPath; + std::string *path; #endif //--// @@ -1396,18 +1411,18 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT static HRESULT CreateInstance(const CLR_RECORD_ASSEMBLY *data, CLR_RT_Assembly *&assm); void DestroyInstance(); - void Assembly_Initialize(CLR_RT_Assembly::Offsets &offsets); + void AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets); - bool Resolve_AssemblyRef(bool fOutput); - HRESULT Resolve_TypeRef(); - HRESULT Resolve_FieldRef(); - HRESULT Resolve_MethodRef(); - HRESULT Resolve_TypeSpec(); - void Resolve_TypeDef(); - void Resolve_MethodDef(); - void Resolve_Link(); - HRESULT Resolve_ComputeHashes(); - HRESULT Resolve_AllocateStaticFields(CLR_RT_HeapBlock *pStaticFields); + bool ResolveAssemblyRef(bool fOutput); + HRESULT ResolveTypeRef(); + HRESULT ResolveFieldRef(); + HRESULT ResolveMethodRef(); + HRESULT ResolveTypeSpec(); + void ResolveTypeDef(); + void ResolveMethodDef(); + void ResolveLink(); + HRESULT ResolveComputeHashes(); + HRESULT ResolveAllocateStaticFields(CLR_RT_HeapBlock *pStaticFields); HRESULT PrepareForExecution(); @@ -1469,75 +1484,75 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT //--// - CLR_PMETADATA GetTable(NanoCLRTable tbl) + CLR_PMETADATA GetTable(NanoCLRTable tbl) const { - return (CLR_PMETADATA)m_header + m_header->startOfTables[tbl]; + return (CLR_PMETADATA)header + header->startOfTables[tbl]; } #define NANOCLR_ASSEMBLY_RESOLVE(cls, tbl, index) \ - (const cls *)((CLR_UINT8 *)m_header + m_header->startOfTables[tbl] + (sizeof(cls) * index)) - const CLR_RECORD_ASSEMBLYREF *GetAssemblyRef(CLR_INDEX i) + (const cls *)((CLR_UINT8 *)header + header->startOfTables[tbl] + (sizeof(cls) * index)) + const CLR_RECORD_ASSEMBLYREF *GetAssemblyRef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_ASSEMBLYREF, TBL_AssemblyRef, i); } - const CLR_RECORD_TYPEREF *GetTypeRef(CLR_INDEX i) + const CLR_RECORD_TYPEREF *GetTypeRef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPEREF, TBL_TypeRef, i); } - const CLR_RECORD_FIELDREF *GetFieldRef(CLR_INDEX i) + const CLR_RECORD_FIELDREF *GetFieldRef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_FIELDREF, TBL_FieldRef, i); } - const CLR_RECORD_METHODREF *GetMethodRef(CLR_INDEX i) + const CLR_RECORD_METHODREF *GetMethodRef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODREF, TBL_MethodRef, i); } - const CLR_RECORD_TYPEDEF *GetTypeDef(CLR_INDEX i) + const CLR_RECORD_TYPEDEF *GetTypeDef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPEDEF, TBL_TypeDef, i); } - const CLR_RECORD_FIELDDEF *GetFieldDef(CLR_INDEX i) + const CLR_RECORD_FIELDDEF *GetFieldDef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_FIELDDEF, TBL_FieldDef, i); } - const CLR_RECORD_METHODDEF *GetMethodDef(CLR_INDEX i) + const CLR_RECORD_METHODDEF *GetMethodDef(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODDEF, TBL_MethodDef, i); } - const CLR_RECORD_GENERICPARAM *GetGenericParam(CLR_INDEX i) + const CLR_RECORD_GENERICPARAM *GetGenericParam(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_GENERICPARAM, TBL_GenericParam, i); } - const CLR_RECORD_METHODSPEC *GetMethodSpec(CLR_INDEX i) + const CLR_RECORD_METHODSPEC *GetMethodSpec(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_METHODSPEC, TBL_MethodSpec, i); } - const CLR_RECORD_ATTRIBUTE *GetAttribute(CLR_INDEX i) + const CLR_RECORD_ATTRIBUTE *GetAttribute(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_ATTRIBUTE, TBL_Attributes, i); } - const CLR_RECORD_TYPESPEC *GetTypeSpec(CLR_INDEX i) + const CLR_RECORD_TYPESPEC *GetTypeSpec(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_TYPESPEC, TBL_TypeSpec, i); } - const CLR_RECORD_RESOURCE_FILE *GetResourceFile(CLR_INDEX i) + const CLR_RECORD_RESOURCE_FILE *GetResourceFile(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_RESOURCE_FILE, TBL_ResourcesFiles, i); } - const CLR_RECORD_RESOURCE *GetResource(CLR_INDEX i) + const CLR_RECORD_RESOURCE *GetResource(CLR_INDEX i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_RECORD_RESOURCE, TBL_Resources, i); } - CLR_PMETADATA GetResourceData(CLR_UINT32 i) + CLR_PMETADATA GetResourceData(CLR_UINT32 i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_UINT8, TBL_ResourcesData, i); } const char *GetString(CLR_STRING i); - CLR_PMETADATA GetSignature(CLR_SIG i) + CLR_PMETADATA GetSignature(CLR_SIG i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_UINT8, TBL_Signatures, i); } - CLR_PMETADATA GetByteCode(CLR_OFFSET i) + CLR_PMETADATA GetByteCode(CLR_OFFSET i) const { return NANOCLR_ASSEMBLY_RESOLVE(CLR_UINT8, TBL_ByteCode, i); } @@ -1564,6 +1579,8 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT void DumpSignature(CLR_SIG sig) DECL_POSTFIX; void DumpSignature(CLR_PMETADATA &p) DECL_POSTFIX; void DumpSignatureToken(CLR_PMETADATA &p) DECL_POSTFIX; + void DumpFieldOwner(CLR_UINT32 index) DECL_POSTFIX; + void DumpMethodOwner(CLR_UINT32 index) DECL_POSTFIX; //--// @@ -1572,16 +1589,16 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT static FILE *s_toclose; public: - static void Dump_SetDevice(FILE *&outputDeviceFile, const wchar_t *szFileName); - static void Dump_SetDevice(const wchar_t *szFileName); + static void DumpSetDevice(FILE *&outputDeviceFile, const wchar_t *szFileName); + static void DumpSetDevice(const wchar_t *szFileName); - static void Dump_CloseDevice(FILE *&outputDeviceFile); - static void Dump_CloseDevice(); + static void DumpCloseDevice(FILE *&outputDeviceFile); + static void DumpCloseDevice(); - static void Dump_Printf(FILE *outputDeviceFile, const char *format, ...); - static void Dump_Printf(const char *format, ...); + static void DumpPrintf(FILE *outputDeviceFile, const char *format, ...); + static void DumpPrintf(const char *format, ...); - static void Dump_Indent(const CLR_RECORD_METHODDEF *md, size_t offset, size_t level); + static void DumpIndent(const CLR_RECORD_METHODDEF *md, size_t offset, size_t level); void Dump(bool fNoByteCode); @@ -1608,16 +1625,6 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT void BuildTypeName(const CLR_RECORD_TYPEDEF *td, std::string &type_name); #endif - private: -#if defined(VIRTUAL_DEVICE) - void Dump_Token(CLR_UINT32 tk); - void Dump_FieldOwner(CLR_UINT32 index); - void Dump_MethodOwner(CLR_UINT32 index); - void Dump_Signature(CLR_SIG sig); - void Dump_Signature(CLR_PMETADATA &p); - void Dump_SignatureToken(CLR_PMETADATA &p); -#endif - //--// PROHIBIT_ALL_CONSTRUCTORS(CLR_RT_Assembly); @@ -2149,7 +2156,7 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index CLR_RT_TypeDef_CrossReference &CrossReference() const { - return assembly->m_pCrossReference_TypeDef[Type()]; + return assembly->crossReferenceTypeDef[Type()]; } bool SwitchToParent(); @@ -2182,7 +2189,7 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index CLR_RT_FieldDef_CrossReference &CrossReference() const { - return assembly->m_pCrossReference_FieldDef[Field()]; + return assembly->crossReferenceFieldDef[Field()]; } }; @@ -2210,7 +2217,7 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index CLR_RT_MethodDef_CrossReference &CrossReference() const { - return assembly->m_pCrossReference_MethodDef[Method()]; + return assembly->crossReferenceMethodDef[Method()]; } CLR_UINT32 Hits() const { @@ -2246,7 +2253,7 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index CLR_RT_GenericParam_CrossReference &CrossReference() const { - return assembly->m_pCrossReference_GenericParam[GenericParam()]; + return assembly->crossReferenceGenericParam[GenericParam()]; } }; @@ -2263,7 +2270,7 @@ struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index CLR_RT_MethodSpec_CrossReference &CrossReference() const { - return assembly->m_pCrossReference_MethodSpec[Method()]; + return assembly->crossReferenceMethodSpec[Method()]; } CLR_INDEX Container(); diff --git a/src/CLR/Startup/CLRStartup.cpp b/src/CLR/Startup/CLRStartup.cpp index 78e4d439f1..119eba66ff 100644 --- a/src/CLR/Startup/CLRStartup.cpp +++ b/src/CLR/Startup/CLRStartup.cpp @@ -73,14 +73,14 @@ struct Settings NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); // Get handlers for native functions in assembly - pNativeAssmData = GetAssemblyNativeData(assm->m_szName); + pNativeAssmData = GetAssemblyNativeData(assm->name); // If pNativeAssmData not NULL- means this assembly has native calls and there is pointer to table with native // calls. if (pNativeAssmData != NULL) { // First verify that check sum in assembly object matches hardcoded check sum. - if (assm->m_header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) + if (assm->header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) { CLR_Debug::Printf( "\r\n\r\n***********************************************************************\r\n"); @@ -90,8 +90,8 @@ struct Settings CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf( "* Invalid native checksum: %s 0x%08X!=0x%08X *\r\n", - assm->m_szName, - assm->m_header->nativeMethodsChecksum, + assm->name, + assm->header->nativeMethodsChecksum, pNativeAssmData->m_checkSum); CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf("***********************************************************************\r\n"); @@ -100,7 +100,7 @@ struct Settings } // Assembly has valid pointer to table with native methods. Save it. - assm->m_nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; + assm->nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; } g_CLR_RT_TypeSystem.Link(assm); NANOCLR_NOCLEANUP(); @@ -300,12 +300,12 @@ struct Settings } // load successful, mark as deployed - assm->m_flags |= CLR_RT_Assembly::Deployed; + assm->flags |= CLR_RT_Assembly::Deployed; // if header was malloced, set the flag to request freeing it if (!isXIP) { - assm->m_flags |= CLR_RT_Assembly::FreeOnDestroy; + assm->flags |= CLR_RT_Assembly::FreeOnDestroy; } } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp index 41208d0b4a..58666f9eed 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp @@ -258,9 +258,9 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: // allocate array of byte arrays CLR_RT_ReflectionDef_Index idx; - idx.m_kind = REFLECTION_TYPE; - idx.m_levels = 2; - idx.m_data.m_type.m_data = g_CLR_RT_WellKnownTypes.m_UInt8.m_data; + idx.kind = REFLECTION_TYPE; + idx.levels = 2; + idx.data.type.data = g_CLR_RT_WellKnownTypes.m_UInt8.data; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(hbAddresses, cAddresses, idx)); diff --git a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp index dd83b41712..8f8e311ea3 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp @@ -129,10 +129,10 @@ HRESULT CLR_GFX_Bitmap::CreateInstance( if (bm->m_type == CLR_GFX_BitmapDescription::c_TypeJpeg || bm->m_type == CLR_GFX_BitmapDescription::c_TypeGif) { - if (assm->m_pFile) + if (assm->file) { - unpinAssm = !assm->m_pFile->IsPinned(); - assm->m_pFile->Pin(); + unpinAssm = !assm->file->IsPinned(); + assm->file->Pin(); } NANOCLR_CHECK_HRESULT(CLR_GFX_Bitmap::CreateInstance(ref, data, size, bm->m_type)); @@ -195,7 +195,7 @@ HRESULT CLR_GFX_Bitmap::CreateInstance( if (unpinAssm) { // Unpin the assembly if we pinned it earlier - assm->m_pFile->Unpin(); + assm->file->Unpin(); } NANOCLR_CLEANUP_END(); diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index acb581e75b..485a520b6f 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -83,14 +83,14 @@ struct Settings NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); // Get handlers for native functions in assembly - pNativeAssmData = GetAssemblyNativeData(assm->m_szName); + pNativeAssmData = GetAssemblyNativeData(assm->name); // If pNativeAssmData not NULL- means this assembly has native calls and there is pointer to table with native // calls. if (pNativeAssmData != NULL) { // First verify that check sum in assembly object matches hardcoded check sum. - if (assm->m_header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) + if (assm->header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) { CLR_Debug::Printf( "\r\n\r\n***********************************************************************\r\n"); @@ -100,8 +100,8 @@ struct Settings CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf( "* Invalid native checksum: %s 0x%08X!=0x%08X *\r\n", - assm->m_szName, - assm->m_header->nativeMethodsChecksum, + assm->name, + assm->header->nativeMethodsChecksum, pNativeAssmData->m_checkSum); CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf("***********************************************************************\r\n"); @@ -110,7 +110,7 @@ struct Settings } // Assembly has valid pointer to table with native methods. Save it. - assm->m_nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; + assm->nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; } g_CLR_RT_TypeSystem.Link(assm); NANOCLR_NOCLEANUP(); @@ -294,7 +294,7 @@ struct Settings break; } - assm->m_flags |= CLR_RT_Assembly::Deployed; + assm->flags |= CLR_RT_Assembly::Deployed; } if (!isXIP) CLR_RT_Memory::Release(headerBuffer); @@ -476,7 +476,7 @@ struct Settings break; } - CLR_RT_UnicodeHelper::ConvertFromUTF8(assm->m_szName, strName); + CLR_RT_UnicodeHelper::ConvertFromUTF8(assm->name, strName); m_assemblies[strName] = bufferSub; assm->DestroyInstance(); @@ -504,7 +504,7 @@ struct Settings NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { const CLR_RECORD_ASSEMBLYREF *src = (const CLR_RECORD_ASSEMBLYREF *)pASSM->GetTable(TBL_AssemblyRef); - for (int i = 0; i < pASSM->m_pTablesSize[TBL_AssemblyRef]; i++, src++) + for (int i = 0; i < pASSM->tablesSize[TBL_AssemblyRef]; i++, src++) { const char *szName = pASSM->GetString(src->name); From 69da86f1a442597aae9e3647bec581b686c58e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 17:56:43 +0100 Subject: [PATCH 044/168] Rename define to disambiguate with same define from Espressif IDF --- src/CLR/Core/TypeSystemLookup.cpp | 112 +++++++++++++++--------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index e0f7a882d8..e1ef5495c5 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -26,7 +26,7 @@ #define DT_NUM CLR_RT_DataTypeLookup::c_Numeric #define DT_INT CLR_RT_DataTypeLookup::c_Integer #define DT_SGN CLR_RT_DataTypeLookup::c_Signed -#define DT_DIR CLR_RT_DataTypeLookup::c_Direct +#define DT_DIRCT CLR_RT_DataTypeLookup::c_Direct #define DT_OPT CLR_RT_DataTypeLookup::c_OptimizedValueType #define DT_MT CLR_RT_DataTypeLookup::c_ManagedType @@ -64,78 +64,78 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = //// m_flags, m_sizeInBits, m_sizeInBytes, m_promoteTo, m_convertToElementType, m_cls, m_relocate, m_name //// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID + { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID // - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(m_Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(m_Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(m_UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(m_Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(m_Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(m_UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 // - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(m_Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(m_Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(m_UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(m_Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(m_Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(m_UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(m_Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(m_UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(m_Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(m_Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(m_UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(m_Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(m_Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 - { DT_NUM | DT_INT | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(m_UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIR | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(m_Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 - { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(m_DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME - { DT_INT | DT_SGN | DT_VALUE | DT_DIR | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(m_TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN - { DT_REF | DT_PRIM | DT_DIR | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(m_String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(m_Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(m_UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(m_Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(m_DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(m_TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN + { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(m_String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // - { DT_REF | DT_DIR | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(m_Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT - { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS - { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE - { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(m_Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF - - { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR - { DT_MT | DT_GENER, DT_NA, DT_BL, DT_T(GENERICINST ), DT_CNV(GENERICINST), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(GENERICINST ) }, // DATATYPE_GENERICINST - { DT_MT | DT_MVAR , DT_NA, DT_BL, DT_T(MVAR ), DT_CNV(MVAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(MVAR ) }, // DATATYPE_MVAR - - { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK - { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK - { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY - { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(m_WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS - { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION - { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF - { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), NULL , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT - { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD + { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(m_Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT + { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS + { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE + { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(m_Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF + + { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR + { DT_MT | DT_GENER, DT_NA, DT_BL, DT_T(GENERICINST ), DT_CNV(GENERICINST), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(GENERICINST ) }, // DATATYPE_GENERICINST + { DT_MT | DT_MVAR , DT_NA, DT_BL, DT_T(MVAR ), DT_CNV(MVAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(MVAR ) }, // DATATYPE_MVAR + + { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK + { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK + { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(m_WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS + { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION + { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), NULL , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT + { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD // - { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD - { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD - { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), NULL , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME - { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA + { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD + { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD + { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), NULL , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME + { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA // - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE // - { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD // DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED - { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT + { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT DATATYPE_NOT_SUPPORTED //VTU_PORT #if defined(NANOCLR_APPDOMAINS) - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY #else DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED From 3a6b1b52c12360838fc95eca079c80ef1d342c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 18:03:30 +0100 Subject: [PATCH 045/168] More renames --- src/CLR/Core/TypeSystem.cpp | 4 ++-- src/CLR/Include/nanoCLR_Runtime.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 1cc48750ce..c694635477 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2246,10 +2246,10 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) { - m_pDebuggingInfo_MethodDef = (CLR_RT_MethodDef_DebuggingInfo *)buffer; + debuggingInfoMethodDef = (CLR_RT_MethodDef_DebuggingInfo *)buffer; buffer += offsets.debuggingInfoMethods; - memset(m_pDebuggingInfo_MethodDef, 0, offsets.debuggingInfoMethods); + memset(debuggingInfoMethodDef, 0, offsets.debuggingInfoMethods); } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 31b66f15e3..5082cae80d 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1381,7 +1381,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) CLR_RT_MethodDef_DebuggingInfo - *m_pDebuggingInfo_MethodDef; + *debuggingInfoMethodDef; #endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING #if defined(NANOCLR_TRACE_STACK_HEAVY) && defined(VIRTUAL_DEVICE) From 22a627a95ae7115c871c2936a212cdaae2c59962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 18:16:15 +0100 Subject: [PATCH 046/168] Clean-up declarations for removed legacy functions --- src/CLR/Diagnostics/Diagnostics_stub.cpp | 117 ++++++++++++----------- src/CLR/Diagnostics/Info.cpp | 18 ++-- src/CLR/Include/nanoCLR_Runtime.h | 84 ++++------------ 3 files changed, 88 insertions(+), 131 deletions(-) diff --git a/src/CLR/Diagnostics/Diagnostics_stub.cpp b/src/CLR/Diagnostics/Diagnostics_stub.cpp index dc1d9d48cf..d85a1737f2 100644 --- a/src/CLR/Diagnostics/Diagnostics_stub.cpp +++ b/src/CLR/Diagnostics/Diagnostics_stub.cpp @@ -5,19 +5,18 @@ // #include "Diagnostics.h" - //////////////////////////////////////////////////////////////////////////////////////////////////// #if defined(VIRTUAL_DEVICE) -__nfweak void CLR_Debug::RedirectToString( std::string* str ) +__nfweak void CLR_Debug::RedirectToString(std::string *str) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } #endif -__nfweak HRESULT NANOCLR_DEBUG_PROCESS_EXCEPTION( HRESULT hr, const char* szFunc, const char* szFile, int line ) +__nfweak HRESULT NANOCLR_DEBUG_PROCESS_EXCEPTION(HRESULT hr, const char *szFunc, const char *szFile, int line) { (void)szFunc; (void)szFile; @@ -27,7 +26,7 @@ __nfweak HRESULT NANOCLR_DEBUG_PROCESS_EXCEPTION( HRESULT hr, const char* szFunc return hr; } -__nfweak bool CLR_SafeSprintfV( char*& szBuffer, size_t& iBuffer, const char* format, va_list arg ) +__nfweak bool CLR_SafeSprintfV(char *&szBuffer, size_t &iBuffer, const char *format, va_list arg) { (void)szBuffer; (void)iBuffer; @@ -39,12 +38,12 @@ __nfweak bool CLR_SafeSprintfV( char*& szBuffer, size_t& iBuffer, const char* fo return FALSE; } -__nfweak bool CLR_SafeSprintf( char*& szBuffer, size_t& iBuffer, const char* format, ... ) +__nfweak bool CLR_SafeSprintf(char *&szBuffer, size_t &iBuffer, const char *format, ...) { (void)szBuffer; (void)iBuffer; (void)format; - + NATIVE_PROFILE_CLR_DIAGNOSTICS(); return FALSE; @@ -57,7 +56,7 @@ __nfweak void CLR_Debug::Flush() NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_Debug::Emit( const char *text, int len ) +__nfweak void CLR_Debug::Emit(const char *text, int len) { (void)text; (void)len; @@ -65,7 +64,7 @@ __nfweak void CLR_Debug::Emit( const char *text, int len ) NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak int CLR_Debug::PrintfV( const char *format, va_list arg ) +__nfweak int CLR_Debug::PrintfV(const char *format, va_list arg) { (void)format; (void)arg; @@ -74,7 +73,7 @@ __nfweak int CLR_Debug::PrintfV( const char *format, va_list arg ) return 0; } -__nfweak int CLR_Debug::Printf( const char *format, ... ) +__nfweak int CLR_Debug::Printf(const char *format, ...) { (void)format; @@ -84,7 +83,7 @@ __nfweak int CLR_Debug::Printf( const char *format, ... ) //--// -__nfweak CLR_UINT32 CLR_ReadTokenCompressed( const CLR_UINT8*& ip, CLR_OPCODE opcode ) +__nfweak CLR_UINT32 CLR_ReadTokenCompressed(const CLR_UINT8 *&ip, CLR_OPCODE opcode) { (void)ip; (void)opcode; @@ -93,16 +92,16 @@ __nfweak CLR_UINT32 CLR_ReadTokenCompressed( const CLR_UINT8*& ip, CLR_OPCODE op return 0; } -__nfweak const CLR_UINT8* CLR_SkipBodyOfOpcode( const CLR_UINT8* ip, CLR_OPCODE opcode ) +__nfweak const CLR_UINT8 *CLR_SkipBodyOfOpcode(const CLR_UINT8 *ip, CLR_OPCODE opcode) { (void)ip; (void)opcode; - + NATIVE_PROFILE_CLR_DIAGNOSTICS(); return 0; } -__nfweak const CLR_UINT8* CLR_SkipBodyOfOpcodeCompressed( const CLR_UINT8* ip, CLR_OPCODE opcode ) +__nfweak const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE opcode) { (void)ip; (void)opcode; @@ -113,34 +112,38 @@ __nfweak const CLR_UINT8* CLR_SkipBodyOfOpcodeCompressed( const CLR_UINT8* ip, C #if defined(NANOCLR_TRACE_INSTRUCTIONS) -__nfweak void CLR_RT_Assembly::DumpToken( CLR_UINT32 tk ) +__nfweak void CLR_RT_Assembly::DumpToken(CLR_UINT32 tk) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_Assembly::DumpSignature( CLR_SIG sig ) +__nfweak void CLR_RT_Assembly::DumpSignature(CLR_SIG sig) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_Assembly::DumpSignature( const CLR_UINT8*& p ) +__nfweak void CLR_RT_Assembly::DumpSignature(const CLR_UINT8 *&p) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_Assembly::DumpSignatureToken( const CLR_UINT8*& p ) +__nfweak void CLR_RT_Assembly::DumpSignatureToken(const CLR_UINT8 *&p) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } //--// -__nfweak void CLR_RT_Assembly::DumpOpcode( CLR_RT_StackFrame* stack, CLR_PMETADATA ip ) +__nfweak void CLR_RT_Assembly::DumpOpcode(CLR_RT_StackFrame *stack, CLR_PMETADATA ip) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_Assembly::DumpOpcodeDirect( CLR_RT_MethodDef_Instance& call, CLR_PMETADATA ip, CLR_PMETADATA ipStart, int pid ) +__nfweak void CLR_RT_Assembly::DumpOpcodeDirect( + CLR_RT_MethodDef_Instance &call, + CLR_PMETADATA ip, + CLR_PMETADATA ipStart, + int pid) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } @@ -149,37 +152,37 @@ __nfweak void CLR_RT_Assembly::DumpOpcodeDirect( CLR_RT_MethodDef_Instance& call #if defined(NANOCLR_TRACE_CALLS) -__nfweak void CLR_RT_Assembly::DumpCall( CLR_RT_StackFrame& stack, bool fPush ) +__nfweak void CLR_RT_Assembly::DumpCall(CLR_RT_StackFrame &stack, bool fPush) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_Assembly::DumpCall( CLR_RT_MethodDef_Instance& md, const char* szPrefix ) +__nfweak void CLR_RT_Assembly::DumpCall(CLR_RT_MethodDef_Instance &md, const char *szPrefix) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -#endif +#endif /////////////////////////////////////////////////////////////////////////////////////////////////// #if defined(NANOCLR_TRACE_ERRORS) -__nfweak void CLR_RT_DUMP::TYPE( const CLR_RT_TypeDef_Index& cls ) +__nfweak void CLR_RT_DUMP::TYPE(const CLR_RT_TypeDef_Index &cls) { (void)cls; - + NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::TYPE( const CLR_RT_ReflectionDef_Index& reflex ) +__nfweak void CLR_RT_DUMP::TYPE(const CLR_RT_ReflectionDef_Index &reflex) { (void)reflex; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index& method, const CLR_RT_TypeSpec_Index *genericType) +__nfweak void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index &method, const CLR_RT_TypeSpec_Index *genericType) { (void)method; (void)genericType; @@ -187,14 +190,14 @@ __nfweak void CLR_RT_DUMP::METHOD(const CLR_RT_MethodDef_Index& method, const CL NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::FIELD( const CLR_RT_FieldDef_Index& field ) +__nfweak void CLR_RT_DUMP::FIELD(const CLR_RT_FieldDef_Index &field) { (void)field; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::OBJECT( CLR_RT_HeapBlock* ptr, const char* text ) +__nfweak void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) { (void)ptr; (void)text; @@ -208,7 +211,7 @@ __nfweak void CLR_RT_DUMP::OBJECT( CLR_RT_HeapBlock* ptr, const char* text ) #if defined(NANOCLR_TRACE_EXCEPTIONS) -__nfweak void CLR_RT_DUMP::EXCEPTION( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock& ref ) +__nfweak void CLR_RT_DUMP::EXCEPTION(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock &ref) { (void)stack; (void)ref; @@ -216,18 +219,18 @@ __nfweak void CLR_RT_DUMP::EXCEPTION( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_RT_DUMP::POST_PROCESS_EXCEPTION( CLR_RT_HeapBlock& ref ) +__nfweak void CLR_RT_DUMP::POST_PROCESS_EXCEPTION(CLR_RT_HeapBlock &ref) { (void)ref; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -#endif +#endif //--// -__nfweak const char* CLR_RT_DUMP::GETERRORMESSAGE( HRESULT hrError ) +__nfweak const char *CLR_RT_DUMP::GETERRORMESSAGE(HRESULT hrError) { (void)hrError; @@ -239,7 +242,7 @@ __nfweak const char* CLR_RT_DUMP::GETERRORMESSAGE( HRESULT hrError ) #if defined(NANOCLR_PROFILE_NEW_CALLS) -__nfweak void* CLR_PROF_CounterCallChain::Prepare( CLR_PROF_Handler* handler ) +__nfweak void *CLR_PROF_CounterCallChain::Prepare(CLR_PROF_Handler *handler) { (void)handler; @@ -247,7 +250,7 @@ __nfweak void* CLR_PROF_CounterCallChain::Prepare( CLR_PROF_Handler* handler ) return NULL; } -__nfweak void CLR_PROF_CounterCallChain::Complete( CLR_UINT64& t, CLR_PROF_Handler* handler ) +__nfweak void CLR_PROF_CounterCallChain::Complete(CLR_UINT64 &t, CLR_PROF_Handler *handler) { (void)t; (void)handler; @@ -255,7 +258,7 @@ __nfweak void CLR_PROF_CounterCallChain::Complete( CLR_UINT64& t, CLR_PROF_Handl NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PROF_CounterCallChain::Enter( CLR_RT_StackFrame* stack ) +__nfweak void CLR_PROF_CounterCallChain::Enter(CLR_RT_StackFrame *stack) { (void)stack; @@ -278,7 +281,7 @@ __nfweak void CLR_PROF_Handler::Constructor() } #if defined(NANOCLR_PROFILE_NEW_CALLS) -__nfweak void CLR_PROF_Handler::Constructor( CLR_PROF_CounterCallChain& target ) +__nfweak void CLR_PROF_Handler::Constructor(CLR_PROF_CounterCallChain &target) { (void)target; @@ -291,15 +294,13 @@ __nfweak void CLR_PROF_Handler::Destructor() NATIVE_PROFILE_CLR_DIAGNOSTICS(); } - -__nfweak void CLR_PROF_Handler::Init( void* target ) +__nfweak void CLR_PROF_Handler::Init(void *target) { (void)target; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } - //--// __nfweak void CLR_PROF_Handler::Calibrate() @@ -324,7 +325,7 @@ __nfweak CLR_UINT64 CLR_PROF_Handler::ResumeTime() return 0; } -__nfweak CLR_UINT64 CLR_PROF_Handler::ResumeTime( CLR_INT64 t ) +__nfweak CLR_UINT64 CLR_PROF_Handler::ResumeTime(CLR_INT64 t) { (void)t; @@ -332,7 +333,7 @@ __nfweak CLR_UINT64 CLR_PROF_Handler::ResumeTime( CLR_INT64 t ) return 0; } -#endif //#if defined(NANOCLR_PROFILE_HANDLER) +#endif // #if defined(NANOCLR_PROFILE_HANDLER) //////////////////////////////////////////////////////////////////////////////// @@ -377,7 +378,11 @@ __nfweak HRESULT CLR_PRF_Profiler::DumpRoots() return S_OK; } -__nfweak void CLR_PRF_Profiler::DumpRoot(CLR_RT_HeapBlock* root, CLR_UINT32 type, CLR_UINT32 flags, CLR_RT_MethodDef_Index* source) +__nfweak void CLR_PRF_Profiler::DumpRoot( + CLR_RT_HeapBlock *root, + CLR_UINT32 type, + CLR_UINT32 flags, + CLR_RT_MethodDef_Index *source) { (void)root; (void)type; @@ -387,14 +392,14 @@ __nfweak void CLR_PRF_Profiler::DumpRoot(CLR_RT_HeapBlock* root, CLR_UINT32 type NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock* ptr) +__nfweak void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) { (void)ptr; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak CLR_RT_HeapBlock* CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlock* ref) +__nfweak CLR_RT_HeapBlock *CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlock *ref) { (void)ref; @@ -407,21 +412,21 @@ __nfweak void CLR_PRF_Profiler::DumpEndOfRefsList() NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::DumpPointer(void* ptr) +__nfweak void CLR_PRF_Profiler::DumpPointer(void *ptr) { (void)ptr; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock* ptr) +__nfweak void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock *ptr) { (void)ptr; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_HeapBlock* firstItem, CLR_UINT16 count) +__nfweak void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_HeapBlock *firstItem, CLR_UINT16 count) { (void)firstItem; (void)count; @@ -429,7 +434,7 @@ __nfweak void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_HeapBlock* firstItem NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_DblLinkedList& list) +__nfweak void CLR_PRF_Profiler::DumpListOfReferences(CLR_RT_DblLinkedList &list) { (void)list; @@ -445,7 +450,7 @@ __nfweak void CLR_PRF_Profiler::Timestamp() //--// -__nfweak HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread* nextThread) +__nfweak HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread *nextThread) { (void)nextThread; @@ -453,7 +458,7 @@ __nfweak HRESULT CLR_PRF_Profiler::RecordContextSwitch(CLR_RT_Thread* nextThread return S_OK; } -__nfweak HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread* th, CLR_RT_MethodDef_Index md) +__nfweak HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread *th, CLR_RT_MethodDef_Index md) { (void)th; (void)md; @@ -462,7 +467,7 @@ __nfweak HRESULT CLR_PRF_Profiler::RecordFunctionCall(CLR_RT_Thread* th, CLR_RT_ return S_OK; } -__nfweak HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread* th, CLR_PROF_CounterCallChain& prof) +__nfweak HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread *th, CLR_PROF_CounterCallChain &prof) { (void)th; (void)prof; @@ -473,14 +478,14 @@ __nfweak HRESULT CLR_PRF_Profiler::RecordFunctionReturn(CLR_RT_Thread* th, CLR_P //--// -__nfweak void CLR_PRF_Profiler::TrackObjectCreation( CLR_RT_HeapBlock* ptr ) +__nfweak void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) { (void)ptr; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::TrackObjectDeletion( CLR_RT_HeapBlock* ptr ) +__nfweak void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) { (void)ptr; @@ -531,14 +536,14 @@ __nfweak void CLR_PRF_Profiler::PackAndWriteBits(CLR_UINT32 value) NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_TypeDef_Index& typeDef) +__nfweak void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_TypeDef_Index &typeDef) { (void)typeDef; NATIVE_PROFILE_CLR_DIAGNOSTICS(); } -__nfweak void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_MethodDef_Index& methodDef) +__nfweak void CLR_PRF_Profiler::PackAndWriteBits(const CLR_RT_MethodDef_Index &methodDef) { (void)methodDef; @@ -559,4 +564,4 @@ __nfweak HRESULT CLR_PRF_Profiler::Stream_Flush() return S_OK; } -#endif //#if defined(NANOCLR_PROFILE_NEW) +#endif // #if defined(NANOCLR_PROFILE_NEW) diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index d412b04d52..85235c4570 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -442,14 +442,14 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE //////////////////////////////////////////////////////////////////////////////////////////////////// #define LOOKUP_ELEMENT(idx, tblName, tblNameUC) const CLR_RECORD_##tblNameUC *p = Get##tblName(idx) -#define LOOKUP_ELEMENT_REF(idx, tblName, tblNameUC, tblName2) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ - const CLR_RT_##tblName2##_Index *s = &crossReference##tblName[idx].target; \ - if (s->data == 0) \ +#define LOOKUP_ELEMENT_REF(idx, tblName, tblNameUC, tblName2) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ + const CLR_RT_##tblName2##_Index *s = &crossReference##tblName[idx].target; \ + if (s->data == 0) \ s = NULL -#define LOOKUP_ELEMENT_IDX(idx, tblName, tblNameUC) \ - const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ +#define LOOKUP_ELEMENT_IDX(idx, tblName, tblNameUC) \ + const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ CLR_RT_##tblName##_Index s; \ s.Set(assemblyIndex, idx) @@ -896,7 +896,7 @@ void CLR_RT_DUMP::METHODREF(const CLR_RT_MethodRef_Index &method) NATIVE_PROFILE_CLR_DIAGNOSTICS(); char rgBuffer[512]; - char* szBuffer = rgBuffer; + char *szBuffer = rgBuffer; size_t iBuffer = MAXSTRLEN(rgBuffer); g_CLR_RT_TypeSystem.BuildMethodRefName(method, szBuffer, iBuffer); @@ -904,12 +904,12 @@ void CLR_RT_DUMP::METHODREF(const CLR_RT_MethodRef_Index &method) CLR_Debug::Printf("%s", rgBuffer); } -void CLR_RT_DUMP::METHODSPEC(const CLR_RT_MethodSpec_Index& method) +void CLR_RT_DUMP::METHODSPEC(const CLR_RT_MethodSpec_Index &method) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); char rgBuffer[512]; - char* szBuffer = rgBuffer; + char *szBuffer = rgBuffer; size_t iBuffer = MAXSTRLEN(rgBuffer); g_CLR_RT_TypeSystem.BuildMethodSpecName(method, szBuffer, iBuffer); diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 5082cae80d..cffd9ca360 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -835,7 +835,7 @@ struct CLR_RT_GenericParam_Index struct CLR_RT_ReflectionDef_Index { // CLR_ReflectionType - CLR_UINT16 kind; + CLR_UINT16 kind; CLR_UINT16 levels; union { @@ -1331,7 +1331,7 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT // ANY HEAP - DO RELOCATION - const CLR_RECORD_ASSEMBLY *header; // ANY HEAP - DO RELOCATION - - const char *name; + const char *name; const CLR_RT_MethodHandler *nativeCode; @@ -1339,50 +1339,39 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT #if !defined(NANOCLR_APPDOMAINS) // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_HeapBlock *staticFields; + CLR_RT_HeapBlock *staticFields; #endif int staticFieldsCount; // ANY HEAP - DO RELOCATION - - CLR_RT_HeapBlock_Array *file; + CLR_RT_HeapBlock_Array *file; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_AssemblyRef_CrossReference - *crossReferenceAssemblyRef; + CLR_RT_AssemblyRef_CrossReference *crossReferenceAssemblyRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_TypeRef_CrossReference - *crossReferenceTypeRef; + CLR_RT_TypeRef_CrossReference *crossReferenceTypeRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_FieldRef_CrossReference - *crossReferenceFieldRef; + CLR_RT_FieldRef_CrossReference *crossReferenceFieldRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_MethodRef_CrossReference - *crossReferenceMethodRef; + CLR_RT_MethodRef_CrossReference *crossReferenceMethodRef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_TypeDef_CrossReference - *crossReferenceTypeDef; + CLR_RT_TypeDef_CrossReference *crossReferenceTypeDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_FieldDef_CrossReference - *crossReferenceFieldDef; + CLR_RT_FieldDef_CrossReference *crossReferenceFieldDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_MethodDef_CrossReference - *crossReferenceMethodDef; + CLR_RT_MethodDef_CrossReference *crossReferenceMethodDef; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_GenericParam_CrossReference * - crossReferenceGenericParam; + CLR_RT_GenericParam_CrossReference *crossReferenceGenericParam; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_MethodSpec_CrossReference - *crossReferenceMethodSpec; + CLR_RT_MethodSpec_CrossReference *crossReferenceMethodSpec; // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_TypeSpec_CrossReference - *crossReferenceTypeSpec; + CLR_RT_TypeSpec_CrossReference *crossReferenceTypeSpec; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // EVENT HEAP - NO RELOCATION - (but the data they point to has to be relocated) - CLR_RT_MethodDef_DebuggingInfo - *debuggingInfoMethodDef; -#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING + CLR_RT_MethodDef_DebuggingInfo *debuggingInfoMethodDef; +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING #if defined(NANOCLR_TRACE_STACK_HEAVY) && defined(VIRTUAL_DEVICE) int maxOpcodes; @@ -1587,44 +1576,8 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT #if defined(VIRTUAL_DEVICE) static FILE *s_output; static FILE *s_toclose; +#endif // VIRTUAL_DEVICE - public: - static void DumpSetDevice(FILE *&outputDeviceFile, const wchar_t *szFileName); - static void DumpSetDevice(const wchar_t *szFileName); - - static void DumpCloseDevice(FILE *&outputDeviceFile); - static void DumpCloseDevice(); - - static void DumpPrintf(FILE *outputDeviceFile, const char *format, ...); - static void DumpPrintf(const char *format, ...); - - static void DumpIndent(const CLR_RECORD_METHODDEF *md, size_t offset, size_t level); - - void Dump(bool fNoByteCode); - - unsigned int GenerateSignatureForNativeMethods(); - - bool AreInternalMethodsPresent(const CLR_RECORD_TYPEDEF *td); - void GenerateSkeleton(const wchar_t *szFileName, const wchar_t *szProjectName); - void GenerateSkeletonFromComplientNames(const wchar_t *szFileName, const wchar_t *szProjectName); - - void BuildParametersList(CLR_PMETADATA pMetaData, CLR_RT_VectorOfManagedElements &elemPtrArray); - void GenerateSkeletonStubFieldsDef( - const CLR_RECORD_TYPEDEF *pClsType, - FILE *pFileStubHead, - std::string strIndent, - std::string strMngClassName); - void GenerateSkeletonStubCode(const wchar_t *szFilePath, FILE *pFileDotNetProj); - - void BuildMethodName_NoInterop(const CLR_RECORD_METHODDEF *md, std::string &name, CLR_RT_StringMap &mapMethods); - void GenerateSkeleton_NoInterop(LPCWSTR szFileName, LPCWSTR szProjectName); - - void BuildMethodName(const CLR_RECORD_METHODDEF *md, std::string &name, CLR_RT_StringMap &mapMethods); - void BuildClassName(const CLR_RECORD_TYPEREF *tr, std::string &cls_name, bool fEscape); - void BuildClassName(const CLR_RECORD_TYPEDEF *td, std::string &cls_name, bool fEscape); - void BuildTypeName(const CLR_RECORD_TYPEDEF *td, std::string &type_name); - -#endif //--// PROHIBIT_ALL_CONSTRUCTORS(CLR_RT_Assembly); @@ -1633,7 +1586,6 @@ struct CLR_RT_Assembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOCAT private: CLR_UINT32 ComputeHashForName(const CLR_RT_TypeDef_Index &td, CLR_UINT32 hash); - static CLR_UINT32 ComputeHashForType(NanoCLRDataType dt, CLR_UINT32 hash); }; @@ -2227,7 +2179,7 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_RT_MethodDef_DebuggingInfo &DebuggingInfo() const { - return assembly->m_pDebuggingInfo_MethodDef[Method()]; + return assembly->debuggingInfoMethodDef[Method()]; } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) }; From 54d2ec8511710670cd5bf7735830ccf80dd60003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 29 Mar 2023 18:40:01 +0100 Subject: [PATCH 047/168] Rename of CLR_RT_WellKnownTypes --- .../CorLib/corlib_native_System_AppDomain.cpp | 4 +- .../corlib_native_System_BitConverter.cpp | 20 +- .../CorLib/corlib_native_System_Convert.cpp | 4 +- .../CorLib/corlib_native_System_DateTime.cpp | 6 +- .../CorLib/corlib_native_System_Delegate.cpp | 8 +- .../CorLib/corlib_native_System_Exception.cpp | 42 +-- src/CLR/CorLib/corlib_native_System_Guid.cpp | 2 +- .../CorLib/corlib_native_System_Object.cpp | 2 +- ...rlib_native_System_Reflection_Assembly.cpp | 14 +- ...lib_native_System_Reflection_FieldInfo.cpp | 2 +- ...ib_native_System_Reflection_MethodBase.cpp | 4 +- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 4 +- ...ve_System_Reflection_RuntimeMethodInfo.cpp | 4 +- .../corlib_native_System_RuntimeType.cpp | 18 +- .../CorLib/corlib_native_System_String.cpp | 8 +- .../corlib_native_System_Threading_Thread.cpp | 2 +- .../CorLib/corlib_native_System_TimeSpan.cpp | 2 +- src/CLR/CorLib/corlib_native_System_Type.cpp | 22 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp | 2 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 2 +- src/CLR/Core/Execution.cpp | 20 +- src/CLR/Core/Interpreter.cpp | 2 +- .../Core/Serialization/BinaryFormatter.cpp | 28 +- src/CLR/Core/Streams.cpp | 2 +- src/CLR/Core/Thread.cpp | 4 +- src/CLR/Core/TypeSystem.cpp | 248 ++++++++-------- src/CLR/Core/TypeSystemLookup.cpp | 48 ++-- src/CLR/Core/Various.cpp | 2 +- src/CLR/Debugger/Debugger.cpp | 6 +- src/CLR/Include/nanoCLR_Runtime.h | 157 +++++----- ...et_NetworkInformation_NetworkInterface.cpp | 6 +- ...Information_Wireless80211Configuration.cpp | 84 ++++-- ...orkInformation_WirelessAPConfiguration.cpp | 267 ++++++++++-------- ...t_native_System_Net_Security_SslNative.cpp | 2 +- ...native_System_Net_Sockets_NativeSocket.cpp | 6 +- ...ework_Graphics_nanoFramework_UI_Bitmap.cpp | 2 +- ...s_nanoFramework_UI_TouchEventProcessor.cpp | 6 +- ...nager_System_Resources_ResourceManager.cpp | 10 +- ...f_system_text_System_Text_UTF8Encoding.cpp | 4 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 3 +- ..._native_System_Device_Wifi_WifiAdapter.cpp | 4 +- ..._sys_io_filesystem_System_IO_Directory.cpp | 8 +- .../nf_sys_io_filesystem_System_IO_File.cpp | 2 +- ..._storage_native_Windows_Storage_FileIO.cpp | 2 +- 48 files changed, 579 insertions(+), 524 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp index 6ea80c6b21..c529ba3dc8 100644 --- a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp +++ b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp @@ -276,7 +276,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe index.Set(pASSM->assemblyIndex); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_Assembly)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = pArray->Dereference(); hbObj->SetReflection(index); @@ -289,7 +289,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe if (pass == 0) { NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.m_Assembly)); + CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.Assembly)); pArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); } diff --git a/src/CLR/CorLib/corlib_native_System_BitConverter.cpp b/src/CLR/CorLib/corlib_native_System_BitConverter.cpp index 0dc00004e6..4e1c519c73 100644 --- a/src/CLR/CorLib/corlib_native_System_BitConverter.cpp +++ b/src/CLR/CorLib/corlib_native_System_BitConverter.cpp @@ -63,7 +63,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 bool input = stack.Arg0().NumericByRefConst().u1 != 0; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 1, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 1, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -79,7 +79,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 wchar_t input = stack.Arg0().NumericByRefConst().u2; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -99,7 +99,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 #endif NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) @@ -123,7 +123,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 #endif NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) @@ -143,7 +143,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 int input = stack.Arg0().NumericByRefConst().s4; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -159,7 +159,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 __int64 input = stack.Arg0().NumericByRefConst().s8; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast<__int64 *>(p) = input; @@ -175,7 +175,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 short input = stack.Arg0().NumericByRefConst().s2; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -191,7 +191,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 unsigned int input = stack.Arg0().NumericByRefConst().u4; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 4, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -207,7 +207,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 unsigned __int64 input = stack.Arg0().NumericByRefConst().u8; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; @@ -223,7 +223,7 @@ HRESULT Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1 unsigned short input = stack.Arg0().NumericByRefConst().u2; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 2, g_CLR_RT_WellKnownTypes.UInt8)); { unsigned char *p = stack.TopValue().DereferenceArray()->GetFirstElement(); *reinterpret_cast(p) = input; diff --git a/src/CLR/CorLib/corlib_native_System_Convert.cpp b/src/CLR/CorLib/corlib_native_System_Convert.cpp index 8b5fe57b71..cbcfc93f6b 100644 --- a/src/CLR/CorLib/corlib_native_System_Convert.cpp +++ b/src/CLR/CorLib/corlib_native_System_Convert.cpp @@ -540,7 +540,7 @@ HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemD FAULT_ON_NULL_ARG(str); // initialize type descriptor - NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.m_DateTime)); + NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime)); // create an instance of NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls)); @@ -765,7 +765,7 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( stack.PushValueAndClear(), outputLength, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); // get a pointer to the array in the heap block array just created returnArray = stack.TopValue().DereferenceArray()->GetFirstElement(); diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index dabb05ce62..4bf01564fb 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -168,7 +168,7 @@ HRESULT Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTi CLR_RT_HeapBlock& ref = stack.PushValue(); // initialize type descriptor - NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.m_DateTime ) ); + NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.DateTime ) ); // create an instance of NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObject( ref, dtType.m_handlerCls ) ); @@ -193,7 +193,7 @@ HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTim CLR_RT_HeapBlock& ref = stack.PushValue(); // initialize type descriptor - NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.m_DateTime ) ); + NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.DateTime ) ); // create an instance of NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObject( ref, dtType.m_handlerCls ) ); @@ -245,7 +245,7 @@ CLR_INT64* Library_corlib_native_System_DateTime::GetValuePtr( CLR_RT_HeapBlock& return (CLR_INT64*)&obj->NumericByRef().s8; } - if(dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.m_DateTime.data) + if(dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.DateTime.data) { return (CLR_INT64*)&obj[ FIELD___ticks ].NumericByRef().s8; } diff --git a/src/CLR/CorLib/corlib_native_System_Delegate.cpp b/src/CLR/CorLib/corlib_native_System_Delegate.cpp index d27dc4e3b6..cab108d937 100644 --- a/src/CLR/CorLib/corlib_native_System_Delegate.cpp +++ b/src/CLR/CorLib/corlib_native_System_Delegate.cpp @@ -41,7 +41,7 @@ HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_Syste } // create the result array - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, delegatesCount, g_CLR_RT_WellKnownTypes.m_Delegate)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, delegatesCount, g_CLR_RT_WellKnownTypes.Delegate)); if (delegatesCount > 0) { @@ -54,7 +54,7 @@ HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_Syste for (int i = 0; i < delegatesCount; i++) { // create an instance of delegate - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.m_Delegate)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); //fetch delegate from list dlg = ptr[i].DereferenceDelegate(); @@ -65,7 +65,7 @@ HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_Syste } } else { // create an instance of delegate - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.m_Delegate)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); //set delegate reference to return element returnArray->SetObjectReference(dlg); } @@ -87,7 +87,7 @@ HRESULT Library_corlib_native_System_Delegate::get_Method___SystemReflectionMeth CLR_RT_HeapBlock& top = stack.PushValue(); CLR_RT_HeapBlock* hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_MethodInfo)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.MethodInfo)); hbObj = top.Dereference(); hbObj->SetReflection( dlg->DelegateFtn() ); diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index bb2841964e..d3c01a5007 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -16,21 +16,21 @@ static const ExceptionLookup c_ExceptionLookup[] = { { \ hr, &g_CLR_RT_WellKnownTypes.fld \ } - EL(CLR_E_APPDOMAIN_EXITED, m_AppDomainUnloadedException), - EL(CLR_E_INVALID_PARAMETER, m_ArgumentException), - EL(CLR_E_ARGUMENT_NULL, m_ArgumentNullException), - EL(CLR_E_OUT_OF_RANGE, m_ArgumentOutOfRangeException), - EL(CLR_E_INDEX_OUT_OF_RANGE, m_IndexOutOfRangeException), - EL(CLR_E_INVALID_CAST, m_InvalidCastException), - EL(CLR_E_FORMAT_EXCEPTION, m_FormatException), - EL(CLR_E_INVALID_OPERATION, m_InvalidOperationException), - EL(CLR_E_NOT_SUPPORTED, m_NotSupportedException), - EL(CLR_E_NOTIMPL, m_NotImplementedException), - EL(CLR_E_NULL_REFERENCE, m_NullReferenceException), - EL(CLR_E_OUT_OF_MEMORY, m_OutOfMemoryException), - EL(CLR_E_TIMEOUT, m_TimeoutException), - EL(CLR_E_OBJECT_DISPOSED, m_ObjectDisposedException), - EL(CLR_E_WATCHDOG_TIMEOUT, m_WatchdogException), + EL(CLR_E_APPDOMAIN_EXITED, AppDomainUnloadedException), + EL(CLR_E_INVALID_PARAMETER, ArgumentException), + EL(CLR_E_ARGUMENT_NULL, ArgumentNullException), + EL(CLR_E_OUT_OF_RANGE, ArgumentOutOfRangeException), + EL(CLR_E_INDEX_OUT_OF_RANGE, IndexOutOfRangeException), + EL(CLR_E_INVALID_CAST, InvalidCastException), + EL(CLR_E_FORMAT_EXCEPTION, FormatException), + EL(CLR_E_INVALID_OPERATION, InvalidOperationException), + EL(CLR_E_NOT_SUPPORTED, NotSupportedException), + EL(CLR_E_NOTIMPL, NotImplementedException), + EL(CLR_E_NULL_REFERENCE, NullReferenceException), + EL(CLR_E_OUT_OF_MEMORY, OutOfMemoryException), + EL(CLR_E_TIMEOUT, TimeoutException), + EL(CLR_E_OBJECT_DISPOSED, ObjectDisposedException), + EL(CLR_E_WATCHDOG_TIMEOUT, WatchdogException), #undef EL }; @@ -67,7 +67,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S if (depth == 0) NANOCLR_SET_AND_LEAVE(stack.SetResult_String(NULL)); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmpArray, depth, g_CLR_RT_WellKnownTypes.m_String)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmpArray, depth, g_CLR_RT_WellKnownTypes.String)); pStackTrace = (StackTrace *)pArray->GetFirstElement(); pBlkString = (CLR_RT_HeapBlock *)tmpArray.DereferenceArray()->GetFirstElement(); @@ -118,7 +118,7 @@ HRESULT Library_corlib_native_System_Exception::CreateInstance( CLR_RT_HeapBlock *obj; - _ASSERTE(CLR_RT_ExecutionEngine::IsInstanceOf(cls, g_CLR_RT_WellKnownTypes.m_Exception)); + _ASSERTE(CLR_RT_ExecutionEngine::IsInstanceOf(cls, g_CLR_RT_WellKnownTypes.Exception)); if (FAILED(hr = g_CLR_RT_ExecutionEngine.NewObjectFromIndex(ref, cls))) { @@ -154,7 +154,7 @@ HRESULT Library_corlib_native_System_Exception::CreateInstance( CLR_RT_StackFrame *stack) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_TypeDef_Index *cls = &g_CLR_RT_WellKnownTypes.m_Exception; + CLR_RT_TypeDef_Index *cls = &g_CLR_RT_WellKnownTypes.Exception; _ASSERTE(FAILED(hrIn)); @@ -182,7 +182,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & StackTrace *dst; CLR_UINT32 depth; - if (CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.m_Exception) == false) + if (CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.Exception) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); //--// @@ -201,7 +201,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( obj[FIELD___stackTrace], depth * sizeof(StackTrace), - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); //--// @@ -233,7 +233,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & CLR_RT_HeapBlock *Library_corlib_native_System_Exception::GetTarget(CLR_RT_HeapBlock &ref) { NATIVE_PROFILE_CLR_CORE(); - return CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.m_Exception) ? ref.Dereference() : NULL; + return CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.Exception) ? ref.Dereference() : NULL; } Library_corlib_native_System_Exception::StackTrace *Library_corlib_native_System_Exception::GetStackTrace( diff --git a/src/CLR/CorLib/corlib_native_System_Guid.cpp b/src/CLR/CorLib/corlib_native_System_Guid.cpp index cac42f7c49..2a3d2bb587 100644 --- a/src/CLR/CorLib/corlib_native_System_Guid.cpp +++ b/src/CLR/CorLib/corlib_native_System_Guid.cpp @@ -21,7 +21,7 @@ HRESULT Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1( CLR_RT_HeapBlock& top = stack.PushValueAndClear(); // Create a array of 16 bytes on top of stack to return - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, 16, g_CLR_RT_WellKnownTypes.m_UInt8 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, 16, g_CLR_RT_WellKnownTypes.UInt8 )); buf = top.DereferenceArray()->GetFirstElement(); rand.Initialize(); diff --git a/src/CLR/CorLib/corlib_native_System_Object.cpp b/src/CLR/CorLib/corlib_native_System_Object.cpp index e7a4e5bbb7..bc2489d415 100644 --- a/src/CLR/CorLib/corlib_native_System_Object.cpp +++ b/src/CLR/CorLib/corlib_native_System_Object.cpp @@ -58,7 +58,7 @@ HRESULT Library_corlib_native_System_Object::GetType___SystemType(CLR_RT_StackFr CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(index); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 4e690b6d82..a232452f62 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -64,7 +64,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__ if (g_CLR_RT_TypeSystem.FindTypeDef(szClass, assm.assembly, td)) { NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*hbRef, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*hbRef, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = hbRef->Dereference(); hbObj->SetReflection(td); @@ -89,7 +89,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, num, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, num, g_CLR_RT_WellKnownTypes.TypeStatic)); if (num) { @@ -101,7 +101,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys index.Set(pASSM->assemblyIndex, i); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = pArray->Dereference(); hbObj->SetReflection(index); @@ -159,7 +159,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( result, pAssm->tablesSize[TBL_ResourcesFiles], - g_CLR_RT_WellKnownTypes.m_String)); + g_CLR_RT_WellKnownTypes.String)); { CLR_RT_HeapBlock *pArray = (CLR_RT_HeapBlock *)result.Array()->GetFirstElement(); @@ -197,7 +197,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetExecutingAssembly__ CLR_RT_Assembly_Index index; index.Set(caller->MethodCall().assembly->assemblyIndex); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = top.Dereference(); hbObj->SetReflection(index); @@ -260,7 +260,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: #endif index.Set(assembly->assemblyIndex); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = top.Dereference(); hbObj->SetReflection(index); @@ -373,7 +373,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR stack.PopValue(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), g_CLR_RT_WellKnownTypes.m_Assembly)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), g_CLR_RT_WellKnownTypes.Assembly)); hbObj = stack.TopValue().Dereference(); hbObj->SetReflection(assemblyIndex); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index b4ba19b52d..644f970900 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -160,7 +160,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa // create the result array // (2 positions for each attribute) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.Object )); // use this to skip to the 2nd pass if no attribute was found if (count == 0) diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 7efe0a6a33..3804573a8b 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -38,7 +38,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::get_DeclaringType___ CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(cls); @@ -252,7 +252,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ // create a new instance of the parameter type NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(paraTypeHB, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(paraTypeHB, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = paraTypeHB.Dereference(); hbObj->SetReflection(paramElement.Class); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index 7cde43f7fc..20fac927bb 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -36,7 +36,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_DeclaringT CLR_RT_HeapBlock& top = stack.PushValue(); CLR_RT_HeapBlock* hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection( cls ); @@ -62,7 +62,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_FieldType_ CLR_RT_HeapBlock& top = stack.PushValue(); CLR_RT_HeapBlock* hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection( desc.m_handlerCls ); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp index 7f6a499b2b..345dd4d7fe 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp @@ -26,7 +26,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnTyp CLR_RT_HeapBlock& top = stack.PushValue(); CLR_RT_HeapBlock* hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection( desc.m_reflex ); } @@ -74,7 +74,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr // create the result array // (2 positions for each attribute) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.Object )); // use this to skip to the 2nd pass if no attribute was found if (count == 0) diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index 443ad055d3..f7e4c1c7dc 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -21,7 +21,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_Assembly___SystemReflectio CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = top.Dereference(); hbObj->SetReflection(index); } @@ -67,15 +67,15 @@ HRESULT Library_corlib_native_System_RuntimeType::get_BaseType___SystemType(CLR_ { CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); - hbObj->SetReflection(g_CLR_RT_WellKnownTypes.m_Array); + hbObj->SetReflection(g_CLR_RT_WellKnownTypes.Array); } else if (td.SwitchToParent()) { CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(td); } @@ -146,7 +146,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System NANOCLR_CHECK_HRESULT(parser.Advance(res)); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*ptr, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*ptr, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = ptr->Dereference(); hbObj->SetReflection(res.Class); @@ -166,7 +166,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System { // create the result array NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.TypeStatic)); // don't need the second pass if nothing found if (count == 0) break; @@ -194,7 +194,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetElementType___SystemType(CL { CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(descSub.m_reflex); } @@ -226,7 +226,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetTypeDescriptor( if (levels > 0) { - inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_Array); + inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.Array); } NANOCLR_NOCLEANUP(); @@ -299,7 +299,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributesNative___SZ // create the result array // (2 positions for each attribute) NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, (count * 2), g_CLR_RT_WellKnownTypes.m_Object)); + CLR_RT_HeapBlock_Array::CreateInstance(top, (count * 2), g_CLR_RT_WellKnownTypes.Object)); // use this to skip the 2nd pass if no attribute was found if (count == 0) diff --git a/src/CLR/CorLib/corlib_native_System_String.cpp b/src/CLR/CorLib/corlib_native_System_String.cpp index 8d30079738..b501180260 100644 --- a/src/CLR/CorLib/corlib_native_System_String.cpp +++ b/src/CLR/CorLib/corlib_native_System_String.cpp @@ -215,7 +215,7 @@ HRESULT Library_corlib_native_System_String::_ctor___VOID__CHAR__I4( CLR_RT_Stac CLR_RT_HeapBlock tmp; tmp.SetObjectReference( NULL ); CLR_RT_ProtectFromGC gc( tmp ); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( tmp, len, g_CLR_RT_WellKnownTypes.m_Char )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( tmp, len, g_CLR_RT_WellKnownTypes.Char )); { CLR_RT_HeapBlock_Array* tmpArray = tmp.DereferenceArray(); @@ -993,7 +993,7 @@ HRESULT Library_corlib_native_System_String::Split( CLR_RT_StackFrame& stack, CL { CLR_RT_HeapBlock& refTarget = stack.PushValue(); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( refTarget, 0, g_CLR_RT_WellKnownTypes.m_String )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( refTarget, 0, g_CLR_RT_WellKnownTypes.String )); arrayDst = refTarget.DereferenceArray(); } @@ -1072,7 +1072,7 @@ HRESULT Library_corlib_native_System_String::Split( CLR_RT_StackFrame& stack, CL { CLR_RT_HeapBlock& refTarget = stack.PushValue(); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( refTarget, count, g_CLR_RT_WellKnownTypes.m_String )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( refTarget, count, g_CLR_RT_WellKnownTypes.String )); arrayDst = refTarget.DereferenceArray(); } @@ -1159,7 +1159,7 @@ HRESULT Library_corlib_native_System_String::ConvertToCharArray( const char* szT if(CLR_RT_HeapBlock_Array::CheckRange( startIndex, length, totLength ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, length, g_CLR_RT_WellKnownTypes.m_Char )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, length, g_CLR_RT_WellKnownTypes.Char )); array = ref.DereferenceArray(); diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp index 51d77369da..6e1730725a 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp @@ -488,7 +488,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_CurrentThread___STATI // for the data before the thread is started. Once the thread is started, they are copied over to the unmanaged // thread object and no longer used. The managed object is then used simply as a wrapper for the unmanaged thread. // Therefore, it is safe to simply make another managed thread here. - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Thread)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Thread)); pRes = top.Dereference(); diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index 847de7f515..05dfc7b44d 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -219,7 +219,7 @@ CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_HeapBlock & return (CLR_INT64 *)&obj->NumericByRef().s8; } - if (dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) + if (dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.TimeSpan.data) { return (CLR_INT64 *)&obj[FIELD___ticks].NumericByRef().s8; } diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index fb94f89040..4b389a829c 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -21,7 +21,7 @@ HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT CLR_RT_HeapBlock *hbObj; td.Set(td.Assembly(), td.target->EnclosingType()); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(td); } @@ -252,7 +252,7 @@ HRESULT Library_corlib_native_System_Type::get_IsArray___BOOLEAN(CLR_RT_StackFra NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); - stack.SetResult_Boolean(td.data == g_CLR_RT_WellKnownTypes.m_Array.data); + stack.SetResult_Boolean(td.data == g_CLR_RT_WellKnownTypes.Array.data); NANOCLR_NOCLEANUP(); } @@ -315,7 +315,7 @@ HRESULT Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType_ if (!g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->FindAppDomainAssembly(inst.m_assm)) NANOCLR_SET_AND_LEAVE(S_OK); #endif - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(td); } @@ -332,7 +332,7 @@ HRESULT Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType_ NANOCLR_SET_AND_LEAVE(S_OK); #endif NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(reflex); } @@ -351,7 +351,7 @@ HRESULT Library_corlib_native_System_Type::GetTypeFromHandle___STATIC__SystemTyp CLR_RT_HeapBlock &top = stack.PushValue(); CLR_RT_HeapBlock *hbObj; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->Assign(pThis); // RuntimeTypeHandle and Type have the same representation. @@ -481,7 +481,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( { CLR_RT_HeapBlock *hbObj; NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_FieldInfo)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.FieldInfo)); hbObj = top.Dereference(); hbObj->SetReflection(index); @@ -492,7 +492,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( CLR_RT_HeapBlock *elem = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetElement(iField); CLR_RT_HeapBlock *hbObj; NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.m_FieldInfo)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.FieldInfo)); hbObj = elem->Dereference(); NANOCLR_CHECK_HRESULT(hbObj->SetReflection(index)); } @@ -510,7 +510,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( NANOCLR_SET_AND_LEAVE(S_OK); NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, iField, g_CLR_RT_WellKnownTypes.m_FieldInfo)); + CLR_RT_HeapBlock_Array::CreateInstance(top, iField, g_CLR_RT_WellKnownTypes.FieldInfo)); } } } @@ -666,7 +666,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( CLR_RT_HeapBlock *elem = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetElement(iMethod); CLR_RT_HeapBlock *hbObj; NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.m_MethodInfo)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*elem, g_CLR_RT_WellKnownTypes.MethodInfo)); hbObj = elem->Dereference(); NANOCLR_CHECK_HRESULT(hbObj->SetReflection(index)); @@ -760,7 +760,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( inst.InitializeFromIndex(index); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_MethodInfo)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.MethodInfo)); hbObj = top.Dereference(); hbObj->SetReflection(inst); @@ -785,7 +785,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( } NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, iMethod, g_CLR_RT_WellKnownTypes.m_MethodInfo)); + CLR_RT_HeapBlock_Array::CreateInstance(top, iMethod, g_CLR_RT_WellKnownTypes.MethodInfo)); } } diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 8fe35a4415..d691589dd0 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -946,7 +946,7 @@ HRESULT CLR_RT_HeapBlock::PerformUnboxing(const CLR_RT_TypeDef_Instance &cls) CLR_RT_TypeDef_Instance &inst = srcTypeDes.m_handlerCls; - if (inst.data == g_CLR_RT_WellKnownTypes.m_Guid.data) + if (inst.data == g_CLR_RT_WellKnownTypes.Guid.data) { // can't cast GUID class to anything else except another GUID NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index 0087231e0e..a7b4e9541c 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -35,7 +35,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( } else { - cls = g_CLR_RT_WellKnownTypes.m_Array; + cls = g_CLR_RT_WellKnownTypes.Array; } if (inst.InitializeFromIndex(cls) == false) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp index f59b1393da..725ef95f2c 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp @@ -170,7 +170,7 @@ HRESULT CLR_RT_HeapBlock_ArrayList::SetCapacity( CLR_UINT32 newCapacity ) newCapacity = c_DefaultCapacity; } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newItemsHB, newCapacity, g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newItemsHB, newCapacity, g_CLR_RT_WellKnownTypes.Object )); newItems = newItemsHB.DereferenceArray(); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp index 116d4e00bb..813c13ebda 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp @@ -55,7 +55,7 @@ HRESULT CLR_RT_HeapBlock_Queue::Enqueue( CLR_RT_HeapBlock* value ) capacity *= 2; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object )); array = newArrayHB.DereferenceArray(); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp index 6069f7235d..388b4c3dfc 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp @@ -54,7 +54,7 @@ HRESULT CLR_RT_HeapBlock_Stack::Push( CLR_RT_HeapBlock* value ) capacity *= 2; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object )); newArray = newArrayHB.DereferenceArray(); diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index 2663a3a713..ce24e58ab9 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -782,7 +782,7 @@ HRESULT CLR_RT_StackFrame::HandleSynchronized(bool fAcquire, bool fGlobal) // // Create an private object to implement global locks. // - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*obj, g_CLR_RT_WellKnownTypes.m_Object)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*obj, g_CLR_RT_WellKnownTypes.Object)); *ppGlobalLock = obj->Dereference(); } diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index a031971054..32778ad950 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -549,7 +549,7 @@ HRESULT CLR_RT_ExecutionEngine::CreateEntryPointArgs(CLR_RT_HeapBlock &argsBlk, } NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(argsBlk, (CLR_UINT32)args.size(), g_CLR_RT_WellKnownTypes.m_String)); + CLR_RT_HeapBlock_Array::CreateInstance(argsBlk, (CLR_UINT32)args.size(), g_CLR_RT_WellKnownTypes.String)); array = argsBlk.Array(); iArg = 0; @@ -618,7 +618,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS #endif { NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack->m_arguments[0], 0, g_CLR_RT_WellKnownTypes.m_String)); + CLR_RT_HeapBlock_Array::CreateInstance(stack->m_arguments[0], 0, g_CLR_RT_WellKnownTypes.String)); } } } @@ -1077,7 +1077,7 @@ void CLR_DebuggerBreak() { Library_corlib_native_System_Exception::CreateInstance( g_CLR_RT_ExecutionEngine.m_currentThread->m_currentException, - g_CLR_RT_WellKnownTypes.m_WatchdogException, + g_CLR_RT_WellKnownTypes.WatchdogException, CLR_E_WATCHDOG_TIMEOUT, g_CLR_RT_ExecutionEngine.m_currentThread->CurrentFrame()); } @@ -2024,7 +2024,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR // // You cannot create an array this way. // - if (inst.data == g_CLR_RT_WellKnownTypes.m_Array.data) + if (inst.data == g_CLR_RT_WellKnownTypes.Array.data) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -2338,7 +2338,7 @@ HRESULT CLR_RT_ExecutionEngine::NewArrayList(CLR_RT_HeapBlock &ref, int size, CL int count = size; int capacity = size < minCapacity ? minCapacity : size; - NANOCLR_CHECK_HRESULT(NewObjectFromIndex(ref, g_CLR_RT_WellKnownTypes.m_ArrayList)); + NANOCLR_CHECK_HRESULT(NewObjectFromIndex(ref, g_CLR_RT_WellKnownTypes.ArrayList)); NANOCLR_CHECK_HRESULT(CLR_RT_ArrayListHelper::PrepareArrayList(ref, count, capacity)); NANOCLR_CHECK_HRESULT(CLR_RT_ArrayListHelper::ExtractArrayFromArrayList(ref, array, count, capacity)); @@ -2798,7 +2798,7 @@ void CLR_RT_ExecutionEngine::CheckThreads(CLR_INT64 &timeoutMin, CLR_RT_DblLinke { (void)Library_corlib_native_System_Exception::CreateInstance( th->m_currentException, - g_CLR_RT_WellKnownTypes.m_ConstraintException, + g_CLR_RT_WellKnownTypes.ConstraintException, S_OK, th->CurrentFrame()); @@ -2980,10 +2980,10 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Casting from [] to System.Array or System.Object is always allowed. // - if (inst.data == g_CLR_RT_WellKnownTypes.m_Array.data || - inst.data == g_CLR_RT_WellKnownTypes.m_Object.data || - inst.data == g_CLR_RT_WellKnownTypes.m_IList.data || - inst.data == g_CLR_RT_WellKnownTypes.m_ICloneable.data) + if (inst.data == g_CLR_RT_WellKnownTypes.Array.data || + inst.data == g_CLR_RT_WellKnownTypes.Object.data || + inst.data == g_CLR_RT_WellKnownTypes.IList.data || + inst.data == g_CLR_RT_WellKnownTypes.ICloneable.data) { return true; } diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index ca330c39a8..426bb0fc21 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -3212,7 +3212,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) (void)Library_corlib_native_System_Exception::CreateInstance( th->m_currentException, - g_CLR_RT_WellKnownTypes.m_ThreadAbortException, + g_CLR_RT_WellKnownTypes.ThreadAbortException, S_OK, stack); diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 38896d7a34..fffd93b629 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -634,7 +634,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if ((mask & c_Signature_Type) != 0) { m_type = &m_type_tmp; - NANOCLR_CHECK_HRESULT(m_type->InitializeFromType(g_CLR_RT_WellKnownTypes.m_ArrayList)); + NANOCLR_CHECK_HRESULT(m_type->InitializeFromType(g_CLR_RT_WellKnownTypes.ArrayList)); } } else if (levelTwo == TE_L2_Other) @@ -643,7 +643,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) if (levelThree == TE_L3_Type) { m_type = &m_type_tmp; - NANOCLR_CHECK_HRESULT(m_type->InitializeFromType(g_CLR_RT_WellKnownTypes.m_Type)); + NANOCLR_CHECK_HRESULT(m_type->InitializeFromType(g_CLR_RT_WellKnownTypes.Type)); } #if defined(NANOCLR_APPDOMAINS) else if (levelThree == TE_L3_Reflection) @@ -861,7 +861,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) NANOCLR_SET_AND_LEAVE(S_OK); } - if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_DateTime.data) + if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.DateTime.data) { CLR_INT64 *pVal = Library_corlib_native_System_DateTime::GetValuePtr(*value); FAULT_ON_NULL(pVal); @@ -870,7 +870,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) bits = 64; fSigned = false; } - else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) + else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.TimeSpan.data) { CLR_INT64 *pVal = Library_corlib_native_System_TimeSpan::GetValuePtr(*value); FAULT_ON_NULL(pVal); @@ -1010,7 +1010,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) CLR_UINT32 bits; bool fSigned; - if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_DateTime.data) + if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.DateTime.data) { CLR_INT64 *pVal = Library_corlib_native_System_DateTime::GetValuePtr(*m_value); FAULT_ON_NULL(pVal); @@ -1019,7 +1019,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) bits = 64; fSigned = false; } - else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_TimeSpan.data) + else if (m_type->m_handlerCls.data == g_CLR_RT_WellKnownTypes.TimeSpan.data) { CLR_INT64 *pVal = Library_corlib_native_System_TimeSpan::GetValuePtr(*m_value); FAULT_ON_NULL(pVal); @@ -1209,7 +1209,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi if (cls.target->flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) { CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); + inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.SerializationHintsAttribute); CLR_RT_AttributeEnumerator en; en.Initialize(cls); @@ -1246,7 +1246,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( if (fld.target->flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) { CLR_RT_TypeDef_Instance inst; - inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); + inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.SerializationHintsAttribute); CLR_RT_AttributeEnumerator en; en.Initialize(fld); @@ -1346,22 +1346,22 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) switch (reflex->kind) { case REFLECTION_ASSEMBLY: - cls = &g_CLR_RT_WellKnownTypes.m_Assembly; + cls = &g_CLR_RT_WellKnownTypes.Assembly; break; case REFLECTION_TYPE: - cls = &g_CLR_RT_WellKnownTypes.m_Type; + cls = &g_CLR_RT_WellKnownTypes.Type; break; case REFLECTION_TYPE_DELAYED: - cls = &g_CLR_RT_WellKnownTypes.m_Type; + cls = &g_CLR_RT_WellKnownTypes.Type; break; case REFLECTION_CONSTRUCTOR: - cls = &g_CLR_RT_WellKnownTypes.m_ConstructorInfo; + cls = &g_CLR_RT_WellKnownTypes.ConstructorInfo; break; case REFLECTION_METHOD: - cls = &g_CLR_RT_WellKnownTypes.m_MethodInfo; + cls = &g_CLR_RT_WellKnownTypes.MethodInfo; break; case REFLECTION_FIELD: - cls = &g_CLR_RT_WellKnownTypes.m_FieldInfo; + cls = &g_CLR_RT_WellKnownTypes.FieldInfo; break; } diff --git a/src/CLR/Core/Streams.cpp b/src/CLR/Core/Streams.cpp index 8e7533d1c3..ccf87ac218 100644 --- a/src/CLR/Core/Streams.cpp +++ b/src/CLR/Core/Streams.cpp @@ -93,7 +93,7 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ToArray( CLR_RT_HeapBlock& ref ) } NANOCLR_FOREACH_NODE_END(); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, tot, g_CLR_RT_WellKnownTypes.m_UInt8 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, tot, g_CLR_RT_WellKnownTypes.UInt8 )); array = ref.DereferenceArray(); buf = array->GetFirstElement(); diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index 4919c0ffc2..f48decbd57 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -384,7 +384,7 @@ HRESULT CLR_RT_Thread::Terminate() // between the start and end of killing the thread, a GC gets run. (void)Library_corlib_native_System_Exception::CreateInstance( m_currentException, - g_CLR_RT_WellKnownTypes.m_ThreadAbortException, + g_CLR_RT_WellKnownTypes.ThreadAbortException, S_OK, CurrentFrame()); @@ -405,7 +405,7 @@ HRESULT CLR_RT_Thread::Abort() { (void)Library_corlib_native_System_Exception::CreateInstance( m_currentException, - g_CLR_RT_WellKnownTypes.m_ThreadAbortException, + g_CLR_RT_WellKnownTypes.ThreadAbortException, S_OK, CurrentFrame()); diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index c694635477..cd59f1e66c 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -12,7 +12,7 @@ #define ITERATE_THROUGH_RECORDS(assm, i, tblName, tblNameUC) \ const CLR_RECORD_##tblNameUC *src = (const CLR_RECORD_##tblNameUC *)assm->GetTable(TBL_##tblName); \ - CLR_RT_##tblName##_CrossReference *dst = assm->crossReference##tblName; \ + CLR_RT_##tblName##_CrossReference *dst = assm->crossReference##tblName; \ for (i = 0; i < assm->tablesSize[TBL_##tblName]; i++, src++, dst++) //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -510,7 +510,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) // // Special case for Object types. // - if (res.Class.data == g_CLR_RT_WellKnownTypes.m_Object.data) + if (res.Class.data == g_CLR_RT_WellKnownTypes.Object.data) { res.DataType = DATATYPE_OBJECT; } @@ -593,11 +593,11 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) } case DATATYPE_OBJECT: - res.Class = g_CLR_RT_WellKnownTypes.m_Object; + res.Class = g_CLR_RT_WellKnownTypes.Object; NANOCLR_SET_AND_LEAVE(S_OK); case DATATYPE_VOID: - res.Class = g_CLR_RT_WellKnownTypes.m_Void; + res.Class = g_CLR_RT_WellKnownTypes.Void; NANOCLR_SET_AND_LEAVE(S_OK); case DATATYPE_GENERICINST: @@ -755,7 +755,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromReflection(const CLR_RT_ReflectionDe case REFLECTION_TYPE: if (reflex.levels > 0 && levels == NULL) { - ptr = &g_CLR_RT_WellKnownTypes.m_Array; + ptr = &g_CLR_RT_WellKnownTypes.Array; } else { @@ -902,7 +902,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance bool CLR_RT_TypeDef_Instance::IsATypeHandler() { NATIVE_PROFILE_CLR_CORE(); - return (data == g_CLR_RT_WellKnownTypes.m_Type.data || data == g_CLR_RT_WellKnownTypes.m_TypeStatic.data); + return (data == g_CLR_RT_WellKnownTypes.Type.data || data == g_CLR_RT_WellKnownTypes.TypeStatic.data); } void CLR_RT_TypeDef_Instance::Clear() @@ -1616,12 +1616,12 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } } - if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_Array.data) + if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.Array.data) { m_flags |= CLR_RT_DataTypeLookup::c_Array; } - if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_ArrayList.data) + if (m_handlerCls.data == g_CLR_RT_WellKnownTypes.ArrayList.data) { m_flags |= CLR_RT_DataTypeLookup::c_ArrayList; } @@ -1751,7 +1751,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) { CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)obj; - cls = NANOCLR_INDEX_IS_VALID(dlg->m_cls) ? &dlg->m_cls : &g_CLR_RT_WellKnownTypes.m_Delegate; + cls = NANOCLR_INDEX_IS_VALID(dlg->m_cls) ? &dlg->m_cls : &g_CLR_RT_WellKnownTypes.Delegate; } break; @@ -1759,8 +1759,8 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) { CLR_RT_HeapBlock_Delegate_List *dlgLst = (CLR_RT_HeapBlock_Delegate_List *)obj; - cls = NANOCLR_INDEX_IS_VALID(dlgLst->m_cls) ? &dlgLst->m_cls - : &g_CLR_RT_WellKnownTypes.m_MulticastDelegate; + cls = + NANOCLR_INDEX_IS_VALID(dlgLst->m_cls) ? &dlgLst->m_cls : &g_CLR_RT_WellKnownTypes.MulticastDelegate; } break; @@ -1768,7 +1768,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) case DATATYPE_WEAKCLASS: { - cls = &g_CLR_RT_WellKnownTypes.m_WeakReference; + cls = &g_CLR_RT_WellKnownTypes.WeakReference; } break; @@ -1780,22 +1780,22 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) switch (reflex->kind) { case REFLECTION_ASSEMBLY: - cls = &g_CLR_RT_WellKnownTypes.m_Assembly; + cls = &g_CLR_RT_WellKnownTypes.Assembly; break; case REFLECTION_TYPE: - cls = &g_CLR_RT_WellKnownTypes.m_Type; + cls = &g_CLR_RT_WellKnownTypes.Type; break; case REFLECTION_TYPE_DELAYED: - cls = &g_CLR_RT_WellKnownTypes.m_Type; + cls = &g_CLR_RT_WellKnownTypes.Type; break; case REFLECTION_CONSTRUCTOR: - cls = &g_CLR_RT_WellKnownTypes.m_ConstructorInfo; + cls = &g_CLR_RT_WellKnownTypes.ConstructorInfo; break; case REFLECTION_METHOD: - cls = &g_CLR_RT_WellKnownTypes.m_MethodInfo; + cls = &g_CLR_RT_WellKnownTypes.MethodInfo; break; case REFLECTION_FIELD: - cls = &g_CLR_RT_WellKnownTypes.m_FieldInfo; + cls = &g_CLR_RT_WellKnownTypes.FieldInfo; break; } @@ -1862,7 +1862,7 @@ void CLR_RT_TypeDescriptor::ConvertToArray() m_flags &= CLR_RT_DataTypeLookup::c_SemanticMask; m_flags |= CLR_RT_DataTypeLookup::c_Array; - m_handlerCls.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_Array); + m_handlerCls.InitializeFromIndex(g_CLR_RT_WellKnownTypes.Array); } bool CLR_RT_TypeDescriptor::ShouldEmitHash() @@ -2108,7 +2108,7 @@ bool CLR_RT_ExceptionHandler::ConvertFromEH( break; case CLR_RECORD_EH::EH_CatchAll: - m_typeFilter = g_CLR_RT_WellKnownTypes.m_Object; + m_typeFilter = g_CLR_RT_WellKnownTypes.Object; break; case CLR_RECORD_EH::EH_Catch: @@ -2325,9 +2325,8 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R offsets.fieldRef = ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); - offsets.methodRef = ROUNDTOMULTIPLE( - skeleton->tablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), - CLR_UINT32); + offsets.methodRef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), CLR_UINT32); offsets.typeDef = ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); @@ -2335,9 +2334,8 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R offsets.fieldDef = ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); - offsets.methodDef = ROUNDTOMULTIPLE( - skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), - CLR_UINT32); + offsets.methodDef = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_CrossReference), CLR_UINT32); offsets.genericParam = ROUNDTOMULTIPLE( skeleton->tablesSize[TBL_GenericParam] * sizeof(CLR_RT_GenericParam_CrossReference), @@ -2355,9 +2353,8 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - offsets.debuggingInfoMethods = ROUNDTOMULTIPLE( - skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), - CLR_UINT32); + offsets.debuggingInfoMethods = + ROUNDTOMULTIPLE(skeleton->tablesSize[TBL_MethodDef] * sizeof(CLR_RT_MethodDef_DebuggingInfo), CLR_UINT32); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) size_t iTotalRamSize = offsets.base + offsets.assemblyRef + offsets.typeRef + offsets.fieldRef + @@ -2888,7 +2885,8 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() #endif } - if (typeSpecInstance.assembly->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->target)) + if (typeSpecInstance.assembly + ->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->target)) { fGot = true; @@ -2943,7 +2941,8 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() while (NANOCLR_INDEX_IS_VALID(typeDefInstance)) { - if (typeDefInstance.assembly->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->target)) + if (typeDefInstance.assembly + ->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->target)) { fGot = true; @@ -3771,96 +3770,100 @@ struct TypeIndexLookup CLR_RT_TypeDef_Index *ptr; }; +// clang-format off + static const TypeIndexLookup c_TypeIndexLookup[] = { #define TIL(ns, nm, fld) \ { \ ns, nm, &g_CLR_RT_WellKnownTypes.fld \ } - TIL("System", "Boolean", m_Boolean), - TIL("System", "Char", m_Char), - TIL("System", "SByte", m_Int8), - TIL("System", "Byte", m_UInt8), - TIL("System", "Int16", m_Int16), - TIL("System", "UInt16", m_UInt16), - TIL("System", "Int32", m_Int32), - TIL("System", "UInt32", m_UInt32), - TIL("System", "Int64", m_Int64), - TIL("System", "UInt64", m_UInt64), - TIL("System", "Single", m_Single), - TIL("System", "Double", m_Double), - TIL("System", "DateTime", m_DateTime), - TIL("System", "TimeSpan", m_TimeSpan), - TIL("System", "String", m_String), - - TIL("System", "Void", m_Void), - TIL("System", "Object", m_Object), - TIL("System", "ValueType", m_ValueType), - TIL("System", "Enum", m_Enum), - - TIL("System", "AppDomainUnloadedException", m_AppDomainUnloadedException), - TIL("System", "ArgumentNullException", m_ArgumentNullException), - TIL("System", "ArgumentException", m_ArgumentException), - TIL("System", "ArgumentOutOfRangeException", m_ArgumentOutOfRangeException), - TIL("System", "Exception", m_Exception), - TIL("System", "IndexOutOfRangeException", m_IndexOutOfRangeException), - TIL("System", "InvalidCastException", m_InvalidCastException), - TIL("System", "FormatException", m_FormatException), - TIL("System", "InvalidOperationException", m_InvalidOperationException), - TIL("System", "NotSupportedException", m_NotSupportedException), - TIL("System", "NotImplementedException", m_NotImplementedException), - TIL("System", "NullReferenceException", m_NullReferenceException), - TIL("System", "OutOfMemoryException", m_OutOfMemoryException), - TIL("System", "TimeoutException", m_TimeoutException), - TIL("System", "ObjectDisposedException", m_ObjectDisposedException), - TIL("System.Threading", "ThreadAbortException", m_ThreadAbortException), - TIL("nanoFramework.Runtime.Native", "ConstraintException", m_ConstraintException), - - TIL("System", "Delegate", m_Delegate), - TIL("System", "MulticastDelegate", m_MulticastDelegate), - - TIL("System", "Array", m_Array), - TIL("System.Collections", "ArrayList", m_ArrayList), - TIL("System", "ICloneable", m_ICloneable), - TIL("System.Collections", "IList", m_IList), - - TIL("System.Reflection", "Assembly", m_Assembly), - TIL("System", "Type", m_TypeStatic), - TIL("System", "RuntimeType", m_Type), - TIL("System.Reflection", "RuntimeConstructorInfo", m_ConstructorInfo), - TIL("System.Reflection", "RuntimeMethodInfo", m_MethodInfo), - TIL("System.Reflection", "RuntimeFieldInfo", m_FieldInfo), - - TIL("System", "WeakReference", m_WeakReference), - - TIL("System", "Guid", m_Guid), - - TIL("nanoFramework.UI", "Bitmap", m_Bitmap), - TIL("nanoFramework.UI", "Font", m_Font), - TIL("nanoFramework.Touch", "TouchEvent", m_TouchEvent), - TIL("nanoFramework.Touch", "TouchInput", m_TouchInput), - - TIL("System.Net.NetworkInformation", "NetworkInterface", m_NetworkInterface), - TIL("System.Net.NetworkInformation", "Wireless80211Configuration", m_Wireless80211Configuration), - TIL("System.Net.NetworkInformation", "WirelessAPConfiguration", m_WirelessAPConfiguration), - TIL("System.Net.NetworkInformation", "WirelessAPStation", m_WirelessAPStation), + TIL("System", "Boolean", Boolean), + TIL("System", "Char", Char), + TIL("System", "SByte", Int8), + TIL("System", "Byte", UInt8), + TIL("System", "Int16", Int16), + TIL("System", "UInt16", UInt16), + TIL("System", "Int32", Int32), + TIL("System", "UInt32", UInt32), + TIL("System", "Int64", Int64), + TIL("System", "UInt64", UInt64), + TIL("System", "Single", Single), + TIL("System", "Double", Double), + TIL("System", "DateTime", DateTime), + TIL("System", "TimeSpan", TimeSpan), + TIL("System", "String", String), + + TIL("System", "Void", Void), + TIL("System", "Object", Object), + TIL("System", "ValueType", ValueType), + TIL("System", "Enum", Enum), + + TIL("System", "AppDomainUnloadedException", AppDomainUnloadedException), + TIL("System", "ArgumentNullException", ArgumentNullException), + TIL("System", "ArgumentException", ArgumentException), + TIL("System", "ArgumentOutOfRangeException", ArgumentOutOfRangeException), + TIL("System", "Exception", Exception), + TIL("System", "IndexOutOfRangeException", IndexOutOfRangeException), + TIL("System", "InvalidCastException", InvalidCastException), + TIL("System", "FormatException", FormatException), + TIL("System", "InvalidOperationException", InvalidOperationException), + TIL("System", "NotSupportedException", NotSupportedException), + TIL("System", "NotImplementedException", NotImplementedException), + TIL("System", "NullReferenceException", NullReferenceException), + TIL("System", "OutOfMemoryException", OutOfMemoryException), + TIL("System", "TimeoutException", TimeoutException), + TIL("System", "ObjectDisposedException", ObjectDisposedException), + TIL("System.Threading", "ThreadAbortException", ThreadAbortException), + TIL("nanoFramework.Runtime.Native", "ConstraintException", ConstraintException), + + TIL("System", "Delegate", Delegate), + TIL("System", "MulticastDelegate", MulticastDelegate), + + TIL("System", "Array", Array), + TIL("System.Collections", "ArrayList", ArrayList), + TIL("System", "ICloneable", ICloneable), + TIL("System.Collections", "IList", IList), + + TIL("System.Reflection", "Assembly", Assembly), + TIL("System", "Type", TypeStatic), + TIL("System", "RuntimeType", Type), + TIL("System.Reflection", "RuntimeConstructorInfo", ConstructorInfo), + TIL("System.Reflection", "RuntimeMethodInfo", MethodInfo), + TIL("System.Reflection", "RuntimeFieldInfo", FieldInfo), + + TIL("System", "WeakReference", WeakReference), + + TIL("System", "Guid", Guid), + + TIL("nanoFramework.UI", "Bitmap", Bitmap), + TIL("nanoFramework.UI", "Font", Font), + TIL("nanoFramework.Touch", "TouchEvent", TouchEvent), + TIL("nanoFramework.Touch", "TouchInput", TouchInput), + + TIL("System.Net.NetworkInformation", "NetworkInterface", NetworkInterface), + TIL("System.Net.NetworkInformation", "Wireless80211Configuration", Wireless80211Configuration), + TIL("System.Net.NetworkInformation", "WirelessAPConfiguration", WirelessAPConfiguration), + TIL("System.Net.NetworkInformation", "WirelessAPStation", WirelessAPStation), #if defined(NANOCLR_APPDOMAINS) - TIL("System", "AppDomain", m_AppDomain), - TIL("System", "MarshalByRefObject", m_MarshalByRefObject), + TIL("System", "AppDomain", m_AppDomain), + TIL("System", "MarshalByRefObject", m_MarshalByRefObject), #endif - TIL("System.Threading", "Thread", m_Thread), - TIL("System.Resources", "ResourceManager", m_ResourceManager), + TIL("System.Threading", "Thread", Thread), + TIL("System.Resources", "ResourceManager", ResourceManager), - TIL("System.Net.Sockets", "SocketException", m_SocketException), + TIL("System.Net.Sockets", "SocketException", SocketException), - TIL("System.Device.I2c", "I2cTransferResult", m_I2cTransferResult), + TIL("System.Device.I2c", "I2cTransferResult", I2cTransferResult), - TIL("nanoFramework.Hardware.Esp32.Rmt", "RmtCommand", m_RmtCommand), + TIL("nanoFramework.Hardware.Esp32.Rmt", "RmtCommand", RmtCommand), #undef TIL }; +// clang-format on + //--// struct MethodIndexLookup @@ -3876,8 +3879,12 @@ static const MethodIndexLookup c_MethodIndexLookup[] = { nm, &g_CLR_RT_WellKnownTypes.type, &g_CLR_RT_WellKnownMethods.method \ } - MIL("GetObjectFromId", m_ResourceManager, m_ResourceManager_GetObjectFromId), - MIL("GetObjectChunkFromId", m_ResourceManager, m_ResourceManager_GetObjectChunkFromId), + // clang-format off + + MIL("GetObjectFromId", ResourceManager, m_ResourceManager_GetObjectFromId), + MIL("GetObjectChunkFromId", ResourceManager, m_ResourceManager_GetObjectChunkFromId), + +// clang-format on #undef MIL }; @@ -5175,18 +5182,16 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() offsets.assemblyRef += ROUNDTOMULTIPLE( pASSM->tablesSize[TBL_AssemblyRef] * sizeof(CLR_RT_AssemblyRef_CrossReference), CLR_UINT32); - offsets.typeRef += ROUNDTOMULTIPLE( - pASSM->tablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), - CLR_UINT32); + offsets.typeRef += + ROUNDTOMULTIPLE(pASSM->tablesSize[TBL_TypeRef] * sizeof(CLR_RT_TypeRef_CrossReference), CLR_UINT32); offsets.fieldRef += ROUNDTOMULTIPLE( pASSM->tablesSize[TBL_FieldRef] * sizeof(CLR_RT_FieldRef_CrossReference), CLR_UINT32); offsets.methodRef += ROUNDTOMULTIPLE( pASSM->tablesSize[TBL_MethodRef] * sizeof(CLR_RT_MethodRef_CrossReference), CLR_UINT32); - offsets.typeDef += ROUNDTOMULTIPLE( - pASSM->tablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), - CLR_UINT32); + offsets.typeDef += + ROUNDTOMULTIPLE(pASSM->tablesSize[TBL_TypeDef] * sizeof(CLR_RT_TypeDef_CrossReference), CLR_UINT32); offsets.fieldDef += ROUNDTOMULTIPLE( pASSM->tablesSize[TBL_FieldDef] * sizeof(CLR_RT_FieldDef_CrossReference), CLR_UINT32); @@ -5198,7 +5203,8 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() CLR_UINT32); #if !defined(NANOCLR_APPDOMAINS) - offsets.staticFieldsCount += ROUNDTOMULTIPLE(pASSM->staticFieldsCount * sizeof(CLR_RT_HeapBlock), CLR_UINT32); + offsets.staticFieldsCount += + ROUNDTOMULTIPLE(pASSM->staticFieldsCount * sizeof(CLR_RT_HeapBlock), CLR_UINT32); #endif #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -5210,8 +5216,7 @@ HRESULT CLR_RT_TypeSystem::ResolveAll() iMetaData += pASSM->header->SizeOfTable(TBL_AssemblyRef) + pASSM->header->SizeOfTable(TBL_TypeRef) + pASSM->header->SizeOfTable(TBL_FieldRef) + pASSM->header->SizeOfTable(TBL_MethodRef) + pASSM->header->SizeOfTable(TBL_TypeDef) + pASSM->header->SizeOfTable(TBL_FieldDef) + - pASSM->header->SizeOfTable(TBL_MethodDef) + - pASSM->header->SizeOfTable(TBL_GenericParam) + + pASSM->header->SizeOfTable(TBL_MethodDef) + pASSM->header->SizeOfTable(TBL_GenericParam) + pASSM->header->SizeOfTable(TBL_TypeSpec) + pASSM->header->SizeOfTable(TBL_Attributes) + pASSM->header->SizeOfTable(TBL_Signatures); @@ -5353,7 +5358,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() CLR_RT_HeapBlock exception; NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.m_OutOfMemoryException)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.OutOfMemoryException)); g_CLR_RT_ExecutionEngine.m_outOfMemoryException = exception.Dereference(); } @@ -5885,8 +5890,7 @@ bool CLR_RT_TypeSystem::FindVirtualMethodDef( CLR_RT_TypeDef_Instance inst; inst.InitializeFromMethod(calleeInst); - if ((inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == - CLR_RECORD_TYPEDEF::TD_Semantics_Interface) + if ((inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Interface) { // // It's an interface method, it could be that the class is implementing explicitly the method. @@ -6215,7 +6219,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( m_lastValue.m_value, paramCount, - g_CLR_RT_WellKnownTypes.m_Object)); + g_CLR_RT_WellKnownTypes.Object)); // get a pointer to the first element CLR_RT_HeapBlock *currentParam = @@ -6380,7 +6384,7 @@ HRESULT CLR_RT_AttributeParser::ReadString(CLR_RT_HeapBlock *&value) CLR_UINT32 tk; CLR_RT_TypeDescriptor desc; - NANOCLR_CHECK_HRESULT(desc.InitializeFromType(g_CLR_RT_WellKnownTypes.m_String)); + NANOCLR_CHECK_HRESULT(desc.InitializeFromType(g_CLR_RT_WellKnownTypes.String)); NANOCLR_READ_UNALIGNED_UINT16(tk, m_blob); @@ -6403,7 +6407,7 @@ HRESULT CLR_RT_AttributeParser::ReadNumericValue( CLR_RT_TypeDescriptor desc; NANOCLR_CHECK_HRESULT(desc.InitializeFromType(*m_cls)); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*value, g_CLR_RT_WellKnownTypes.m_TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*value, g_CLR_RT_WellKnownTypes.TypeStatic)); // need to setup reflection and data type Id to properly setup the object value->SetReflection(*m_cls); diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index e1ef5495c5..cfe5fbe458 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -61,34 +61,34 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { -//// m_flags, m_sizeInBits, m_sizeInBytes, m_promoteTo, m_convertToElementType, m_cls, m_relocate, m_name +//// flags, sizeInBits, sizeInBytes, promoteTo, convertToElementType, cls, relocate, name //// -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID // - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(m_Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(m_Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(m_UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_U1, DT_T(I4 ), DT_CNV(U1 ), DT_CLS(UInt8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U1 ) }, // DATATYPE_U1 // - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(m_Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(m_Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(m_UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(CHAR ), DT_CLS(Char ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(char ) }, // DATATYPE_CHAR + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_I2, DT_T(I4 ), DT_CNV(I2 ), DT_CLS(Int16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I2 ) }, // DATATYPE_I2 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 16, DT_U2, DT_T(I4 ), DT_CNV(U2 ), DT_CLS(UInt16 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U2 ) }, // DATATYPE_U2 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(m_Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(m_UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(m_Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(I4 ), DT_CNV(I4 ), DT_CLS(Int32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I4 ) }, // DATATYPE_I4 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_U4, DT_T(I4 ), DT_CNV(U4 ), DT_CLS(UInt32 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U4 ) }, // DATATYPE_U4 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 32, DT_I4, DT_T(R4 ), DT_CNV(R4 ), DT_CLS(Single ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R4 ) }, // DATATYPE_R4 // - { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(m_Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 - { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(m_UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 - { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(m_Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(m_DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(m_TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN - { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(m_String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING + { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 + { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 + { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN + { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // - { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(m_Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT + { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE - { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(m_Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY + { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR @@ -98,7 +98,7 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY - { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(m_WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD @@ -128,14 +128,14 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED - { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT + { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT DATATYPE_NOT_SUPPORTED //VTU_PORT #if defined(NANOCLR_APPDOMAINS) - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY #else DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED diff --git a/src/CLR/Core/Various.cpp b/src/CLR/Core/Various.cpp index 9cbdfb1831..a99f5b71e5 100644 --- a/src/CLR/Core/Various.cpp +++ b/src/CLR/Core/Various.cpp @@ -30,7 +30,7 @@ HRESULT CLR_RT_ArrayListHelper::PrepareArrayList( CLR_RT_HeapBlock& thisRef, int NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pThis[ FIELD___items ], capacity, g_CLR_RT_WellKnownTypes.m_Object )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pThis[ FIELD___items ], capacity, g_CLR_RT_WellKnownTypes.Object )); pThis[ FIELD___size ].NumericByRef().s4 = count; diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index fc48dfaa78..8392708c5e 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2371,7 +2371,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) // placeholder for the data before the thread is started. Once the thread is started, they are copied over to // the unmanaged thread object and no longer used. The managed object is then used simply as a wrapper for the // unmanaged thread. Therefore, it is safe to simply make another managed thread here. - if (SUCCEEDED(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pThread, g_CLR_RT_WellKnownTypes.m_Thread))) + if (SUCCEEDED(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pThread, g_CLR_RT_WellKnownTypes.Thread))) { CLR_RT_HeapBlock *pRes = pThread->Dereference(); @@ -2633,7 +2633,7 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) } else { - if (SUCCEEDED(CLR_RT_HeapBlock_Array::CreateInstance(ref, cmd->m_size, g_CLR_RT_WellKnownTypes.m_Object))) + if (SUCCEEDED(CLR_RT_HeapBlock_Array::CreateInstance(ref, cmd->m_size, g_CLR_RT_WellKnownTypes.Object))) { CLR_RT_HeapBlock_Array *pOld = g_CLR_RT_ExecutionEngine.m_scratchPadArray; CLR_RT_HeapBlock_Array *pNew = ref.DereferenceArray(); @@ -3277,7 +3277,7 @@ static HRESULT AnalyzeObject_Helper(CLR_RT_HeapBlock *ptr, AnalyzeObject &ao) case CLR_RT_DataTypeLookup::c_ValueType: case CLR_RT_DataTypeLookup::c_Enum: ao.m_fCanBeNull = - ao.m_fBoxed || (ao.m_desc.m_handlerCls.data == g_CLR_RT_WellKnownTypes.m_String.data); + ao.m_fBoxed || (ao.m_desc.m_handlerCls.data == g_CLR_RT_WellKnownTypes.String.data); break; default: diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index cffd9ca360..68ab63673f 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1667,94 +1667,93 @@ struct CLR_RT_AppDomainAssembly : public CLR_RT_HeapBlock_Node // EVENT HEAP - N struct CLR_RT_WellKnownTypes { - CLR_RT_TypeDef_Index m_Boolean; - CLR_RT_TypeDef_Index m_Int8; - CLR_RT_TypeDef_Index m_UInt8; - - CLR_RT_TypeDef_Index m_Char; - CLR_RT_TypeDef_Index m_Int16; - CLR_RT_TypeDef_Index m_UInt16; - - CLR_RT_TypeDef_Index m_Int32; - CLR_RT_TypeDef_Index m_UInt32; - CLR_RT_TypeDef_Index m_Single; - - CLR_RT_TypeDef_Index m_Int64; - CLR_RT_TypeDef_Index m_UInt64; - CLR_RT_TypeDef_Index m_Double; - CLR_RT_TypeDef_Index m_DateTime; - CLR_RT_TypeDef_Index m_TimeSpan; - CLR_RT_TypeDef_Index m_String; - - CLR_RT_TypeDef_Index m_Void; - CLR_RT_TypeDef_Index m_Object; - CLR_RT_TypeDef_Index m_ValueType; - CLR_RT_TypeDef_Index m_Enum; - - CLR_RT_TypeDef_Index m_AppDomainUnloadedException; - CLR_RT_TypeDef_Index m_ArgumentNullException; - CLR_RT_TypeDef_Index m_ArgumentException; - CLR_RT_TypeDef_Index m_ArgumentOutOfRangeException; - CLR_RT_TypeDef_Index m_Exception; - CLR_RT_TypeDef_Index m_IndexOutOfRangeException; - CLR_RT_TypeDef_Index m_ThreadAbortException; - CLR_RT_TypeDef_Index m_InvalidOperationException; - CLR_RT_TypeDef_Index m_InvalidCastException; - CLR_RT_TypeDef_Index m_FormatException; - CLR_RT_TypeDef_Index m_NotSupportedException; - CLR_RT_TypeDef_Index m_NotImplementedException; - CLR_RT_TypeDef_Index m_NullReferenceException; - CLR_RT_TypeDef_Index m_OutOfMemoryException; - CLR_RT_TypeDef_Index m_TimeoutException; - CLR_RT_TypeDef_Index m_ObjectDisposedException; - CLR_RT_TypeDef_Index m_ConstraintException; - CLR_RT_TypeDef_Index m_WatchdogException; - - CLR_RT_TypeDef_Index m_Delegate; - CLR_RT_TypeDef_Index m_MulticastDelegate; - - CLR_RT_TypeDef_Index m_Array; - CLR_RT_TypeDef_Index m_ArrayList; - CLR_RT_TypeDef_Index m_ICloneable; - CLR_RT_TypeDef_Index m_IList; - - CLR_RT_TypeDef_Index m_Assembly; - CLR_RT_TypeDef_Index m_TypeStatic; - CLR_RT_TypeDef_Index m_Type; - CLR_RT_TypeDef_Index m_ConstructorInfo; - CLR_RT_TypeDef_Index m_MethodInfo; - CLR_RT_TypeDef_Index m_FieldInfo; - - CLR_RT_TypeDef_Index m_WeakReference; - - CLR_RT_TypeDef_Index m_Guid; - - CLR_RT_TypeDef_Index m_SerializationHintsAttribute; - CLR_RT_TypeDef_Index m_Bitmap; - CLR_RT_TypeDef_Index m_Font; - - CLR_RT_TypeDef_Index m_TouchEvent; - CLR_RT_TypeDef_Index m_TouchInput; - - CLR_RT_TypeDef_Index m_NetworkInterface; - CLR_RT_TypeDef_Index m_Wireless80211Configuration; - CLR_RT_TypeDef_Index m_WirelessAPConfiguration; - CLR_RT_TypeDef_Index m_WirelessAPStation; + CLR_RT_TypeDef_Index Boolean; + CLR_RT_TypeDef_Index Int8; + CLR_RT_TypeDef_Index UInt8; + + CLR_RT_TypeDef_Index Char; + CLR_RT_TypeDef_Index Int16; + CLR_RT_TypeDef_Index UInt16; + + CLR_RT_TypeDef_Index Int32; + CLR_RT_TypeDef_Index UInt32; + CLR_RT_TypeDef_Index Single; + + CLR_RT_TypeDef_Index Int64; + CLR_RT_TypeDef_Index UInt64; + CLR_RT_TypeDef_Index Double; + CLR_RT_TypeDef_Index DateTime; + CLR_RT_TypeDef_Index TimeSpan; + CLR_RT_TypeDef_Index String; + + CLR_RT_TypeDef_Index Void; + CLR_RT_TypeDef_Index Object; + CLR_RT_TypeDef_Index ValueType; + CLR_RT_TypeDef_Index Enum; + + CLR_RT_TypeDef_Index AppDomainUnloadedException; + CLR_RT_TypeDef_Index ArgumentNullException; + CLR_RT_TypeDef_Index ArgumentException; + CLR_RT_TypeDef_Index ArgumentOutOfRangeException; + CLR_RT_TypeDef_Index Exception; + CLR_RT_TypeDef_Index IndexOutOfRangeException; + CLR_RT_TypeDef_Index ThreadAbortException; + CLR_RT_TypeDef_Index InvalidOperationException; + CLR_RT_TypeDef_Index InvalidCastException; + CLR_RT_TypeDef_Index FormatException; + CLR_RT_TypeDef_Index NotSupportedException; + CLR_RT_TypeDef_Index NotImplementedException; + CLR_RT_TypeDef_Index NullReferenceException; + CLR_RT_TypeDef_Index OutOfMemoryException; + CLR_RT_TypeDef_Index TimeoutException; + CLR_RT_TypeDef_Index ObjectDisposedException; + CLR_RT_TypeDef_Index ConstraintException; + CLR_RT_TypeDef_Index WatchdogException; + + CLR_RT_TypeDef_Index Delegate; + CLR_RT_TypeDef_Index MulticastDelegate; + + CLR_RT_TypeDef_Index Array; + CLR_RT_TypeDef_Index ArrayList; + CLR_RT_TypeDef_Index ICloneable; + CLR_RT_TypeDef_Index IList; + + CLR_RT_TypeDef_Index Assembly; + CLR_RT_TypeDef_Index TypeStatic; + CLR_RT_TypeDef_Index Type; + CLR_RT_TypeDef_Index ConstructorInfo; + CLR_RT_TypeDef_Index MethodInfo; + CLR_RT_TypeDef_Index FieldInfo; + + CLR_RT_TypeDef_Index WeakReference; + + CLR_RT_TypeDef_Index Guid; + + CLR_RT_TypeDef_Index SerializationHintsAttribute; + CLR_RT_TypeDef_Index Bitmap; + CLR_RT_TypeDef_Index Font; + + CLR_RT_TypeDef_Index TouchEvent; + CLR_RT_TypeDef_Index TouchInput; + + CLR_RT_TypeDef_Index NetworkInterface; + CLR_RT_TypeDef_Index Wireless80211Configuration; + CLR_RT_TypeDef_Index WirelessAPConfiguration; + CLR_RT_TypeDef_Index WirelessAPStation; #if defined(NANOCLR_APPDOMAINS) CLR_RT_TypeDef_Index m_AppDomain; CLR_RT_TypeDef_Index m_MarshalByRefObject; #endif - CLR_RT_TypeDef_Index m_Thread; - CLR_RT_TypeDef_Index m_ResourceManager; + CLR_RT_TypeDef_Index Thread; + CLR_RT_TypeDef_Index ResourceManager; - CLR_RT_TypeDef_Index m_SocketException; + CLR_RT_TypeDef_Index SocketException; - CLR_RT_TypeDef_Index m_I2cTransferResult; - CLR_RT_TypeDef_Index m_I2cTransferResult_old; + CLR_RT_TypeDef_Index I2cTransferResult; - CLR_RT_TypeDef_Index m_RmtCommand; + CLR_RT_TypeDef_Index RmtCommand; PROHIBIT_COPY_CONSTRUCTORS(CLR_RT_WellKnownTypes); }; diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp index baaf990326..bfe3487437 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp @@ -58,7 +58,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pConfig[FIELD___macAddress], NETIF_MAX_HWADDR_LEN, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); memcpy(pConfig[FIELD___macAddress].DereferenceArray()->GetFirstElement(), config.MacAddress, NETIF_MAX_HWADDR_LEN); NANOCLR_NOCLEANUP(); @@ -260,7 +260,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface:: // now load adapter configuration on top of the stored config NANOCLR_CHECK_HRESULT(SOCK_CONFIGURATION_LoadConfiguration(&config, interfaceIndex)); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_NetworkInterface)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.NetworkInterface)); pConfig = top.Dereference(); FAULT_ON_NULL(pConfig); @@ -287,7 +287,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pConfig[FIELD___macAddress], NETIF_MAX_HWADDR_LEN, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); memcpy(pConfig[FIELD___macAddress].DereferenceArray()->GetFirstElement(), config.MacAddress, NETIF_MAX_HWADDR_LEN); NANOCLR_NOCLEANUP(); diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp index 4f0367d8fe..18c9106d58 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp @@ -6,40 +6,48 @@ #include "sys_net_native.h" -HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::GetWireless82011ConfigurationCount___STATIC__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration:: + GetWireless82011ConfigurationCount___STATIC__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); // grab the count right from the structure - stack.SetResult_I4(g_TargetConfiguration.Wireless80211Configs->Count); + stack.SetResult_I4(g_TargetConfiguration.Wireless80211Configs->Count); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::GetWireless82011Configuration___STATIC__SystemNetNetworkInformationWireless80211Configuration__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration:: + GetWireless82011Configuration___STATIC__SystemNetNetworkInformationWireless80211Configuration__I4( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); - HAL_Configuration_Wireless80211 config; - CLR_RT_HeapBlock* pConfig; - CLR_UINT32 configurationIndex = stack.Arg0().NumericByRef().u4; - CLR_RT_HeapBlock& top = stack.PushValueAndClear(); + HAL_Configuration_Wireless80211 config; + CLR_RT_HeapBlock *pConfig; + CLR_UINT32 configurationIndex = stack.Arg0().NumericByRef().u4; + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CLEAR(config); - + // load wireless 802.11 configuration from the storage - if(!ConfigurationManager_GetConfigurationBlock((void*)&config, DeviceConfigurationOption_Wireless80211Network, configurationIndex)) + if (!ConfigurationManager_GetConfigurationBlock( + (void *)&config, + DeviceConfigurationOption_Wireless80211Network, + configurationIndex)) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } // create new object for configuration - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Wireless80211Configuration)); - + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Wireless80211Configuration)); + // load from stack - pConfig = top.Dereference(); FAULT_ON_NULL(pConfig); + pConfig = top.Dereference(); + FAULT_ON_NULL(pConfig); // fill in fields from config struct pConfig[FIELD___id].SetInteger((CLR_UINT32)config.Id); @@ -48,28 +56,31 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config pConfig[FIELD___radio].SetInteger((CLR_UINT32)config.Radio); pConfig[FIELD___options].SetInteger((CLR_UINT8)config.Options); - // the following ones are strings so a simple assignment isn't enough, need to create a managed string instance and copy over - // make sure the terminators are there + // the following ones are strings so a simple assignment isn't enough, need to create a managed string instance and + // copy over make sure the terminators are there config.Password[WIRELESS82011_CONFIG_MAX_PASSWORD_LEN - 1] = 0; config.Ssid[WIRELESS82011_CONFIG_MAX_SSID_LEN - 1] = 0; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___password], (const char*)config.Password)); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___ssid], (const char*)config.Ssid)); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___password], (const char *)config.Password)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___ssid], (const char *)config.Ssid)); NANOCLR_NOCLEANUP(); } -HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::UpdateConfiguration___STATIC__VOID( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration:: + UpdateConfiguration___STATIC__VOID(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); - HAL_Configuration_Wireless80211 config; - CLR_RT_HeapBlock* pConfig = stack.Arg0().Dereference(); _ASSERTE(pConfig != NULL); - + HAL_Configuration_Wireless80211 config; + CLR_RT_HeapBlock *pConfig = stack.Arg0().Dereference(); + _ASSERTE(pConfig != NULL); + CLR_UINT32 configurationIndex = pConfig[FIELD___configurationIndex].NumericByRefConst().u4; - CLR_RT_HeapBlock_String* hbPassword = NULL; - CLR_RT_HeapBlock_String* hbSsid = NULL; + CLR_RT_HeapBlock_String *hbPassword = NULL; + CLR_RT_HeapBlock_String *hbSsid = NULL; CLR_UINT32 ssidLength; CLR_UINT32 passwordLength; @@ -80,21 +91,32 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config config.Encryption = (EncryptionType)pConfig[FIELD___encryption].NumericByRef().u4; config.Radio = (RadioType)pConfig[FIELD___radio].NumericByRef().u4; config.Options = (Wireless80211Configuration_ConfigurationOptions)pConfig[FIELD___options].NumericByRef().u1; - + // the following ones are strings // make sure the terminators are there - hbPassword = pConfig[FIELD___password].DereferenceString(); FAULT_ON_NULL(hbPassword); + hbPassword = pConfig[FIELD___password].DereferenceString(); + FAULT_ON_NULL(hbPassword); passwordLength = hal_strlen_s(hbPassword->StringText()); - if (passwordLength >= sizeof(config.Password)) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - hal_strncpy_s((char*)config.Password, WIRELESS82011_CONFIG_MAX_PASSWORD_LEN, hbPassword->StringText(), passwordLength); - - hbSsid = pConfig[FIELD___ssid].DereferenceString(); FAULT_ON_NULL(hbSsid); + if (passwordLength >= sizeof(config.Password)) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + hal_strncpy_s( + (char *)config.Password, + WIRELESS82011_CONFIG_MAX_PASSWORD_LEN, + hbPassword->StringText(), + passwordLength); + + hbSsid = pConfig[FIELD___ssid].DereferenceString(); + FAULT_ON_NULL(hbSsid); ssidLength = hal_strlen_s(hbSsid->StringText()); - if (ssidLength >= sizeof(config.Ssid)) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - hal_strncpy_s((char*)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); + if (ssidLength >= sizeof(config.Ssid)) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + hal_strncpy_s((char *)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); // store configuration - if(ConfigurationManager_UpdateConfigurationBlock(&config, DeviceConfigurationOption_Wireless80211Network, configurationIndex) != TRUE) + if (ConfigurationManager_UpdateConfigurationBlock( + &config, + DeviceConfigurationOption_Wireless80211Network, + configurationIndex) != TRUE) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp index 972c2c9cdf..95bf65453b 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp @@ -6,50 +6,57 @@ #include "sys_net_native.h" - -HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::GetWirelessAPConfigurationCount___STATIC__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration:: + GetWirelessAPConfigurationCount___STATIC__I4(CLR_RT_StackFrame &stack) { #ifdef PLATFORM_ESP32 - NATIVE_PROFILE_CLR_NETWORK(); + NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); // grab the count right from the structure - stack.SetResult_I4(g_TargetConfiguration.WirelessAPConfigs->Count); + stack.SetResult_I4(g_TargetConfiguration.WirelessAPConfigs->Count); NANOCLR_NOCLEANUP_NOLABEL(); #else - NANOCLR_HEADER(); + NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #endif } -HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::GetWirelessAPConfiguration___STATIC__SystemNetNetworkInformationWirelessAPConfiguration__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration:: + GetWirelessAPConfiguration___STATIC__SystemNetNetworkInformationWirelessAPConfiguration__I4( + CLR_RT_StackFrame &stack) { #ifdef PLATFORM_ESP32 - NATIVE_PROFILE_CLR_NETWORK(); + NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); - HAL_Configuration_WirelessAP config; - CLR_RT_HeapBlock* pConfig; - CLR_UINT32 configurationIndex = stack.Arg0().NumericByRef().u4; - CLR_RT_HeapBlock& top = stack.PushValueAndClear(); + HAL_Configuration_WirelessAP config; + CLR_RT_HeapBlock *pConfig; + CLR_UINT32 configurationIndex = stack.Arg0().NumericByRef().u4; + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CLEAR(config); - + // load wireless AP configuration from the storage - if(!ConfigurationManager_GetConfigurationBlock((void*)&config, DeviceConfigurationOption_WirelessNetworkAP, configurationIndex)) + if (!ConfigurationManager_GetConfigurationBlock( + (void *)&config, + DeviceConfigurationOption_WirelessNetworkAP, + configurationIndex)) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } // create new object for configuration - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_WirelessAPConfiguration)); - + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.WirelessAPConfiguration)); + // load from stack - pConfig = top.Dereference(); FAULT_ON_NULL(pConfig); + pConfig = top.Dereference(); + FAULT_ON_NULL(pConfig); // fill in fields from config struct pConfig[FIELD___apId].SetInteger((CLR_UINT32)config.Id); @@ -59,37 +66,40 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfigura pConfig[FIELD___options].SetInteger((CLR_UINT8)config.Options); pConfig[FIELD___apChannel].SetInteger((CLR_UINT8)config.Channel); pConfig[FIELD___apMaxConnections].SetInteger((CLR_UINT8)config.MaxConnections); - - // the following ones are strings so a simple assignment isn't enough, need to create a managed string instance and copy over - // make sure the terminators are there + + // the following ones are strings so a simple assignment isn't enough, need to create a managed string instance and + // copy over make sure the terminators are there config.Password[WIRELESS82011_CONFIG_MAX_PASSWORD_LEN - 1] = 0; config.Ssid[WIRELESS82011_CONFIG_MAX_SSID_LEN - 1] = 0; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___apPassword], (const char*)config.Password)); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___apSsid], (const char*)config.Ssid)); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___apPassword], (const char *)config.Password)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(pConfig[FIELD___apSsid], (const char *)config.Ssid)); NANOCLR_NOCLEANUP(); #else - NANOCLR_HEADER(); + NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #endif } -HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::UpdateConfiguration___STATIC__VOID( CLR_RT_StackFrame& stack ) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration:: + UpdateConfiguration___STATIC__VOID(CLR_RT_StackFrame &stack) { #ifdef PLATFORM_ESP32 - NATIVE_PROFILE_CLR_NETWORK(); + NATIVE_PROFILE_CLR_NETWORK(); NANOCLR_HEADER(); - HAL_Configuration_WirelessAP config; - CLR_RT_HeapBlock* pConfig = stack.Arg0().Dereference(); _ASSERTE(pConfig != NULL); - + HAL_Configuration_WirelessAP config; + CLR_RT_HeapBlock *pConfig = stack.Arg0().Dereference(); + _ASSERTE(pConfig != NULL); + CLR_UINT32 configurationIndex = pConfig[FIELD___apConfigurationIndex].NumericByRefConst().u4; - CLR_RT_HeapBlock_String* hbPassword = NULL; - CLR_RT_HeapBlock_String* hbSsid = NULL; + CLR_RT_HeapBlock_String *hbPassword = NULL; + CLR_RT_HeapBlock_String *hbSsid = NULL; CLR_UINT32 ssidLength; CLR_UINT32 passwordLength; @@ -105,131 +115,154 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfigura // the following ones are strings // make sure the terminators are there - hbPassword = pConfig[FIELD___apPassword].DereferenceString(); FAULT_ON_NULL(hbPassword); + hbPassword = pConfig[FIELD___apPassword].DereferenceString(); + FAULT_ON_NULL(hbPassword); passwordLength = hal_strlen_s(hbPassword->StringText()); - if (passwordLength >= sizeof(config.Password)) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - hal_strncpy_s((char*)config.Password, WIRELESS82011_CONFIG_MAX_PASSWORD_LEN, hbPassword->StringText(), passwordLength); - - hbSsid = pConfig[FIELD___apSsid].DereferenceString(); FAULT_ON_NULL(hbSsid); + if (passwordLength >= sizeof(config.Password)) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + hal_strncpy_s( + (char *)config.Password, + WIRELESS82011_CONFIG_MAX_PASSWORD_LEN, + hbPassword->StringText(), + passwordLength); + + hbSsid = pConfig[FIELD___apSsid].DereferenceString(); + FAULT_ON_NULL(hbSsid); ssidLength = hal_strlen_s(hbSsid->StringText()); - if (ssidLength >= sizeof(config.Ssid)) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - hal_strncpy_s((char*)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); + if (ssidLength >= sizeof(config.Ssid)) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + hal_strncpy_s((char *)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); // store configuration - if(ConfigurationManager_UpdateConfigurationBlock(&config, DeviceConfigurationOption_WirelessNetworkAP, configurationIndex) != TRUE) + if (ConfigurationManager_UpdateConfigurationBlock( + &config, + DeviceConfigurationOption_WirelessNetworkAP, + configurationIndex) != TRUE) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } NANOCLR_NOCLEANUP(); #else - NANOCLR_HEADER(); + NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #endif } - -HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::NativeGetConnectedClients___STATIC__SZARRAY_SystemNetNetworkInformationWirelessAPStation__I4(CLR_RT_StackFrame& stack) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration:: + NativeGetConnectedClients___STATIC__SZARRAY_SystemNetNetworkInformationWirelessAPStation__I4( + CLR_RT_StackFrame &stack) { #ifdef PLATFORM_ESP32 - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index apStationTypeDef; - CLR_RT_HeapBlock* apStation; - CLR_RT_HeapBlock* hbObj; - - uint16_t stationCount = 0; - - uint8_t mac[6]; - uint8_t rssi; - uint32_t phyModes = 0; - - CLR_RT_HeapBlock& top = stack.PushValue(); - - // Get index of station info required or if index == 0 then return all connected stations - uint16_t index = (uint16_t)stack.Arg0().NumericByRef().u4; - - - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("WirelessAPStation", "System.Net.NetworkInformation", apStationTypeDef); - - // Count stations connected - for (int x = 0; x < Network_Interface_Max_Stations(); x++) - { - if (index != 0 && x != index) continue; + NANOCLR_HEADER(); - if (Network_Interface_Get_Station(x, mac, &rssi, &phyModes)) - { - stationCount++; - } - } + CLR_RT_TypeDef_Index apStationTypeDef; + CLR_RT_HeapBlock *apStation; + CLR_RT_HeapBlock *hbObj; - // Create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, stationCount, apStationTypeDef)); + uint16_t stationCount = 0; - // get a pointer to the first object in the array (which is of type ) - apStation = (CLR_RT_HeapBlock*)top.DereferenceArray()->GetFirstElement(); + uint8_t mac[6]; + uint8_t rssi; + uint32_t phyModes = 0; - // Create Array - if (stationCount > 0) - { - for (int x = 0; x < Network_Interface_Max_Stations(); x++) - { - if (index != 0 && x != index) continue; + CLR_RT_HeapBlock &top = stack.PushValue(); - if (Network_Interface_Get_Station(x, mac, &rssi, &phyModes)) - { - // create an instance of - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*apStation, apStationTypeDef)); + // Get index of station info required or if index == 0 then return all connected stations + uint16_t index = (uint16_t)stack.Arg0().NumericByRef().u4; - // dereference the object in order to reach its fields - hbObj = apStation->Dereference(); + // find type, don't bother checking the result as it exists for sure + g_CLR_RT_TypeSystem.FindTypeDef("WirelessAPStation", "System.Net.NetworkInformation", apStationTypeDef); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___macAddress], 6, g_CLR_RT_WellKnownTypes.m_UInt8)); - memcpy(hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___macAddress].DereferenceArray()->GetFirstElement(), mac, 6); + // Count stations connected + for (int x = 0; x < Network_Interface_Max_Stations(); x++) + { + if (index != 0 && x != index) + continue; + if (Network_Interface_Get_Station(x, mac, &rssi, &phyModes)) + { + stationCount++; + } + } - CLR_RT_HeapBlock& rssiFieldRef = hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___rssi]; - CLR_INT8* pRes2 = (CLR_INT8*)&rssiFieldRef.NumericByRef().s1; - *pRes2 = rssi; + // Create an array of + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, stationCount, apStationTypeDef)); - CLR_RT_HeapBlock& phyModesFieldRef = hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___phyModes]; - CLR_INT32* pRes3 = (CLR_INT32*)&phyModesFieldRef.NumericByRef().s4; - *pRes3 = phyModes; + // get a pointer to the first object in the array (which is of type ) + apStation = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); - apStation++; - } - } - } + // Create Array + if (stationCount > 0) + { + for (int x = 0; x < Network_Interface_Max_Stations(); x++) + { + if (index != 0 && x != index) + continue; + + if (Network_Interface_Get_Station(x, mac, &rssi, &phyModes)) + { + // create an instance of + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*apStation, apStationTypeDef)); + + // dereference the object in order to reach its fields + hbObj = apStation->Dereference(); + + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( + hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___macAddress], + 6, + g_CLR_RT_WellKnownTypes.UInt8)); + memcpy( + hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___macAddress] + .DereferenceArray() + ->GetFirstElement(), + mac, + 6); + + CLR_RT_HeapBlock &rssiFieldRef = + hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___rssi]; + CLR_INT8 *pRes2 = (CLR_INT8 *)&rssiFieldRef.NumericByRef().s1; + *pRes2 = rssi; + + CLR_RT_HeapBlock &phyModesFieldRef = + hbObj[Library_sys_net_native_System_Net_NetworkInformation_WirelessAPStation::FIELD___phyModes]; + CLR_INT32 *pRes3 = (CLR_INT32 *)&phyModesFieldRef.NumericByRef().s4; + *pRes3 = phyModes; + + apStation++; + } + } + } - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #else - NANOCLR_HEADER(); + NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #endif } -HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::NativeDeauthStation___STATIC__STRING__I4(CLR_RT_StackFrame& stack) +HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration:: + NativeDeauthStation___STATIC__STRING__I4(CLR_RT_StackFrame &stack) { #ifdef PLATFORM_ESP32 - NANOCLR_HEADER(); + NANOCLR_HEADER(); - uint16_t index = (uint16_t)stack.Arg0().NumericByRef().u4; - - Network_Interface_Deauth_Station(index); + uint16_t index = (uint16_t)stack.Arg0().NumericByRef().u4; - NANOCLR_NOCLEANUP_NOLABEL(); + Network_Interface_Deauth_Station(index); + + NANOCLR_NOCLEANUP_NOLABEL(); #else - NANOCLR_HEADER(); + NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP(); #endif } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp index 256177d366..c946530d4c 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp @@ -552,7 +552,7 @@ void Library_sys_net_native_System_Net_Security_SslNative::ThrowError(CLR_RT_Sta if ((Library_corlib_native_System_Exception::CreateInstance( res, - g_CLR_RT_WellKnownTypes.m_SocketException, + g_CLR_RT_WellKnownTypes.SocketException, CLR_E_FAIL, &stack)) == S_OK) { diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp index 58666f9eed..ada985db87 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp @@ -244,7 +244,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( *pAddress, (CLR_UINT32)addrT->ai_addrlen, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); // copy address. memcpy(pAddress->DereferenceArray()->GetFirstElement(), addrT->ai_addr, addrT->ai_addrlen); @@ -260,7 +260,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: idx.kind = REFLECTION_TYPE; idx.levels = 2; - idx.data.type.data = g_CLR_RT_WellKnownTypes.m_UInt8.data; + idx.data.type.data = g_CLR_RT_WellKnownTypes.UInt8.data; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(hbAddresses, cAddresses, idx)); @@ -890,7 +890,7 @@ void Library_sys_net_native_System_Net_Sockets_NativeSocket::ThrowError(CLR_RT_S if ((Library_corlib_native_System_Exception::CreateInstance( res, - g_CLR_RT_WellKnownTypes.m_SocketException, + g_CLR_RT_WellKnownTypes.SocketException, CLR_E_FAIL, &stack)) == S_OK) { diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp index 82845de08b..69e0b55e1b 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp @@ -842,7 +842,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Bitmap::GetBitmap___SZAR } NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(array, bm.GetTotalSize(), g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(array, bm.GetTotalSize(), g_CLR_RT_WellKnownTypes.UInt8)); imageDataHB = array.DereferenceArray(); FAULT_ON_NULL(imageDataHB); diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp index 342810f0be..aeccdbfca1 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp @@ -25,7 +25,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor:: CLR_RT_HeapBlock &resultObject = stack.PushValue(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(resultObject, g_CLR_RT_WellKnownTypes.m_TouchEvent)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(resultObject, g_CLR_RT_WellKnownTypes.TouchEvent)); touchEvent = resultObject.Dereference(); if (!touchEvent) @@ -46,7 +46,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( touchEvent[Library_nanoFramework_Graphics_nanoFramework_UI_TouchEvent::FIELD__Touches], numTouches, - g_CLR_RT_WellKnownTypes.m_TouchInput)); + g_CLR_RT_WellKnownTypes.TouchInput)); touchInputArray = touchEvent[Library_nanoFramework_Graphics_nanoFramework_UI_TouchEvent::FIELD__Touches].DereferenceArray(); @@ -59,7 +59,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor:: touchInputObject = (CLR_RT_HeapBlock *)touchInputArray->GetFirstElement(); for (; numTouches > 0; --numTouches, touchInputObject++, touchPoint++) { - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*touchInputObject, g_CLR_RT_WellKnownTypes.m_TouchInput); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*touchInputObject, g_CLR_RT_WellKnownTypes.TouchInput); CLR_RT_HeapBlock *touchInput = touchInputObject->Dereference(); if (!touchInput) { diff --git a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp index 785bece01f..3a8d96258b 100644 --- a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp +++ b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp @@ -58,8 +58,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO case CLR_RECORD_RESOURCE::RESOURCE_Binary: { - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, size, g_CLR_RT_WellKnownTypes.m_UInt8)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, size, g_CLR_RT_WellKnownTypes.UInt8)); memcpy(top.DereferenceArray()->GetFirstElement(), buf, size); } @@ -71,8 +70,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO { CLR_RT_HeapBlock *ptr; - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Bitmap)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Bitmap)); ptr = top.Dereference(); @@ -85,7 +83,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO { CLR_RT_HeapBlock *ptr; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Font)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Font)); ptr = top.Dereference(); @@ -171,7 +169,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO } NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, length, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(top, length, g_CLR_RT_WellKnownTypes.UInt8)); memcpy(top.DereferenceArray()->GetFirstElement(), buf + offset, length); } diff --git a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp index 29a9636aac..f13cdd1953 100644 --- a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp +++ b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp @@ -20,7 +20,7 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___SZARRAY_U1__ str = stack.Arg1().RecoverString(); FAULT_ON_NULL(str); cBytes = hal_strlen_s(str); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ret, (CLR_UINT32)cBytes, g_CLR_RT_WellKnownTypes.m_UInt8 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ret, (CLR_UINT32)cBytes, g_CLR_RT_WellKnownTypes.UInt8 )); arr = ret.DereferenceArray(); @@ -115,7 +115,7 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT cBytesCopy = byteCnt+1; /* Copy the array to a temporary buffer to create a zero-terminated string */ - NANOCLR_CHECK_HRESULT( CLR_RT_HeapBlock_Array::CreateInstance( ref, cBytesCopy, g_CLR_RT_WellKnownTypes.m_UInt8 )); + NANOCLR_CHECK_HRESULT( CLR_RT_HeapBlock_Array::CreateInstance( ref, cBytesCopy, g_CLR_RT_WellKnownTypes.UInt8 )); pArrayBytesCopy = ref.DereferenceArray(); szText = (const char*)pArrayBytesCopy->GetFirstElement(); diff --git a/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index b8cb704284..7d15cdf893 100644 --- a/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -288,8 +288,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: i2c_cmd_link_delete(cmd); // create return object - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp b/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp index 382be93810..47bc5b2746 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp @@ -295,7 +295,7 @@ HRESULT Library_sys_dev_wifi_native_System_Device_Wifi_WifiAdapter::GetNativeSca rlen = StoreApRecordsToString(0, ap_records, number); } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, rlen, g_CLR_RT_WellKnownTypes.m_UInt8)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, rlen, g_CLR_RT_WellKnownTypes.UInt8)); array = top.DereferenceArray(); buf = array->GetFirstElement(); @@ -351,7 +351,7 @@ HRESULT Library_sys_dev_wifi_native_System_Device_Wifi_WifiAdapter::NativeFindWi } // build array with indexes of Wireless interfaces - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, interfaceCount, g_CLR_RT_WellKnownTypes.m_UInt8)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, interfaceCount, g_CLR_RT_WellKnownTypes.UInt8)); array = top.DereferenceArray(); arrayOfIndexes = array->GetFirstElement(); diff --git a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp index a14fd447c5..182345e9ef 100644 --- a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp +++ b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp @@ -317,7 +317,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::GetFilesNative___STATI NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( folderArrayPaths, (CLR_UINT32)fileCount, - g_CLR_RT_WellKnownTypes.m_String)); + g_CLR_RT_WellKnownTypes.String)); if (fileCount > 0) { @@ -361,7 +361,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::GetDirectoriesNative__ // create an array of files paths of directoryCount NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(folderArrayPaths, directoryCount, g_CLR_RT_WellKnownTypes.m_String)); + CLR_RT_HeapBlock_Array::CreateInstance(folderArrayPaths, directoryCount, g_CLR_RT_WellKnownTypes.String)); if (directoryCount > 0) { @@ -437,7 +437,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::GetLogicalDrivesNative NANOCLR_CHECK_HRESULT(EnumerateDrives(NULL, count)); // create an array of files paths for count drives - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.m_String)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.String)); // 2nd pass fill array with drives NANOCLR_CHECK_HRESULT(EnumerateDrives(&top, count)); @@ -474,7 +474,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::GetLastWriteTimeNative fileInfoTime = GetDateTimeFromStat(&fileInfo.st_mtime); // initialize type descriptor - NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.m_DateTime)); + NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime)); // create an instance of NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls)); diff --git a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp index 958377968b..179cf40b45 100644 --- a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp +++ b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp @@ -358,7 +358,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_File::GetLastWriteTimeNative___ST fileInfoTime = GetDateTimeFromStat(&(fileInfo.st_mtime)); // initialize type descriptor - NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.m_DateTime)); + NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime)); // create an instance of NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls)); diff --git a/targets/ESP32/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp b/targets/ESP32/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp index d4a4de9ef6..a4ca9d67f6 100644 --- a/targets/ESP32/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp +++ b/targets/ESP32/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp @@ -501,7 +501,7 @@ HRESULT Library_win_storage_native_Windows_Storage_FileIO:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( buffer, (CLR_INT32)fileStat.st_size, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); // store this to the argument passed byref NANOCLR_CHECK_HRESULT(buffer.StoreToReference(stack.Arg1(), 0)); From e6917eeace94599518c4a188fb5e62fc3e50fe42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 02:03:01 +0100 Subject: [PATCH 048/168] Replace NULL with nullptr in cpp files --- src/CLR/CorLib/corlib_native.cpp | 2038 ++++++++--------- .../CorLib/corlib_native_System_AppDomain.cpp | 19 +- .../corlib_native_System_BitConverter.cpp | 20 +- .../CorLib/corlib_native_System_Convert.cpp | 55 +- .../CorLib/corlib_native_System_DateTime.cpp | 182 +- .../CorLib/corlib_native_System_Delegate.cpp | 115 +- .../CorLib/corlib_native_System_Exception.cpp | 12 +- src/CLR/CorLib/corlib_native_System_GC.cpp | 30 +- .../CorLib/corlib_native_System_Number.cpp | 2 +- .../CorLib/corlib_native_System_Random.cpp | 90 +- ...rlib_native_System_Reflection_Assembly.cpp | 13 +- ...tive_System_Reflection_ConstructorInfo.cpp | 4 +- ...lib_native_System_Reflection_FieldInfo.cpp | 143 +- ...ib_native_System_Reflection_MethodBase.cpp | 4 +- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 100 +- ...ve_System_Reflection_RuntimeMethodInfo.cpp | 56 +- .../corlib_native_System_RuntimeType.cpp | 22 +- .../CorLib/corlib_native_System_String.cpp | 756 +++--- ...corlib_native_System_Threading_Monitor.cpp | 47 +- .../corlib_native_System_Threading_Thread.cpp | 16 +- .../CorLib/corlib_native_System_TimeSpan.cpp | 7 +- src/CLR/CorLib/corlib_native_System_Type.cpp | 45 +- .../corlib_native_System_WeakReference.cpp | 14 +- src/CLR/Core/CLR_RT_DblLinkedList.cpp | 43 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 22 +- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 8 +- src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp | 159 +- src/CLR/Core/CLR_RT_HeapBlock_BinaryBlob.cpp | 50 +- src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp | 44 +- .../Core/CLR_RT_HeapBlock_Delegate_List.cpp | 166 +- .../Core/CLR_RT_HeapBlock_GenericInstance.cpp | 4 +- src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp | 152 +- src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp | 76 +- src/CLR/Core/CLR_RT_HeapBlock_String.cpp | 89 +- src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp | 12 +- .../Core/CLR_RT_HeapBlock_WaitForObject.cpp | 166 +- src/CLR/Core/CLR_RT_HeapCluster.cpp | 14 +- src/CLR/Core/CLR_RT_Interop.cpp | 635 +++-- src/CLR/Core/CLR_RT_Memory.cpp | 13 +- src/CLR/Core/CLR_RT_ObjectToEvent_Source.cpp | 41 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 68 +- src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp | 8 +- src/CLR/Core/CLR_RT_UnicodeHelper.cpp | 12 +- src/CLR/Core/Cache.cpp | 10 +- src/CLR/Core/Checks.cpp | 60 +- src/CLR/Core/Execution.cpp | 233 +- src/CLR/Core/GarbageCollector.cpp | 30 +- src/CLR/Core/GarbageCollector_Compaction.cpp | 285 +-- ...bageCollector_ComputeReachabilityGraph.cpp | 247 +- src/CLR/Core/Interpreter.cpp | 69 +- .../InterruptHandler/InterruptHandler.cpp | 77 +- .../NativeEventDispatcher.cpp | 174 +- .../Core/RPC/CLR_RT_HeapBlock_EndPoint.cpp | 62 +- src/CLR/Core/RPC/RPC_stub.cpp | 22 +- .../Core/Serialization/BinaryFormatter.cpp | 101 +- src/CLR/Core/Streams.cpp | 152 +- src/CLR/Core/Thread.cpp | 288 +-- src/CLR/Core/TypeSystem.cpp | 196 +- src/CLR/Core/Various.cpp | 84 +- src/CLR/Debugger/Debugger.cpp | 234 +- src/CLR/Debugger/Debugger_stub.cpp | 6 +- src/CLR/Diagnostics/Diagnostics_stub.cpp | 6 +- src/CLR/Diagnostics/Info.cpp | 18 +- src/CLR/Diagnostics/Profile.cpp | 16 +- src/CLR/Diagnostics/Profiler.cpp | 30 +- src/CLR/Include/nanoCLR_Interop.h | 2 +- src/CLR/Include/nanoCLR_Runtime.h | 78 +- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 51 +- src/CLR/Include/nanoCLR_Types.h | 8 +- src/CLR/Messaging/Messaging.cpp | 30 +- src/CLR/Startup/CLRStartup.cpp | 14 +- src/CLR/System.Math/nf_native_system_math.cpp | 20 +- .../Network/Enc28j60/enc28j60_lwip_driver.cpp | 18 +- .../Networking.Sntp/nf_networking_sntp.cpp | 2 +- .../System.Net/sys_net_native.cpp | 544 ++--- ...et_NetworkInformation_NetworkInterface.cpp | 2 +- ...Information_Wireless80211Configuration.cpp | 17 +- src/PAL/AsyncProcCall/AsyncCompletions.cpp | 289 ++- src/PAL/AsyncProcCall/AsyncContinuations.cpp | 36 +- .../sys_dev_gpio_native.cpp | 146 +- src/System.IO.Ports/sys_io_ser_native.cpp | 148 +- .../nf_system_runtime_serialization.cpp | 4 +- src/Windows.Storage/win_storage_native.cpp | 144 +- .../Graphics/Core/Graphics.cpp | 2 +- .../nf_system_resourcemanager.cpp | 22 +- ...nager_System_Resources_ResourceManager.cpp | 4 +- .../nf_rt_events_native.cpp | 90 +- ...nanoFramework_Runtime_Events_EventSink.cpp | 6 +- ...k_Runtime_Events_NativeEventDispatcher.cpp | 181 +- .../nf_rt_native.cpp | 26 +- .../nf_system_collections.cpp | 140 +- ...llections_System_Collections_Hashtable.cpp | 28 +- ...ections_Hashtable__HashtableEnumerator.cpp | 4 +- .../nf_system_text.cpp | 138 +- ...f_system_text_System_Text_UTF8Encoding.cpp | 96 +- .../nanoFramework.nanoCLR/CLRStartup.cpp | 18 +- .../Target_BlockStorage.cpp | 100 +- ...rget_BlockStorage_TransientFlashDriver.cpp | 6 +- .../nanoFramework.nanoCLR/nanoCLR_native.cpp | 6 +- .../platform_BlockStorage.cpp | 6 +- targets/win32/nanoCLR/FileStore_Win32.cpp | 8 +- targets/win32/nanoCLR/Memory.cpp | 8 +- .../win32/nanoCLR/PAL/ConfigHelper_stubs.cpp | 6 +- .../nanoCLR/PAL/blockstorageList_stubs.cpp | 4 +- targets/win32/nanoCLR/Various.cpp | 12 +- targets/win32/nanoCLR/base64.cpp | 4 +- targets/win32/nanoCLR/targetPAL_Events.cpp | 4 +- 108 files changed, 5536 insertions(+), 4910 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index e9f461fce1..024d7aad7b 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -10,73 +10,73 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Globalization_CultureInfo::get_CurrentUICultureInternal___STATIC__SystemGlobalizationCultureInfo, Library_corlib_native_System_Globalization_CultureInfo::set_CurrentUICultureInternal___STATIC__VOID__SystemGlobalizationCultureInfo, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJECT__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN, - NULL, + nullptr, Library_corlib_native_System_Type::get_DeclaringType___SystemType, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInfo__STRING__SystemReflectionBindingFlags, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Type::IsInstanceOfType___BOOLEAN__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Type::InvokeMember___OBJECT__STRING__SystemReflectionBindingFlags__SystemReflectionBinder__OBJECT__SZARRAY_OBJECT, Library_corlib_native_System_Type::GetConstructor___SystemReflectionConstructorInfo__SZARRAY_SystemType, Library_corlib_native_System_Type::GetConstructors___SZARRAY_SystemReflectionConstructorInfo, Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInfo__STRING__SZARRAY_SystemType, Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInfo__STRING, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Type::get_IsNotPublic___BOOLEAN, Library_corlib_native_System_Type::get_IsPublic___BOOLEAN, Library_corlib_native_System_Type::get_IsClass___BOOLEAN, @@ -86,36 +86,36 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_Type::get_IsEnum___BOOLEAN, Library_corlib_native_System_Type::get_IsSerializable___BOOLEAN, Library_corlib_native_System_Type::get_IsArray___BOOLEAN, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType__STRING__STRING__BOOLEAN__SZARRAY_I4, Library_corlib_native_System_Type::GetTypeFromHandle___STATIC__SystemType__SystemRuntimeTypeHandle, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Object::Equals___BOOLEAN__OBJECT, Library_corlib_native_System_Object::GetHashCode___I4, - NULL, + nullptr, Library_corlib_native_System_Object::GetType___SystemType, Library_corlib_native_System_Object::MemberwiseClone___OBJECT, - NULL, + nullptr, Library_corlib_native_System_Object::ReferenceEquals___STATIC__BOOLEAN__OBJECT__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::CompareTo___I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_String::get_Chars___CHAR__I4, - NULL, + nullptr, Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR, Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR__I4__I4, Library_corlib_native_System_String::get_Length___I4, @@ -151,115 +151,115 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_String::ToLower___STRING, Library_corlib_native_System_String::ToUpper___STRING, Library_corlib_native_System_String::Trim___STRING, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::op_Equality___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::op_Inequality___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::Compare___STATIC__I4__STRING__STRING, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__SZARRAY_STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Exception::get_StackTrace___STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::System_Collections_IList_get_Item___OBJECT__I4, Library_corlib_native_System_Array::System_Collections_IList_set_Item___VOID__I4__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::get_Length___I4, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Array::CreateInstance___STATIC__SystemArray__SystemType__I4, - NULL, + nullptr, Library_corlib_native_System_Array::Copy___STATIC__VOID__SystemArray__I4__SystemArray__I4__I4, Library_corlib_native_System_Array::Clear___STATIC__VOID__SystemArray__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::TrySzIndexOf___STATIC__BOOLEAN__SystemArray__I4__I4__OBJECT__BYREF_I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_BitConverter::get_IsLittleEndian___STATIC__BOOLEAN, Library_corlib_native_System_BitConverter::DoubleToInt64Bits___STATIC__I8__R8, Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1__BOOLEAN, @@ -286,364 +286,364 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_BitConverter::ToUInt16___STATIC__U2__SZARRAY_U1__I4, Library_corlib_native_System_BitConverter::ToUInt32___STATIC__U4__SZARRAY_U1__I4, Library_corlib_native_System_BitConverter::ToUInt64___STATIC__U8__SZARRAY_U1__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Collections_ArrayList::get_Item___OBJECT__I4, Library_corlib_native_System_Collections_ArrayList::set_Item___VOID__I4__OBJECT, Library_corlib_native_System_Collections_ArrayList::Add___I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Collections_ArrayList::Clear___VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Collections_ArrayList::Insert___VOID__I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Collections_ArrayList::RemoveAt___VOID__I4, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Collections_ArrayList::SetCapacity___VOID__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Double::CompareTo___STATIC__I4__R8__R8, Library_corlib_native_System_Double::IsInfinity___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsNaN___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsNegativeInfinity___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsPositiveInfinity___STATIC__BOOLEAN__R8, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::Equals___BOOLEAN__OBJECT, Library_corlib_native_System_TimeSpan::ToString___STRING, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::CompareTo___I4__OBJECT, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan, Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemTimeSpan__SystemTimeSpan, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_DateTime::_ctor___VOID__I4__I4__I4__I4__I4__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateTimeDateTimePart, - NULL, + nullptr, Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4, - NULL, + nullptr, Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime, Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Convert::NativeToInt64___STATIC__I8__STRING__BOOLEAN__I8__I8__I4__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDouble___STATIC__R8__STRING__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__SZARRAY_U1__I4__I4__BOOLEAN, Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY_U1__STRING, - NULL, + nullptr, Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT, Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_SystemDelegate, Library_corlib_native_System_Delegate::get_Method___SystemReflectionMethodInfo, Library_corlib_native_System_Delegate::get_Target___OBJECT, - NULL, + nullptr, Library_corlib_native_System_Delegate::Combine___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::Remove___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::op_Inequality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Diagnostics_Debug::WriteLineNative___STATIC__VOID__STRING__BOOLEAN, Library_corlib_native_System_Diagnostics_Debugger::get_IsAttached___STATIC__BOOLEAN, Library_corlib_native_System_Diagnostics_Debugger::Break___STATIC__VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING, Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__STRING, - NULL, + nullptr, Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_SystemType, Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYREF_I4__BYREF_I4__BYREF_I4__BYREF_I4, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNames___SZARRAY_STRING, - NULL, + nullptr, Library_corlib_native_System_Reflection_Assembly::GetExecutingAssembly___STATIC__SystemReflectionAssembly, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_Assembly::LoadInternal___STATIC__SystemReflectionAssembly__STRING__BOOLEAN__I4__I4__I4__I4, Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemReflectionAssembly__SZARRAY_U1, - NULL, + nullptr, Library_corlib_native_System_Enum::HasFlag___BOOLEAN__SystemEnum, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, - NULL, + nullptr, Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_MathInternal::Abs___STATIC__I4__I4, Library_corlib_native_System_MathInternal::Min___STATIC__I4__I4__I4, Library_corlib_native_System_MathInternal::Max___STATIC__I4__I4__I4, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_MulticastDelegate::op_Equality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, Library_corlib_native_System_MulticastDelegate::op_Inequality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Number::FormatNative___STATIC__STRING__OBJECT__BOOLEAN__STRING__STRING__STRING__STRING__SZARRAY_I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Random::Next___I4, Library_corlib_native_System_Random::Next___I4__I4, Library_corlib_native_System_Random::NextDouble___R8, Library_corlib_native_System_Random::NextBytes___VOID__SZARRAY_U1, Library_corlib_native_System_Random::_ctor___VOID, Library_corlib_native_System_Random::_ctor___VOID__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_ConstructorInfo::GetCustomAttributes___SZARRAY_OBJECT__BOOLEAN, Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT__SZARRAY_OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_MethodBase::get_Name___STRING, Library_corlib_native_System_Reflection_MethodBase::get_DeclaringType___SystemType, Library_corlib_native_System_Reflection_MethodBase::get_IsPublic___BOOLEAN, @@ -653,82 +653,82 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_Reflection_MethodBase::get_IsAbstract___BOOLEAN, Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJECT__SZARRAY_OBJECT, Library_corlib_native_System_Reflection_MethodBase::GetParametersNative___SZARRAY_SystemReflectionParameterInfo, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_PropertyInfo::GetValue___OBJECT__OBJECT__SZARRAY_OBJECT, Library_corlib_native_System_Reflection_PropertyInfo::SetValue___VOID__OBJECT__OBJECT__SZARRAY_OBJECT, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STRING, Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_DeclaringType___SystemType, Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_FieldType___SystemType, Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJECT__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnType___SystemType, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::InitializeArray___STATIC__VOID__SystemArray__SystemRuntimeFieldHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::GetObjectValue___STATIC__OBJECT__OBJECT, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::RunClassConstructor___STATIC__VOID__SystemRuntimeTypeHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::get_OffsetToStringData___STATIC__I4, Library_corlib_native_System_Runtime_Remoting_RemotingServices::IsTransparentProxy___STATIC__BOOLEAN__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_RuntimeType::get_Assembly___SystemReflectionAssembly, Library_corlib_native_System_RuntimeType::get_Name___STRING, Library_corlib_native_System_RuntimeType::get_FullName___STRING, - NULL, + nullptr, Library_corlib_native_System_RuntimeType::get_BaseType___SystemType, Library_corlib_native_System_RuntimeType::GetMethods___SZARRAY_SystemReflectionMethodInfo__SystemReflectionBindingFlags, Library_corlib_native_System_RuntimeType::GetField___SystemReflectionFieldInfo__STRING__SystemReflectionBindingFlags, Library_corlib_native_System_RuntimeType::GetFields___SZARRAY_SystemReflectionFieldInfo__SystemReflectionBindingFlags, Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_SystemType, Library_corlib_native_System_RuntimeType::GetElementType___SystemType, - NULL, + nullptr, Library_corlib_native_System_RuntimeType::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_AutoResetEvent::_ctor___VOID__BOOLEAN, Library_corlib_native_System_Threading_AutoResetEvent::Reset___BOOLEAN, Library_corlib_native_System_Threading_AutoResetEvent::Set___BOOLEAN, @@ -758,50 +758,50 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_Threading_Thread::Join___BOOLEAN__SystemTimeSpan, Library_corlib_native_System_Threading_Thread::get_ThreadState___SystemThreadingThreadState, Library_corlib_native_System_Threading_Thread::Sleep___STATIC__VOID__I4, - NULL, + nullptr, Library_corlib_native_System_Threading_Thread::SpinWait___STATIC__VOID__I4, Library_corlib_native_System_Threading_Thread::get_CurrentThread___STATIC__SystemThreadingThread, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_Timer::Dispose___VOID, Library_corlib_native_System_Threading_Timer::_ctor___VOID__SystemThreadingTimerCallback__OBJECT__I4__I4, Library_corlib_native_System_Threading_Timer::_ctor___VOID__SystemThreadingTimerCallback__OBJECT__SystemTimeSpan__SystemTimeSpan, Library_corlib_native_System_Threading_Timer::Change___BOOLEAN__I4__I4, Library_corlib_native_System_Threading_Timer::Change___BOOLEAN__SystemTimeSpan__SystemTimeSpan, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_WaitHandle::WaitOne___BOOLEAN__I4__BOOLEAN, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Threading_WaitHandle::WaitMultiple___STATIC__I4__SZARRAY_SystemThreadingWaitHandle__I4__BOOLEAN__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_WeakReference::get_IsAlive___BOOLEAN, Library_corlib_native_System_WeakReference::get_Target___OBJECT, Library_corlib_native_System_WeakReference::set_Target___VOID__OBJECT, @@ -812,63 +812,63 @@ static const CLR_RT_MethodHandler method_lookup[] = static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Globalization_CultureInfo::get_CurrentUICultureInternal___STATIC__SystemGlobalizationCultureInfo, Library_corlib_native_System_Globalization_CultureInfo::set_CurrentUICultureInternal___STATIC__VOID__SystemGlobalizationCultureInfo, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Object::Equals___BOOLEAN__OBJECT, Library_corlib_native_System_Object::GetHashCode___I4, - NULL, + nullptr, Library_corlib_native_System_Object::MemberwiseClone___OBJECT, - NULL, + nullptr, Library_corlib_native_System_Object::ReferenceEquals___STATIC__BOOLEAN__OBJECT__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::CompareTo___I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_String::get_Chars___CHAR__I4, - NULL, + nullptr, Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR, Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR__I4__I4, Library_corlib_native_System_String::get_Length___I4, @@ -904,112 +904,112 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_String::ToLower___STRING, Library_corlib_native_System_String::ToUpper___STRING, Library_corlib_native_System_String::Trim___STRING, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::op_Equality___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::op_Inequality___STATIC__BOOLEAN__STRING__STRING, Library_corlib_native_System_String::Compare___STATIC__I4__STRING__STRING, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING__STRING, Library_corlib_native_System_String::Concat___STATIC__STRING__SZARRAY_STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Exception::get_StackTrace___STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::System_Collections_IList_get_Item___OBJECT__I4, Library_corlib_native_System_Array::System_Collections_IList_set_Item___VOID__I4__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::get_Length___I4, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::Copy___STATIC__VOID__SystemArray__I4__SystemArray__I4__I4, Library_corlib_native_System_Array::Clear___STATIC__VOID__SystemArray__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::TrySzIndexOf___STATIC__BOOLEAN__SystemArray__I4__I4__OBJECT__BYREF_I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_BitConverter::get_IsLittleEndian___STATIC__BOOLEAN, Library_corlib_native_System_BitConverter::DoubleToInt64Bits___STATIC__I8__R8, Library_corlib_native_System_BitConverter::GetBytes___STATIC__SZARRAY_U1__BOOLEAN, @@ -1036,363 +1036,363 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_BitConverter::ToUInt16___STATIC__U2__SZARRAY_U1__I4, Library_corlib_native_System_BitConverter::ToUInt32___STATIC__U4__SZARRAY_U1__I4, Library_corlib_native_System_BitConverter::ToUInt64___STATIC__U8__SZARRAY_U1__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Collections_ArrayList::get_Item___OBJECT__I4, Library_corlib_native_System_Collections_ArrayList::set_Item___VOID__I4__OBJECT, Library_corlib_native_System_Collections_ArrayList::Add___I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Collections_ArrayList::Clear___VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Collections_ArrayList::Insert___VOID__I4__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Collections_ArrayList::RemoveAt___VOID__I4, - NULL, + nullptr, Library_corlib_native_System_Collections_ArrayList::SetCapacity___VOID__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Double::CompareTo___STATIC__I4__R8__R8, Library_corlib_native_System_Double::IsInfinity___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsNaN___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsNegativeInfinity___STATIC__BOOLEAN__R8, Library_corlib_native_System_Double::IsPositiveInfinity___STATIC__BOOLEAN__R8, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::Equals___BOOLEAN__OBJECT, Library_corlib_native_System_TimeSpan::ToString___STRING, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4, Library_corlib_native_System_TimeSpan::_ctor___VOID__I4__I4__I4__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::CompareTo___I4__OBJECT, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_TimeSpan::Compare___STATIC__I4__SystemTimeSpan__SystemTimeSpan, Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemTimeSpan__SystemTimeSpan, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_DateTime::_ctor___VOID__I4__I4__I4__I4__I4__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateTimeDateTimePart, - NULL, + nullptr, Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4, - NULL, + nullptr, Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime, Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Convert::NativeToInt64___STATIC__I8__STRING__BOOLEAN__I8__I8__I4__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDouble___STATIC__R8__STRING__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__SZARRAY_U1__I4__I4__BOOLEAN, Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY_U1__STRING, - NULL, + nullptr, Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT, - NULL, + nullptr, Library_corlib_native_System_Delegate::Combine___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::Remove___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate, Library_corlib_native_System_Delegate::op_Inequality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Diagnostics_Debug::WriteLineNative___STATIC__VOID__STRING__BOOLEAN, Library_corlib_native_System_Diagnostics_Debugger::get_IsAttached___STATIC__BOOLEAN, Library_corlib_native_System_Diagnostics_Debugger::Break___STATIC__VOID, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Enum::HasFlag___BOOLEAN__SystemEnum, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, - NULL, + nullptr, Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_MathInternal::Abs___STATIC__I4__I4, Library_corlib_native_System_MathInternal::Min___STATIC__I4__I4__I4, Library_corlib_native_System_MathInternal::Max___STATIC__I4__I4__I4, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_MulticastDelegate::op_Equality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, Library_corlib_native_System_MulticastDelegate::op_Inequality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Number::FormatNative___STATIC__STRING__OBJECT__BOOLEAN__STRING__STRING__STRING__STRING__SZARRAY_I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Random::Next___I4, Library_corlib_native_System_Random::Next___I4__I4, Library_corlib_native_System_Random::NextDouble___R8, Library_corlib_native_System_Random::NextBytes___VOID__SZARRAY_U1, Library_corlib_native_System_Random::_ctor___VOID, Library_corlib_native_System_Random::_ctor___VOID__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::InitializeArray___STATIC__VOID__SystemArray__SystemRuntimeFieldHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::GetObjectValue___STATIC__OBJECT__OBJECT, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::RunClassConstructor___STATIC__VOID__SystemRuntimeTypeHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::get_OffsetToStringData___STATIC__I4, Library_corlib_native_System_Runtime_Remoting_RemotingServices::IsTransparentProxy___STATIC__BOOLEAN__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_AutoResetEvent::_ctor___VOID__BOOLEAN, Library_corlib_native_System_Threading_AutoResetEvent::Reset___BOOLEAN, Library_corlib_native_System_Threading_AutoResetEvent::Set___BOOLEAN, @@ -1419,54 +1419,54 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_Threading_Thread::Join___BOOLEAN__SystemTimeSpan, Library_corlib_native_System_Threading_Thread::get_ThreadState___SystemThreadingThreadState, Library_corlib_native_System_Threading_Thread::Sleep___STATIC__VOID__I4, - NULL, + nullptr, Library_corlib_native_System_Threading_Thread::SpinWait___STATIC__VOID__I4, Library_corlib_native_System_Threading_Thread::get_CurrentThread___STATIC__SystemThreadingThread, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_Timer::Dispose___VOID, Library_corlib_native_System_Threading_Timer::_ctor___VOID__SystemThreadingTimerCallback__OBJECT__I4__I4, Library_corlib_native_System_Threading_Timer::_ctor___VOID__SystemThreadingTimerCallback__OBJECT__SystemTimeSpan__SystemTimeSpan, Library_corlib_native_System_Threading_Timer::Change___BOOLEAN__I4__I4, Library_corlib_native_System_Threading_Timer::Change___BOOLEAN__SystemTimeSpan__SystemTimeSpan, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Threading_WaitHandle::WaitOne___BOOLEAN__I4__BOOLEAN, - NULL, - NULL, + nullptr, + nullptr, Library_corlib_native_System_Threading_WaitHandle::WaitMultiple___STATIC__I4__SZARRAY_SystemThreadingWaitHandle__I4__BOOLEAN__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_WeakReference::get_IsAlive___BOOLEAN, Library_corlib_native_System_WeakReference::get_Target___OBJECT, Library_corlib_native_System_WeakReference::set_Target___VOID__OBJECT, diff --git a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp index c529ba3dc8..bc64d416d4 100644 --- a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp +++ b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp @@ -13,7 +13,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_AppDomain *appDomainSav = NULL; + CLR_RT_AppDomain *appDomainSav = nullptr; CLR_RT_AppDomain *appDomain; NANOCLR_CHECK_HRESULT(GetAppDomain(stack.ThisRef(), appDomain, appDomainSav, true)); @@ -71,7 +71,7 @@ HRESULT Library_corlib_native_System_AppDomain:: } else { - assembly = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, NULL, false); + assembly = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, nullptr, false); FAULT_ON_NULL_HR(assembly, CLR_E_INVALID_PARAMETER); } @@ -101,10 +101,10 @@ HRESULT Library_corlib_native_System_AppDomain::CreateDomain___STATIC__SystemApp NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_AppDomain *appDomain = NULL; + CLR_RT_AppDomain *appDomain = nullptr; CLR_RT_HeapBlock &pArgs = stack.Arg0(); CLR_RT_HeapBlock res; - res.SetObjectReference(NULL); + res.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(res); const char *szName; @@ -117,7 +117,7 @@ HRESULT Library_corlib_native_System_AppDomain::CreateDomain___STATIC__SystemApp NANOCLR_CHECK_HRESULT(appDomain->LoadAssembly(g_CLR_RT_TypeSystem.m_assemblyMscorlib)); // load Runtime.Native - if (g_CLR_RT_TypeSystem.m_assemblyNative != NULL) + if (g_CLR_RT_TypeSystem.m_assemblyNative != nullptr) { NANOCLR_CHECK_HRESULT(appDomain->LoadAssembly(g_CLR_RT_TypeSystem.m_assemblyNative)); } @@ -246,7 +246,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAppDomain( NANOCLR_NOCLEANUP(); } -#else //#if defined(NANOCLR_APPDOMAINS) +#else // #if defined(NANOCLR_APPDOMAINS) #if (NANOCLR_REFLECTION == TRUE) @@ -259,7 +259,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe CLR_RT_HeapBlock &top = stack.PushValueAndClear(); int count = 0; - CLR_RT_HeapBlock *pArray = NULL; + CLR_RT_HeapBlock *pArray = nullptr; for (int pass = 0; pass < 2; pass++) { @@ -288,8 +288,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAssemblies___SZARRAY_SystemRe if (pass == 0) { - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.Assembly)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, count, g_CLR_RT_WellKnownTypes.Assembly)); pArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); } @@ -331,4 +330,4 @@ HRESULT Library_corlib_native_System_AppDomain::Unload___STATIC__VOID__SystemApp #endif // NANOCLR_REFLECTION -#endif //#if defined(NANOCLR_APPDOMAINS) +#endif // #if defined(NANOCLR_APPDOMAINS) diff --git a/src/CLR/CorLib/corlib_native_System_BitConverter.cpp b/src/CLR/CorLib/corlib_native_System_BitConverter.cpp index 4e1c519c73..abeae90255 100644 --- a/src/CLR/CorLib/corlib_native_System_BitConverter.cpp +++ b/src/CLR/CorLib/corlib_native_System_BitConverter.cpp @@ -252,7 +252,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToBoolean___STATIC__BOOLEAN__ NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; unsigned char b = 0; int index = 0; bool res = false; @@ -277,7 +277,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToChar___STATIC__CHAR__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; wchar_t value = 0; unsigned char *pValue = (unsigned char *)(&value); @@ -306,7 +306,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToDouble___STATIC__R8__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; double value = 0; @@ -337,7 +337,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToSingle___STATIC__R4__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; float value = 0; unsigned char *pValue = (unsigned char *)(&value); @@ -368,7 +368,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToInt16___STATIC__I2__SZARRAY NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; signed short value = 0; unsigned char *pValue = (unsigned char *)(&value); @@ -398,7 +398,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToInt32___STATIC__I4__SZARRAY NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; signed int value = 0; @@ -429,7 +429,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToInt64___STATIC__I8__SZARRAY NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; CLR_INT64 value = 0; @@ -460,7 +460,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToUInt16___STATIC__U2__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; CLR_UINT16 value = 0; unsigned char *pValue = (unsigned char *)(&value); @@ -489,7 +489,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToUInt32___STATIC__U4__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; CLR_UINT32 value = 0; unsigned char *pValue = (unsigned char *)(&value); @@ -518,7 +518,7 @@ HRESULT Library_corlib_native_System_BitConverter::ToUInt64___STATIC__U8__SZARRA NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - unsigned char *p = NULL; + unsigned char *p = nullptr; int index = 0; CLR_UINT64 value = 0; unsigned char *pValue = (unsigned char *)(&value); diff --git a/src/CLR/CorLib/corlib_native_System_Convert.cpp b/src/CLR/CorLib/corlib_native_System_Convert.cpp index cbcfc93f6b..bc9171afd6 100644 --- a/src/CLR/CorLib/corlib_native_System_Convert.cpp +++ b/src/CLR/CorLib/corlib_native_System_Convert.cpp @@ -58,7 +58,8 @@ HRESULT Library_corlib_native_System_Convert:: { str++; } - endptr = NULL; + + endptr = nullptr; #if (SUPPORT_ANY_BASE_CONVERSION == TRUE) // support for conversion from any base @@ -527,7 +528,7 @@ HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemD CLR_INT64 *pRes; char *str = (char *)stack.Arg0().RecoverString(); - char *conversionResult = NULL; + char *conversionResult = nullptr; // char *str = (char *)"1999-10-31 10:00:00Z"; uint64_t ticks; @@ -549,19 +550,19 @@ HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemD // try 'u' Universal time with sortable format (yyyy-MM-dd' 'HH:mm:ss) conversionResult = Nano_strptime(str, "%Y-%m-%d %H:%M:%SZ", &ticks); - if (conversionResult == NULL) + if (conversionResult == nullptr) { // try 'o/O' Round Trip ISO 8601 compatible (yyyy-MM-ddTHH:mm:ss.fffffff) conversionResult = Nano_strptime(str, "%Y-%m-%dT%H:%M:%S.%f", &ticks); } - if (conversionResult == NULL) + if (conversionResult == nullptr) { // try 'r/R' RFC 1123 date (ddd, dd MMM yyyy HH:mm:ss) conversionResult = Nano_strptime(str, "%a, %d %b %Y %H:%M:%S", &ticks); } - if (conversionResult == NULL) + if (conversionResult == nullptr) { // failed to parse string @@ -595,9 +596,9 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S #if (SUPPORT_ANY_BASE_CONVERSION == TRUE) size_t outputLength; - char *outArray = NULL; - char *outArrayWitLineBreak = NULL; - uint8_t *inArrayPointer = NULL; + char *outArray = nullptr; + char *outArrayWitLineBreak = nullptr; + uint8_t *inArrayPointer = nullptr; uint8_t lineBreakCount; uint16_t offsetIndex = 0; uint8_t count = 0; @@ -620,7 +621,7 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S outArray = (char *)platform_malloc(outputLength + 1); // check if have allocation - if (outArray == NULL) + if (outArray == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -700,7 +701,7 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S // need to free memory from arrays platform_free((void *)outArray); - if (outArrayWitLineBreak != NULL) + if (outArrayWitLineBreak != nullptr) { platform_free((void *)outArrayWitLineBreak); } @@ -720,9 +721,9 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY #if (SUPPORT_ANY_BASE_CONVERSION == TRUE) - CLR_RT_HeapBlock_String *inString = NULL; + CLR_RT_HeapBlock_String *inString = nullptr; size_t outputLength; - char *outArray = NULL; + char *outArray = nullptr; CLR_UINT8 *returnArray; uint16_t result; size_t length; @@ -740,7 +741,7 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY // alloc output array outArray = (char *)platform_malloc(outputLength + 1); // check malloc success - if (outArray == NULL) + if (outArray == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -762,10 +763,8 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY // create heap block array instance with appropriate size (the length of the output array) // and type (byte which is uint8_t) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( - stack.PushValueAndClear(), - outputLength, - g_CLR_RT_WellKnownTypes.UInt8)); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), outputLength, g_CLR_RT_WellKnownTypes.UInt8)); // get a pointer to the array in the heap block array just created returnArray = stack.TopValue().DereferenceArray()->GetFirstElement(); @@ -964,7 +963,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const literal: if (c != *bufPointer++) { - return NULL; + return nullptr; } break; @@ -986,7 +985,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const // no match if (i == 7) { - return NULL; + return nullptr; } st.wDayOfWeek = i; @@ -1010,7 +1009,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const // no match if (i == 12) { - return NULL; + return nullptr; } st.wMonth = i + 1; @@ -1021,7 +1020,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'd': if (!(nano_conv_num(&bufPointer, &value, 1, 31))) { - return NULL; + return nullptr; } st.wDay = value; break; @@ -1030,7 +1029,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'H': if (!(nano_conv_num(&bufPointer, &value, 0, 23))) { - return NULL; + return nullptr; } st.wHour = value; break; @@ -1039,7 +1038,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'M': if (!(nano_conv_num(&bufPointer, &value, 0, 59))) { - return NULL; + return nullptr; } st.wMinute = value; break; @@ -1048,7 +1047,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'm': if (!(nano_conv_num(&bufPointer, &value, 1, 12))) { - return NULL; + return nullptr; } st.wMonth = value; break; @@ -1057,7 +1056,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'S': if (!(nano_conv_num(&bufPointer, &value, 0, 59))) { - return NULL; + return nullptr; } st.wSecond = value; break; @@ -1066,7 +1065,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'Y': if (!(nano_conv_num(&bufPointer, &value, 0, 9999))) { - return NULL; + return nullptr; } st.wYear = value; @@ -1076,7 +1075,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const case 'f': if (!(nano_conv_num(&bufPointer, &value, 0, 9999999))) { - return NULL; + return nullptr; } extraTicks = value; @@ -1094,7 +1093,7 @@ char *Library_corlib_native_System_Convert::Nano_strptime(const char *buf, const // Unknown/unsupported conversion default: - return NULL; + return nullptr; } } diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 4bf01564fb..014aa9b9ed 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -27,55 +27,45 @@ enum DateTimePart // !!! KEEP IN SYNC WITH DateTime._UTCMask (in managed code) !!! // // !!! KEEP IN SYNC WITH DateTime._tickMask (in managed code) !!! // //////////////////////////////////////////////////////////////////// -CLR_INT64 s_UTCMask = ULONGLONGCONSTANT(0x8000000000000000); -CLR_INT64 s_TickMask = ULONGLONGCONSTANT(0x7FFFFFFFFFFFFFFF); +CLR_INT64 s_UTCMask = ULONGLONGCONSTANT(0x8000000000000000); +CLR_INT64 s_TickMask = ULONGLONGCONSTANT(0x7FFFFFFFFFFFFFFF); -HRESULT Library_corlib_native_System_DateTime::_ctor___VOID__I4__I4__I4__I4__I4__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_DateTime::_ctor___VOID__I4__I4__I4__I4__I4__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* pArg = &(stack.Arg1()); - SYSTEMTIME st; + CLR_RT_HeapBlock *pArg = &(stack.Arg1()); + SYSTEMTIME st; NANOCLR_CLEAR(st); - st.wYear = pArg[ 0 ].NumericByRef().s4; - st.wMonth = pArg[ 1 ].NumericByRef().s4; - st.wDay = pArg[ 2 ].NumericByRef().s4; - st.wHour = pArg[ 3 ].NumericByRef().s4; - st.wMinute = pArg[ 4 ].NumericByRef().s4; - st.wSecond = pArg[ 5 ].NumericByRef().s4; - st.wMilliseconds = pArg[ 6 ].NumericByRef().s4; - - /// Our current supported range is between 1601 and 3000. Years before 1582 requires different calculation (see explanation - /// in time_decl.h), same way years after 3000 will not hold the simple arithmetic which we are using. More complex calculations - /// outside these range are not worth the CPU cycle and codesize. + st.wYear = pArg[0].NumericByRef().s4; + st.wMonth = pArg[1].NumericByRef().s4; + st.wDay = pArg[2].NumericByRef().s4; + st.wHour = pArg[3].NumericByRef().s4; + st.wMinute = pArg[4].NumericByRef().s4; + st.wSecond = pArg[5].NumericByRef().s4; + st.wMilliseconds = pArg[6].NumericByRef().s4; + + /// Our current supported range is between 1601 and 3000. Years before 1582 requires different calculation (see + /// explanation in time_decl.h), same way years after 3000 will not hold the simple arithmetic which we are using. + /// More complex calculations outside these range are not worth the CPU cycle and codesize. // some checks below have to use the parameter because the st struct uses unsigned types - if ( - (st.wYear < 1601) || - (st.wYear > 3000) || - (st.wMonth < 1) || - (st.wMonth > 12) || - (st.wDay < 1) || - (st.wDay > 31) || - (pArg[ 3 ].NumericByRef().s4 < 0) || - (st.wHour > 23) || - (pArg[ 4 ].NumericByRef().s4 < 0) || - (st.wMinute > 59) || - (pArg[ 5 ].NumericByRef().s4 < 0) || - (st.wSecond > 59) || - (st.wMilliseconds < pArg[ 6 ].NumericByRef().s4) || - (st.wMilliseconds > 1000)) + if ((st.wYear < 1601) || (st.wYear > 3000) || (st.wMonth < 1) || (st.wMonth > 12) || (st.wDay < 1) || + (st.wDay > 31) || (pArg[3].NumericByRef().s4 < 0) || (st.wHour > 23) || (pArg[4].NumericByRef().s4 < 0) || + (st.wMinute > 59) || (pArg[5].NumericByRef().s4 < 0) || (st.wSecond > 59) || + (st.wMilliseconds < pArg[6].NumericByRef().s4) || (st.wMilliseconds > 1000)) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } - - Compress( stack, st ); + + Compress(stack, st); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateTimeDateTimePart( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateTimeDateTimePart( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -83,48 +73,48 @@ HRESULT Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateT signed int days; SYSTEMTIME st; - DateTimePart dateTimePart = (DateTimePart)stack.Arg1().NumericByRef().s4; + DateTimePart dateTimePart = (DateTimePart)stack.Arg1().NumericByRef().s4; - if( Expand( stack, st ) ) + if (Expand(stack, st)) { switch (dateTimePart) { case DateTimePart_Year: - stack.SetResult_I4( st.wYear ); + stack.SetResult_I4(st.wYear); break; - case DateTimePart_Month : - stack.SetResult_I4( st.wMonth ); + case DateTimePart_Month: + stack.SetResult_I4(st.wMonth); break; case DateTimePart_Day: - stack.SetResult_I4( st.wDay ); + stack.SetResult_I4(st.wDay); break; case DateTimePart_DayOfWeek: - stack.SetResult_I4( st.wDayOfWeek ); + stack.SetResult_I4(st.wDayOfWeek); break; case DateTimePart_DayOfYear: - NANOCLR_CHECK_HRESULT( HAL_Time_AccDaysInMonth( st.wYear, st.wMonth, &days ) ); + NANOCLR_CHECK_HRESULT(HAL_Time_AccDaysInMonth(st.wYear, st.wMonth, &days)); days += st.wDay; - stack.SetResult_I4( days ); + stack.SetResult_I4(days); break; case DateTimePart_Hour: - stack.SetResult_I4( st.wHour ); + stack.SetResult_I4(st.wHour); break; case DateTimePart_Minute: - stack.SetResult_I4( st.wMinute ); + stack.SetResult_I4(st.wMinute); break; case DateTimePart_Second: - stack.SetResult_I4( st.wSecond ); + stack.SetResult_I4(st.wSecond); break; case DateTimePart_Millisecond: - stack.SetResult_I4( st.wMilliseconds ); + stack.SetResult_I4(st.wMilliseconds); break; default: @@ -141,40 +131,40 @@ HRESULT Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateT NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_INT32 year = stack.Arg0().NumericByRef().s4; + CLR_INT32 year = stack.Arg0().NumericByRef().s4; CLR_INT32 month = stack.Arg1().NumericByRef().s4; - CLR_INT32 days = 0; + CLR_INT32 days = 0; - NANOCLR_CHECK_HRESULT( HAL_Time_DaysInMonth( year, month, &days ) ); + NANOCLR_CHECK_HRESULT(HAL_Time_DaysInMonth(year, month, &days)); - stack.SetResult_I4( days ); + stack.SetResult_I4(days); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDescriptor dtType; - CLR_INT64* val; + CLR_INT64 *val; - CLR_RT_HeapBlock& ref = stack.PushValue(); + CLR_RT_HeapBlock &ref = stack.PushValue(); // initialize type descriptor - NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.DateTime ) ); + NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime)); // create an instance of - NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObject( ref, dtType.m_handlerCls ) ); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls)); + + val = GetValuePtr(ref); - val = GetValuePtr( ref ); - // load with full date&time // including UTC flag *val = HAL_Time_CurrentDateTime(false) | s_UTCMask; @@ -182,23 +172,23 @@ HRESULT Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTi NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDescriptor dtType; - CLR_INT64* val; + CLR_INT64 *val; - CLR_RT_HeapBlock& ref = stack.PushValue(); + CLR_RT_HeapBlock &ref = stack.PushValue(); // initialize type descriptor - NANOCLR_CHECK_HRESULT( dtType.InitializeFromType( g_CLR_RT_WellKnownTypes.DateTime ) ); + NANOCLR_CHECK_HRESULT(dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime)); // create an instance of - NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewObject( ref, dtType.m_handlerCls ) ); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls)); - val = GetValuePtr( ref ); + val = GetValuePtr(ref); // load with date part only // including UTC flag @@ -209,59 +199,71 @@ HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTim //--// -CLR_INT64* Library_corlib_native_System_DateTime::GetValuePtr( CLR_RT_StackFrame& stack ) +CLR_INT64 *Library_corlib_native_System_DateTime::GetValuePtr(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); - return GetValuePtr( stack.Arg0() ); + return GetValuePtr(stack.Arg0()); } -CLR_INT64* Library_corlib_native_System_DateTime::GetValuePtr( CLR_RT_HeapBlock& ref ) +CLR_INT64 *Library_corlib_native_System_DateTime::GetValuePtr(CLR_RT_HeapBlock &ref) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock* obj = &ref; - NanoCLRDataType dt = obj->DataType(); + CLR_RT_HeapBlock *obj = &ref; + NanoCLRDataType dt = obj->DataType(); - if(dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF) + if (dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF) { - obj = obj->Dereference(); if(!obj) return NULL; + obj = obj->Dereference(); + + if (!obj) + { + return nullptr; + } + dt = obj->DataType(); } - // after dereferencing the object if it's pointing to another Object + // after dereferencing the object if it's pointing to another Object // need to do it again because this DateTime instance is most likely boxed - if(dt == DATATYPE_OBJECT) + if (dt == DATATYPE_OBJECT) { - obj = obj->Dereference(); if(!obj) return NULL; + obj = obj->Dereference(); + + if (!obj) + { + return nullptr; + } + dt = obj->DataType(); } - if(dt == DATATYPE_DATETIME) + if (dt == DATATYPE_DATETIME) { - return (CLR_INT64*)&obj->NumericByRef().s8; + return (CLR_INT64 *)&obj->NumericByRef().s8; } - if(dt == DATATYPE_I8) + if (dt == DATATYPE_I8) { - return (CLR_INT64*)&obj->NumericByRef().s8; + return (CLR_INT64 *)&obj->NumericByRef().s8; } - if(dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.DateTime.data) + if (dt == DATATYPE_VALUETYPE && obj->ObjectCls().data == g_CLR_RT_WellKnownTypes.DateTime.data) { - return (CLR_INT64*)&obj[ FIELD___ticks ].NumericByRef().s8; + return (CLR_INT64 *)&obj[FIELD___ticks].NumericByRef().s8; } - return NULL; + return nullptr; } -bool Library_corlib_native_System_DateTime::Expand( CLR_RT_StackFrame& stack, SYSTEMTIME& st ) +bool Library_corlib_native_System_DateTime::Expand(CLR_RT_StackFrame &stack, SYSTEMTIME &st) { NATIVE_PROFILE_CLR_CORE(); - CLR_INT64* val = GetValuePtr( stack ); + CLR_INT64 *val = GetValuePtr(stack); - if(val) + if (val) { CLR_INT64 ticks = *val & s_TickMask; - HAL_Time_ToSystemTime( ticks, &st ); + HAL_Time_ToSystemTime(ticks, &st); return true; } @@ -270,13 +272,13 @@ bool Library_corlib_native_System_DateTime::Expand( CLR_RT_StackFrame& stack, SY } // Compress function always creates UTC time. -void Library_corlib_native_System_DateTime::Compress( CLR_RT_StackFrame& stack, const SYSTEMTIME& st ) +void Library_corlib_native_System_DateTime::Compress(CLR_RT_StackFrame &stack, const SYSTEMTIME &st) { NATIVE_PROFILE_CLR_CORE(); - CLR_INT64* val = GetValuePtr( stack ); + CLR_INT64 *val = GetValuePtr(stack); - if(val) + if (val) { - *val = HAL_Time_ConvertFromSystemTime( &st ) | s_UTCMask; + *val = HAL_Time_ConvertFromSystemTime(&st) | s_UTCMask; } } diff --git a/src/CLR/CorLib/corlib_native_System_Delegate.cpp b/src/CLR/CorLib/corlib_native_System_Delegate.cpp index cab108d937..627e34cb85 100644 --- a/src/CLR/CorLib/corlib_native_System_Delegate.cpp +++ b/src/CLR/CorLib/corlib_native_System_Delegate.cpp @@ -5,20 +5,19 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_Boolean( CLR_RT_HeapBlock::Compare_Unsigned_Values( stack.Arg0(), stack.Arg1() ) == 0 ); + stack.SetResult_Boolean(CLR_RT_HeapBlock::Compare_Unsigned_Values(stack.Arg0(), stack.Arg1()) == 0); NANOCLR_NOCLEANUP_NOLABEL(); } #if (NANOCLR_REFLECTION == TRUE) -HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_SystemDelegate( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_SystemDelegate(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -27,46 +26,58 @@ HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_Syste CLR_RT_HeapBlock_Delegate_List *lst = (CLR_RT_HeapBlock_Delegate_List *)dlg; int delegatesCount = 0; - CLR_RT_HeapBlock *returnArray = NULL; + CLR_RT_HeapBlock *returnArray = nullptr; // put the return array on the stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - if (dlg) { - if (dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) { + if (dlg) + { + if (dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) + { delegatesCount = lst->m_length; - } else { + } + else + { delegatesCount = 1; } } // create the result array - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, delegatesCount, g_CLR_RT_WellKnownTypes.Delegate)); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(top, delegatesCount, g_CLR_RT_WellKnownTypes.Delegate)); - if (delegatesCount > 0) { + if (delegatesCount > 0) + { // get the pointer to the first element returnArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); - - if (delegatesCount > 1) { + + if (delegatesCount > 1) + { CLR_RT_HeapBlock *ptr = lst->GetDelegates(); // fill the array with the delegates - for (int i = 0; i < delegatesCount; i++) { + for (int i = 0; i < delegatesCount; i++) + { // create an instance of delegate - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); - //fetch delegate from list + // fetch delegate from list dlg = ptr[i].DereferenceDelegate(); - //set delegate reference to return element + // set delegate reference to return element returnArray->SetObjectReference(dlg); returnArray++; } - } else { + } + else + { // create an instance of delegate - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); - //set delegate reference to return element + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*returnArray, g_CLR_RT_WellKnownTypes.Delegate)); + // set delegate reference to return element returnArray->SetObjectReference(dlg); } } @@ -74,39 +85,43 @@ HRESULT Library_corlib_native_System_Delegate::GetInvocationList___SZARRAY_Syste NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Delegate::get_Method___SystemReflectionMethodInfo( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::get_Method___SystemReflectionMethodInfo(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Delegate* dlg = stack.Arg0().DereferenceDelegate(); + CLR_RT_HeapBlock_Delegate *dlg = stack.Arg0().DereferenceDelegate(); - dlg = GetLastDelegate( dlg ); if(!dlg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + dlg = GetLastDelegate(dlg); + if (!dlg) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); { - CLR_RT_HeapBlock& top = stack.PushValue(); - CLR_RT_HeapBlock* hbObj; - + CLR_RT_HeapBlock &top = stack.PushValue(); + CLR_RT_HeapBlock *hbObj; + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.MethodInfo)); hbObj = top.Dereference(); - - hbObj->SetReflection( dlg->DelegateFtn() ); + + hbObj->SetReflection(dlg->DelegateFtn()); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Delegate::get_Target___OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::get_Target___OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Delegate* dlg = stack.Arg0().DereferenceDelegate(); + CLR_RT_HeapBlock_Delegate *dlg = stack.Arg0().DereferenceDelegate(); - dlg = GetLastDelegate( dlg ); if(!dlg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + dlg = GetLastDelegate(dlg); + if (!dlg) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); { - stack.PushValueAndAssign( dlg->m_object ); + stack.PushValueAndAssign(dlg->m_object); } NANOCLR_NOCLEANUP(); @@ -114,42 +129,48 @@ HRESULT Library_corlib_native_System_Delegate::get_Target___OBJECT( CLR_RT_Stack #endif // NANOCLR_REFLECTION -HRESULT Library_corlib_native_System_Delegate::Combine___STATIC__SystemDelegate__SystemDelegate__SystemDelegate( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::Combine___STATIC__SystemDelegate__SystemDelegate__SystemDelegate( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_Delegate_List::Combine( stack.PushValue(), stack.Arg0(), stack.Arg1(), false )); + NANOCLR_SET_AND_LEAVE( + CLR_RT_HeapBlock_Delegate_List::Combine(stack.PushValue(), stack.Arg0(), stack.Arg1(), false)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Delegate::Remove___STATIC__SystemDelegate__SystemDelegate__SystemDelegate( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::Remove___STATIC__SystemDelegate__SystemDelegate__SystemDelegate( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_Delegate_List::Remove( stack.PushValue(), stack.Arg0(), stack.Arg1() )); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_Delegate_List::Remove(stack.PushValue(), stack.Arg0(), stack.Arg1())); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT( stack )); + NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_Delegate::Equals___BOOLEAN__OBJECT(stack)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Delegate::op_Inequality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Delegate::op_Inequality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate( stack )); + NANOCLR_CHECK_HRESULT( + Library_corlib_native_System_Delegate::op_Equality___STATIC__BOOLEAN__SystemDelegate__SystemDelegate(stack)); stack.NegateResult(); @@ -158,24 +179,24 @@ HRESULT Library_corlib_native_System_Delegate::op_Inequality___STATIC__BOOLEAN__ //--// -CLR_RT_HeapBlock_Delegate* Library_corlib_native_System_Delegate::GetLastDelegate( CLR_RT_HeapBlock_Delegate* dlg ) +CLR_RT_HeapBlock_Delegate *Library_corlib_native_System_Delegate::GetLastDelegate(CLR_RT_HeapBlock_Delegate *dlg) { NATIVE_PROFILE_CLR_CORE(); - if(dlg) + if (dlg) { - if(dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) + if (dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) { - CLR_RT_HeapBlock_Delegate_List* lst = (CLR_RT_HeapBlock_Delegate_List*)dlg; + CLR_RT_HeapBlock_Delegate_List *lst = (CLR_RT_HeapBlock_Delegate_List *)dlg; - if(lst->m_length == 0) + if (lst->m_length == 0) { - dlg = NULL; + dlg = nullptr; } else { - CLR_RT_HeapBlock* ptr = lst->GetDelegates(); + CLR_RT_HeapBlock *ptr = lst->GetDelegates(); - dlg = ptr[ lst->m_length-1 ].DereferenceDelegate(); + dlg = ptr[lst->m_length - 1].DereferenceDelegate(); } } } diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index d3c01a5007..069a8c98b6 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -49,7 +49,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S char *strName; size_t iName; CLR_RT_HeapBlock tmpArray; - tmpArray.SetObjectReference(NULL); + tmpArray.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmpArray); int depth = 0; CLR_RT_HeapBlock *pThis = stack.This(); @@ -65,7 +65,9 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S } if (depth == 0) - NANOCLR_SET_AND_LEAVE(stack.SetResult_String(NULL)); + { + NANOCLR_SET_AND_LEAVE(stack.SetResult_String(nullptr)); + } NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmpArray, depth, g_CLR_RT_WellKnownTypes.String)); @@ -77,7 +79,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S strName = &buf[0]; iName = MAXSTRLEN(buf) - 2; - NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.BuildMethodName(pStackTrace->m_md, NULL, strName, iName)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_TypeSystem.BuildMethodName(pStackTrace->m_md, nullptr, strName, iName)); memcpy(strName, "\r\n\0", 3); @@ -233,7 +235,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & CLR_RT_HeapBlock *Library_corlib_native_System_Exception::GetTarget(CLR_RT_HeapBlock &ref) { NATIVE_PROFILE_CLR_CORE(); - return CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.Exception) ? ref.Dereference() : NULL; + return CLR_RT_ExecutionEngine::IsInstanceOf(ref, g_CLR_RT_WellKnownTypes.Exception) ? ref.Dereference() : nullptr; } Library_corlib_native_System_Exception::StackTrace *Library_corlib_native_System_Exception::GetStackTrace( @@ -255,5 +257,5 @@ Library_corlib_native_System_Exception::StackTrace *Library_corlib_native_System depth = 0; - return NULL; + return nullptr; } diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index ce2af4ccf9..98d824a74f 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -5,45 +5,49 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_Boolean( g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false - || (g_CLR_RT_ExecutionEngine.m_finalizerThread != NULL && !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); + stack.SetResult_Boolean( + g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || + (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && + !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); + CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); + FAULT_ON_NULL(pObj); - CLR_RT_HeapBlock_Finalizer::SuppressFinalize( pObj ); + CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDescriptor desc; - CLR_RT_HeapBlock* pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); + CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); + FAULT_ON_NULL(pObj); - CLR_RT_HeapBlock_Finalizer::SuppressFinalize( pObj ); + CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); - NANOCLR_CHECK_HRESULT(desc.InitializeFromObject( stack.Arg0() )); + NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); - if(desc.m_handlerCls.HasFinalizer()) + if (desc.m_handlerCls.HasFinalizer()) { - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Finalizer::CreateInstance( stack.Arg0().Dereference(), desc.m_handlerCls )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); } NANOCLR_NOCLEANUP(); diff --git a/src/CLR/CorLib/corlib_native_System_Number.cpp b/src/CLR/CorLib/corlib_native_System_Number.cpp index a58bfe180e..c76c11bb93 100644 --- a/src/CLR/CorLib/corlib_native_System_Number.cpp +++ b/src/CLR/CorLib/corlib_native_System_Number.cpp @@ -16,7 +16,7 @@ bool Library_corlib_native_System_Number::ParseFormat(char *format, char *format bool ret = true; // parse received format - if (format != NULL && format[0] != 0) + if (format != nullptr && format[0] != 0) { *formatChar = format[0]; *precision = -1; diff --git a/src/CLR/CorLib/corlib_native_System_Random.cpp b/src/CLR/CorLib/corlib_native_System_Random.cpp index 506cfb6486..6a67771531 100644 --- a/src/CLR/CorLib/corlib_native_System_Random.cpp +++ b/src/CLR/CorLib/corlib_native_System_Random.cpp @@ -5,121 +5,125 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Random::Next___I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::Next___I4(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_Random* rand; + CLR_RT_Random *rand; - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand )); + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand)); - stack.SetResult_I4( rand->Next() & 0x7FFFFFFF ); + stack.SetResult_I4(rand->Next() & 0x7FFFFFFF); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Random::Next___I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::Next___I4__I4(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_Random* rand; - CLR_INT32 maxValue; + CLR_RT_Random *rand; + CLR_INT32 maxValue; - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand )); + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand)); maxValue = stack.Arg1().NumericByRef().s4; - if(maxValue <= 0) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (maxValue <= 0) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + + stack.SetResult_I4(rand->Next() % maxValue); - stack.SetResult_I4( rand->Next() % maxValue ); - NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Random::NextDouble___R8( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::NextDouble___R8(CLR_RT_StackFrame &stack) { - NANOCLR_HEADER(); - - CLR_RT_Random* rand; + + CLR_RT_Random *rand; #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) - double nextDouble; + double nextDouble; #else - CLR_INT64 nextDouble; + CLR_INT64 nextDouble; #endif - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand )); + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand)); nextDouble = rand->NextDouble(); - stack.SetResult_R8( nextDouble ); + stack.SetResult_R8(nextDouble); NANOCLR_NOCLEANUP(); - - } -HRESULT Library_corlib_native_System_Random::NextBytes___VOID__SZARRAY_U1( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::NextBytes___VOID__SZARRAY_U1(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - - CLR_RT_Random* rand; - CLR_RT_HeapBlock_Array* buffer; - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand )); + CLR_RT_Random *rand; + CLR_RT_HeapBlock_Array *buffer; + + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand)); - buffer = stack.Arg1().DereferenceArray(); FAULT_ON_NULL(buffer); + buffer = stack.Arg1().DereferenceArray(); + FAULT_ON_NULL(buffer); + + rand->NextBytes(buffer->GetFirstElement(), buffer->m_numOfElements); - rand->NextBytes( buffer->GetFirstElement(), buffer->m_numOfElements ); - NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Random::_ctor___VOID( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::_ctor___VOID(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_Random* rand; + CLR_RT_Random *rand; - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand, true )); + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand, true)); rand->Initialize(); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Random::_ctor___VOID__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Random::_ctor___VOID__I4(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_Random* rand; + CLR_RT_Random *rand; - NANOCLR_CHECK_HRESULT(GetRandom( stack, rand, true )); + NANOCLR_CHECK_HRESULT(GetRandom(stack, rand, true)); - rand->Initialize( stack.Arg1().NumericByRef().s4 ); + rand->Initialize(stack.Arg1().NumericByRef().s4); NANOCLR_NOCLEANUP(); } //--// -HRESULT Library_corlib_native_System_Random::GetRandom( CLR_RT_StackFrame& stack, CLR_RT_Random*& rand, bool create ) +HRESULT Library_corlib_native_System_Random::GetRandom(CLR_RT_StackFrame &stack, CLR_RT_Random *&rand, bool create) { NANOCLR_HEADER(); - CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); - if(create) + if (create) { - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_BinaryBlob::CreateInstance( pThis[ FIELD___random ], sizeof(CLR_RT_Random), NULL, NULL, 0 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_BinaryBlob::CreateInstance( + pThis[FIELD___random], + sizeof(CLR_RT_Random), + nullptr, + nullptr, + 0)); } - rand = (CLR_RT_Random*)pThis[ FIELD___random ].DereferenceBinaryBlob()->GetData(); - + rand = (CLR_RT_Random *)pThis[FIELD___random].DereferenceBinaryBlob()->GetData(); + NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index a232452f62..fff5a3bce0 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -63,8 +63,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__ if (g_CLR_RT_TypeSystem.FindTypeDef(szClass, assm.assembly, td)) { - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*hbRef, g_CLR_RT_WellKnownTypes.TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*hbRef, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = hbRef->Dereference(); hbObj->SetReflection(td); @@ -119,7 +118,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYR NANOCLR_HEADER(); CLR_RT_StackFrame *caller = stack.Caller(); - if (caller == NULL) + if (caller == nullptr) { NANOCLR_SET_AND_LEAVE(S_OK); } @@ -190,7 +189,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetExecutingAssembly__ CLR_RT_HeapBlock *hbObj; CLR_RT_StackFrame *caller = stack.Caller(); - if (caller == NULL) + if (caller == nullptr) NANOCLR_SET_AND_LEAVE(S_OK); { @@ -251,7 +250,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: } else { - assembly = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, NULL, false); + assembly = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, nullptr, false); FAULT_ON_NULL_HR(assembly, CLR_E_INVALID_PARAMETER); } @@ -280,8 +279,8 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array *array = NULL; - CLR_RT_Assembly *assm = NULL; + CLR_RT_HeapBlock_Array *array = nullptr; + CLR_RT_Assembly *assm = nullptr; CLR_RT_HeapBlock *hbObj; CLR_RECORD_ASSEMBLY *header; CLR_RT_Assembly_Index assemblyIndex; diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp index d85d083888..171ede2114 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_ConstructorInfo.cpp @@ -24,7 +24,7 @@ HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT CLR_RT_HeapBlock *thisRef = stack.ThisRef().Dereference(); CLR_RT_MethodDef_Instance md; CLR_RT_HeapBlock_Array *pArray = stack.Arg1().DereferenceArray(); - CLR_RT_HeapBlock *args = NULL; + CLR_RT_HeapBlock *args = nullptr; int ArgumentsCount = 0; if (md.InitializeFromIndex(thisRef->ReflectionDataConst().data.method) == false) @@ -40,7 +40,7 @@ HRESULT Library_corlib_native_System_Reflection_ConstructorInfo::Invoke___OBJECT ArgumentsCount = pArray->m_numOfElements; } - NANOCLR_CHECK_HRESULT(stack.MakeCall(md, NULL, args, ArgumentsCount)); + NANOCLR_CHECK_HRESULT(stack.MakeCall(md, nullptr, args, ArgumentsCount)); } NANOCLR_NOCLEANUP(); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index 644f970900..334b2d5b27 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -5,73 +5,85 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJECT__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJECT__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_FieldDef_Instance instFD; - CLR_RT_TypeDef_Instance instTD; - CLR_RT_TypeDescriptor instTDescObj; - CLR_RT_TypeDef_Instance instTDField; - const CLR_RECORD_FIELDDEF* fd; - CLR_RT_HeapBlock* obj; - bool fValueType; - CLR_RT_HeapBlock& srcVal = stack.Arg2(); - CLR_RT_HeapBlock val; val.Assign( srcVal ); - CLR_RT_ProtectFromGC gc( val ); - + CLR_RT_FieldDef_Instance instFD; + CLR_RT_TypeDef_Instance instTD; + CLR_RT_TypeDescriptor instTDescObj; + CLR_RT_TypeDef_Instance instTDField; + const CLR_RECORD_FIELDDEF *fd; + CLR_RT_HeapBlock *obj; + bool fValueType; + CLR_RT_HeapBlock &srcVal = stack.Arg2(); + CLR_RT_HeapBlock val; + val.Assign(srcVal); + CLR_RT_ProtectFromGC gc(val); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize( stack, instFD, instTD, obj )); + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize(stack, instFD, instTD, obj)); fd = instFD.target; - - if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + + if (fd->flags & + CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } NANOCLR_CHECK_HRESULT(instTDescObj.InitializeFromFieldDefinition(instFD)); - // make sure the right side object is of the same type as the left side - if(NULL != val.Dereference() && !CLR_RT_ExecutionEngine::IsInstanceOf(val, instTDescObj.m_handlerCls)) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + // make sure the right side object is of the same type as the left side + if (nullptr != val.Dereference() && !CLR_RT_ExecutionEngine::IsInstanceOf(val, instTDescObj.m_handlerCls)) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } fValueType = obj->IsAValueType(); - if(fValueType || (c_CLR_RT_DataTypeLookup[ obj->DataType() ].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType)) + + if (fValueType || (c_CLR_RT_DataTypeLookup[obj->DataType()].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType)) { - if(val.Dereference() == NULL || !val.Dereference()->IsBoxed()) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - - if(fValueType) + if (val.Dereference() == nullptr || !val.Dereference()->IsBoxed()) { - _ASSERTE(NULL != obj->Dereference()); - if(NULL == obj->Dereference()) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - instTDField.InitializeFromIndex( obj->Dereference()->ObjectCls() ); + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + if (fValueType) + { + _ASSERTE(nullptr != obj->Dereference()); + + if (nullptr == obj->Dereference()) + { + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + } + + instTDField.InitializeFromIndex(obj->Dereference()->ObjectCls()); } else { - instTDField.InitializeFromIndex( *c_CLR_RT_DataTypeLookup[ obj->DataType() ].m_cls ); + instTDField.InitializeFromIndex(*c_CLR_RT_DataTypeLookup[obj->DataType()].m_cls); } - - NANOCLR_CHECK_HRESULT(val.PerformUnboxing( instTDField )); + + NANOCLR_CHECK_HRESULT(val.PerformUnboxing(instTDField)); } else { #if defined(NANOCLR_APPDOMAINS) - CLR_RT_HeapBlock& srcObj = stack.Arg1(); + CLR_RT_HeapBlock &srcObj = stack.Arg1(); - if(srcObj.IsTransparentProxy()) + if (srcObj.IsTransparentProxy()) { _ASSERTE(srcObj.DataType() == DATATYPE_OBJECT); - _ASSERTE(srcObj.Dereference() != NULL && srcObj.Dereference()->DataType() == DATATYPE_TRANSPARENT_PROXY); + _ASSERTE(srcObj.Dereference() != nullptr && srcObj.Dereference()->DataType() == DATATYPE_TRANSPARENT_PROXY); NANOCLR_CHECK_HRESULT(srcObj.Dereference()->TransparentProxyValidate()); - NANOCLR_CHECK_HRESULT(srcObj.Dereference()->TransparentProxyAppDomain()->MarshalObject( val, val )); + NANOCLR_CHECK_HRESULT(srcObj.Dereference()->TransparentProxyAppDomain()->MarshalObject(val, val)); } #endif } - switch(obj->DataType()) + switch (obj->DataType()) { case DATATYPE_DATETIME: // Special case. case DATATYPE_TIMESPAN: // Special case. @@ -79,7 +91,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJE break; default: - obj->Assign( val ); + obj->Assign(val); break; } @@ -88,59 +100,69 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJE //--// -HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( CLR_RT_StackFrame& stack, CLR_RT_FieldDef_Instance& instFD, CLR_RT_TypeDef_Instance& instTD, CLR_RT_HeapBlock*& obj ) +HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( + CLR_RT_StackFrame &stack, + CLR_RT_FieldDef_Instance &instFD, + CLR_RT_TypeDef_Instance &instTD, + CLR_RT_HeapBlock *&obj) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); - if(CLR_RT_ReflectionDef_Index::Convert( *hbField, instFD ) == false || - instTD.InitializeFromField ( instFD ) == false ) + if (CLR_RT_ReflectionDef_Index::Convert(*hbField, instFD) == false || instTD.InitializeFromField(instFD) == false) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if(instFD.target->flags & CLR_RECORD_FIELDDEF::FD_Static) + if (instFD.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { - obj = CLR_RT_ExecutionEngine::AccessStaticField( instFD ); - - if(obj == NULL) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + obj = CLR_RT_ExecutionEngine::AccessStaticField(instFD); + + if (obj == nullptr) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } } else { - NANOCLR_CHECK_HRESULT(stack.Arg1().EnsureObjectReference( obj )); + NANOCLR_CHECK_HRESULT(stack.Arg1().EnsureObjectReference(obj)); - if(CLR_RT_ExecutionEngine::IsInstanceOf( *obj, instTD ) == false) + if (CLR_RT_ExecutionEngine::IsInstanceOf(*obj, instTD) == false) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - - obj = &obj[ instFD.CrossReference().offset ]; + + obj = &obj[instFD.CrossReference().offset]; } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN( + CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_HeapBlock* callerField; - CLR_RT_HeapBlock* returnArray = NULL; - CLR_RT_FieldDef_Instance fieldDefinition; + CLR_RT_HeapBlock *callerField; + CLR_RT_HeapBlock *returnArray = nullptr; + CLR_RT_FieldDef_Instance fieldDefinition; int count = 0; // put the return array on the stack - CLR_RT_HeapBlock& top = stack.PushValueAndClear(); + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // get the caller field callerField = stack.Arg0().Dereference(); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetFieldDescriptor( stack, *callerField, fieldDefinition )); + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetFieldDescriptor( + stack, + *callerField, + fieldDefinition)); // setup attribute enumerator CLR_RT_AttributeEnumerator attributeEnumerator; - attributeEnumerator.Initialize( fieldDefinition ); + attributeEnumerator.Initialize(fieldDefinition); // the return array has two positions for each attribute: // 1st: the attribute type @@ -150,7 +172,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa do { // move to the next attribute in the collection, if any - if(attributeEnumerator.Advance()) + if (attributeEnumerator.Advance()) { count++; } @@ -160,7 +182,8 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa // create the result array // (2 positions for each attribute) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(top, (count * 2), g_CLR_RT_WellKnownTypes.Object)); // use this to skip to the 2nd pass if no attribute was found if (count == 0) @@ -169,18 +192,18 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa } // get the pointer to the first element - returnArray = (CLR_RT_HeapBlock*)top.DereferenceArray()->GetFirstElement(); + returnArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); // reset attribute enumerator - attributeEnumerator.Initialize( fieldDefinition ); + attributeEnumerator.Initialize(fieldDefinition); break; } - } - while(true); + } while (true); // 2nd pass: fill the array with the attributes types, if any - NANOCLR_CHECK_HRESULT( Library_corlib_native_System_RuntimeType::GetCustomAttributes( attributeEnumerator, returnArray, count ) ); + NANOCLR_CHECK_HRESULT( + Library_corlib_native_System_RuntimeType::GetCustomAttributes(attributeEnumerator, returnArray, count)); NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 3804573a8b..2fb6f73e00 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -108,7 +108,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ CLR_RT_MethodDef_Instance md; const CLR_RECORD_METHODDEF *mdR; CLR_RT_HeapBlock_Array *pArray = stack.Arg2().DereferenceArray(); - CLR_RT_HeapBlock *args = NULL; + CLR_RT_HeapBlock *args = nullptr; int ArgumentsCount = 0; CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); @@ -141,7 +141,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ } else { - stack.SetResult_Object(NULL); + stack.SetResult_Object(nullptr); } } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index 20fac927bb..72adf1ce87 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -5,114 +5,121 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); - CLR_RT_FieldDef_Instance fd; if(GetFieldDescriptor( stack, *hbField, fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); + CLR_RT_FieldDef_Instance fd; + if (GetFieldDescriptor(stack, *hbField, fd) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), fd.target->name, fd.assembly )); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.PushValue(), fd.target->name, fd.assembly)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_DeclaringType___SystemType( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_DeclaringType___SystemType( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_FieldDef_Instance fd; - CLR_RT_TypeDef_Instance cls; - CLR_RT_HeapBlock* hbField = stack.Arg0().Dereference(); + CLR_RT_TypeDef_Instance cls; + CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); - if(GetFieldDescriptor( stack, *hbField, fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); + if (GetFieldDescriptor(stack, *hbField, fd) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); - if(cls.InitializeFromField( fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + if (cls.InitializeFromField(fd) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); { - CLR_RT_HeapBlock& top = stack.PushValue(); - CLR_RT_HeapBlock* hbObj; - + CLR_RT_HeapBlock &top = stack.PushValue(); + CLR_RT_HeapBlock *hbObj; + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); - hbObj->SetReflection( cls ); + hbObj->SetReflection(cls); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_FieldType___SystemType( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_FieldType___SystemType(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_TypeDescriptor desc; CLR_RT_FieldDef_Instance fd; - CLR_RT_HeapBlock* hbField = stack.Arg0().Dereference(); - - if(GetFieldDescriptor( stack, *hbField, fd ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); + CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); - NANOCLR_CHECK_HRESULT(desc.InitializeFromFieldDefinition( fd )); + if (GetFieldDescriptor(stack, *hbField, fd) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); + + NANOCLR_CHECK_HRESULT(desc.InitializeFromFieldDefinition(fd)); { - CLR_RT_HeapBlock& top = stack.PushValue(); - CLR_RT_HeapBlock* hbObj; - + CLR_RT_HeapBlock &top = stack.PushValue(); + CLR_RT_HeapBlock *hbObj; + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); - hbObj->SetReflection( desc.m_handlerCls ); + hbObj->SetReflection(desc.m_handlerCls); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJECT__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJECT__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_FieldDef_Instance instFD; - CLR_RT_TypeDef_Instance instTD; - const CLR_RECORD_FIELDDEF* fd; - CLR_RT_HeapBlock* obj; - CLR_RT_HeapBlock dst; - - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize( stack, instFD, instTD, obj )); + CLR_RT_FieldDef_Instance instFD; + CLR_RT_TypeDef_Instance instTD; + const CLR_RECORD_FIELDDEF *fd; + CLR_RT_HeapBlock *obj; + CLR_RT_HeapBlock dst; + + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize(stack, instFD, instTD, obj)); fd = instFD.target; - if(fd->flags & CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute + if (fd->flags & + CLR_RECORD_FIELDDEF::FD_NoReflection) // don't allow reflection for fields with NoReflection attribute { NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } { - dst.Assign( *obj ); + dst.Assign(*obj); #if defined(NANOCLR_APPDOMAINS) - CLR_RT_HeapBlock* argObj = &stack.Arg1(); + CLR_RT_HeapBlock *argObj = &stack.Arg1(); - //Marshal if necessary. - if(argObj->IsTransparentProxy()) + // Marshal if necessary. + if (argObj->IsTransparentProxy()) { _ASSERTE(argObj->DataType() == DATATYPE_OBJECT); - + argObj = argObj->Dereference(); - _ASSERTE(argObj != NULL && argObj->DataType() == DATATYPE_TRANSPARENT_PROXY); - + _ASSERTE(argObj != nullptr && argObj->DataType() == DATATYPE_TRANSPARENT_PROXY); + NANOCLR_CHECK_HRESULT(argObj->TransparentProxyValidate()); - - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->MarshalObject( *obj, dst, argObj->TransparentProxyAppDomain() )); + + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.GetCurrentAppDomain() + ->MarshalObject(*obj, dst, argObj->TransparentProxyAppDomain())); } #endif - CLR_RT_HeapBlock& res = stack.PushValueAndAssign( dst ); + CLR_RT_HeapBlock &res = stack.PushValueAndAssign(dst); - NANOCLR_CHECK_HRESULT(res.PerformBoxingIfNeeded()); + NANOCLR_CHECK_HRESULT(res.PerformBoxingIfNeeded()); } NANOCLR_NOCLEANUP(); @@ -120,10 +127,13 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJ //--// -bool Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetFieldDescriptor( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock& arg, CLR_RT_FieldDef_Instance& inst ) +bool Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetFieldDescriptor( + CLR_RT_StackFrame &stack, + CLR_RT_HeapBlock &arg, + CLR_RT_FieldDef_Instance &inst) { (void)stack; NATIVE_PROFILE_CLR_CORE(); - return CLR_RT_ReflectionDef_Index::Convert( arg, inst ); + return CLR_RT_ReflectionDef_Index::Convert(arg, inst); } diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp index 345dd4d7fe..99bd487266 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp @@ -5,56 +5,59 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnType___SystemType( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnType___SystemType(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_MethodDef_Instance md; - CLR_RT_SignatureParser parser; - CLR_RT_TypeDescriptor desc; - CLR_RT_HeapBlock* hbMeth = stack.Arg0().Dereference(); + CLR_RT_SignatureParser parser; + CLR_RT_TypeDescriptor desc; + CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor( stack, *hbMeth, md )); + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor(stack, *hbMeth, md)); - parser.Initialize_MethodSignature( md.assembly, md.target ); + parser.Initialize_MethodSignature(md.assembly, md.target); - NANOCLR_CHECK_HRESULT(desc.InitializeFromSignatureParser( parser )); + NANOCLR_CHECK_HRESULT(desc.InitializeFromSignatureParser(parser)); { - CLR_RT_HeapBlock& top = stack.PushValue(); - CLR_RT_HeapBlock* hbObj; - + CLR_RT_HeapBlock &top = stack.PushValue(); + CLR_RT_HeapBlock *hbObj; + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); - hbObj->SetReflection( desc.m_reflex ); + hbObj->SetReflection(desc.m_reflex); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttributesNative___SZARRAY_OBJECT__BOOLEAN( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* returnArray = NULL; - CLR_RT_MethodDef_Instance methodDefinition; - CLR_RT_HeapBlock* callerMethod; + CLR_RT_HeapBlock *returnArray = nullptr; + CLR_RT_MethodDef_Instance methodDefinition; + CLR_RT_HeapBlock *callerMethod; int count = 0; // put the return array on the stack - CLR_RT_HeapBlock& top = stack.PushValueAndClear(); + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // get the caller method callerMethod = stack.Arg0().Dereference(); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor( stack, *callerMethod, methodDefinition )); + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor( + stack, + *callerMethod, + methodDefinition)); // setup attribute enumerator CLR_RT_AttributeEnumerator attributeEnumerator; - attributeEnumerator.Initialize( methodDefinition ); + attributeEnumerator.Initialize(methodDefinition); // the return array has two positions for each attribute: // 1st: the attribute type @@ -64,7 +67,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr do { // move to the next attribute in the collection, if any - if(attributeEnumerator.Advance()) + if (attributeEnumerator.Advance()) { count++; } @@ -74,7 +77,8 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr // create the result array // (2 positions for each attribute) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, ( count * 2 ), g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(top, (count * 2), g_CLR_RT_WellKnownTypes.Object)); // use this to skip to the 2nd pass if no attribute was found if (count == 0) @@ -83,18 +87,18 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr } // get the pointer to the first element - returnArray = (CLR_RT_HeapBlock*)top.DereferenceArray()->GetFirstElement(); + returnArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); // reset attribute enumerator - attributeEnumerator.Initialize( methodDefinition ); + attributeEnumerator.Initialize(methodDefinition); break; } - } - while(true); + } while (true); // 2nd pass: fill the array with the attributes types, if any - NANOCLR_CHECK_HRESULT( Library_corlib_native_System_RuntimeType::GetCustomAttributes( attributeEnumerator, returnArray, count ) ); + NANOCLR_CHECK_HRESULT( + Library_corlib_native_System_RuntimeType::GetCustomAttributes(attributeEnumerator, returnArray, count)); NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index f7e4c1c7dc..bc816abfeb 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -13,7 +13,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_Assembly___SystemReflectio CLR_RT_TypeDef_Instance td; CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); - NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbType, td, NULL)); + NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbType, td, nullptr)); { CLR_RT_Assembly_Index index; @@ -87,7 +87,13 @@ HRESULT Library_corlib_native_System_RuntimeType:: GetMethods___SZARRAY_SystemReflectionMethodInfo__SystemReflectionBindingFlags(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); - return Library_corlib_native_System_Type::GetMethods(stack, NULL, stack.Arg1().NumericByRef().s4, NULL, 0, true); + return Library_corlib_native_System_Type::GetMethods( + stack, + nullptr, + stack.Arg1().NumericByRef().s4, + nullptr, + 0, + true); } HRESULT Library_corlib_native_System_RuntimeType:: @@ -105,7 +111,7 @@ HRESULT Library_corlib_native_System_RuntimeType:: GetFields___SZARRAY_SystemReflectionFieldInfo__SystemReflectionBindingFlags(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); - return Library_corlib_native_System_Type::GetFields(stack, NULL, stack.Arg1().NumericByRef().s4, true); + return Library_corlib_native_System_Type::GetFields(stack, nullptr, stack.Arg1().NumericByRef().s4, true); } HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_SystemType(CLR_RT_StackFrame &stack) @@ -115,7 +121,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System CLR_RT_TypeDef_Instance td; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *ptr = NULL; + CLR_RT_HeapBlock *ptr = nullptr; CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); int count = 0; @@ -263,8 +269,8 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributesNative___SZ NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock *returnArray = NULL; - CLR_RT_HeapBlock *callerType = NULL; + CLR_RT_HeapBlock *returnArray = nullptr; + CLR_RT_HeapBlock *callerType = nullptr; CLR_RT_TypeDef_Instance typeDefinition; int count = 0; @@ -352,7 +358,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributes( // parse next attribute, if there is another NANOCLR_CHECK_HRESULT(parser.Next(val)); - if (val == NULL) + if (val == nullptr) { break; } @@ -370,7 +376,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributes( returnArray++; // set next position to NULL - returnArray->SetObjectReference(NULL); + returnArray->SetObjectReference(nullptr); } else if (val->m_mode == CLR_RT_AttributeParser::Value::c_ConstructorArgument) { diff --git a/src/CLR/CorLib/corlib_native_System_String.cpp b/src/CLR/CorLib/corlib_native_System_String.cpp index b501180260..c5a847a21d 100644 --- a/src/CLR/CorLib/corlib_native_System_String.cpp +++ b/src/CLR/CorLib/corlib_native_System_String.cpp @@ -5,549 +5,547 @@ // #include "CorLib.h" - -static const CLR_UINT16 c_WhiteSpaces[] = -{ - 0x0009, - 0x000A, - 0x000B, - 0x000C, - 0x000D, - 0x0020, - 0x00A0, - 0x2000, - 0x2001, - 0x2002, - 0x2003, - 0x2004, - 0x2005, - 0x2006, - 0x2007, - 0x2008, - 0x2009, - 0x200A, - 0x200B, - 0x3000, - 0xFEFF, +static const CLR_UINT16 c_WhiteSpaces[] = { + 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x0020, 0x00A0, 0x2000, 0x2001, 0x2002, 0x2003, + 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B, 0x3000, 0xFEFF, }; //--// -HRESULT Library_corlib_native_System_String::CompareTo___I4__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::CompareTo___I4__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_String::CompareTo___I4__STRING( stack )); + NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_String::CompareTo___I4__STRING(stack)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::get_Chars___CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::get_Chars___CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const char* szText; + const char *szText; CLR_RT_UnicodeHelper uh; - CLR_UINT16 buf[ 3 ]; - int len; - int index; + CLR_UINT16 buf[3]; + int len; + int index; - szText = stack.Arg0().RecoverString(); FAULT_ON_NULL(szText); + szText = stack.Arg0().RecoverString(); + FAULT_ON_NULL(szText); - uh.SetInputUTF8( szText ); + uh.SetInputUTF8(szText); - len = uh.CountNumberOfCharacters() ; if(len < 0 ) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - index = stack.Arg1().NumericByRef().s4; if(index < 0 || index >= len) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + len = uh.CountNumberOfCharacters(); + if (len < 0) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + index = stack.Arg1().NumericByRef().s4; + if (index < 0 || index >= len) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - uh.m_outputUTF16 = buf; + uh.m_outputUTF16 = buf; uh.m_outputUTF16_size = MAXSTRLEN(buf); // // First move to the character, then read it. // - uh.ConvertFromUTF8( index, true ); - uh.ConvertFromUTF8( 1 , false ); + uh.ConvertFromUTF8(index, true); + uh.ConvertFromUTF8(1, false); - stack.SetResult( buf[ 0 ], DATATYPE_CHAR ); + stack.SetResult(buf[0], DATATYPE_CHAR); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(ToCharArray( stack, 0, -1 )); + NANOCLR_SET_AND_LEAVE(ToCharArray(stack, 0, -1)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::ToCharArray___SZARRAY_CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(ToCharArray( stack, stack.Arg1().NumericByRef().s4, stack.Arg2().NumericByRef().s4 )); + NANOCLR_SET_AND_LEAVE(ToCharArray(stack, stack.Arg1().NumericByRef().s4, stack.Arg2().NumericByRef().s4)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::get_Length___I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::get_Length___I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const char* szText = stack.Arg0().RecoverString(); FAULT_ON_NULL(szText); + const char *szText = stack.Arg0().RecoverString(); + FAULT_ON_NULL(szText); - CLR_RT_UnicodeHelper uh; uh.SetInputUTF8( szText ); + CLR_RT_UnicodeHelper uh; + uh.SetInputUTF8(szText); - stack.SetResult_I4( uh.CountNumberOfCharacters() ); + stack.SetResult_I4(uh.CountNumberOfCharacters()); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Split___SZARRAY_STRING__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Split___SZARRAY_STRING__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Split( stack, stack.Arg1(), 0x7FFFFFFF )); /// Sending INT_MAX instead of -1. + NANOCLR_SET_AND_LEAVE(Split(stack, stack.Arg1(), 0x7FFFFFFF)); /// Sending INT_MAX instead of -1. NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Split___SZARRAY_STRING__SZARRAY_CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Split___SZARRAY_STRING__SZARRAY_CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Split( stack, stack.Arg1(), stack.Arg2().NumericByRef().s4 )); + NANOCLR_SET_AND_LEAVE(Split(stack, stack.Arg1(), stack.Arg2().NumericByRef().s4)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Substring___STRING__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Substring___STRING__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Substring( stack, stack.Arg1().NumericByRef().s4, -1 )); + NANOCLR_SET_AND_LEAVE(Substring(stack, stack.Arg1().NumericByRef().s4, -1)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Substring___STRING__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Substring___STRING__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_INT32 length = stack.Arg2().NumericByRef().s4; - if(length < 0) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (length < 0) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - NANOCLR_SET_AND_LEAVE(Substring( stack, stack.Arg1().NumericByRef().s4, length )); + NANOCLR_SET_AND_LEAVE(Substring(stack, stack.Arg1().NumericByRef().s4, length)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Trim___STRING__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Trim___STRING__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Trim( stack, stack.Arg1().DereferenceArray(), true, true )); + NANOCLR_SET_AND_LEAVE(Trim(stack, stack.Arg1().DereferenceArray(), true, true)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::TrimStart___STRING__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::TrimStart___STRING__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Trim( stack, stack.Arg1().DereferenceArray(), true, false )); + NANOCLR_SET_AND_LEAVE(Trim(stack, stack.Arg1().DereferenceArray(), true, false)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::TrimEnd___STRING__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::TrimEnd___STRING__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Trim( stack, stack.Arg1().DereferenceArray(), false, true )); + NANOCLR_SET_AND_LEAVE(Trim(stack, stack.Arg1().DereferenceArray(), false, true)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::_ctor___VOID__SZARRAY_CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::_ctor___VOID__SZARRAY_CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(FromCharArray( stack, stack.Arg2().NumericByRef().s4, stack.Arg3().NumericByRef().s4 )); + NANOCLR_SET_AND_LEAVE(FromCharArray(stack, stack.Arg2().NumericByRef().s4, stack.Arg3().NumericByRef().s4)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::_ctor___VOID__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::_ctor___VOID__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(FromCharArray( stack, 0, -1 )); + NANOCLR_SET_AND_LEAVE(FromCharArray(stack, 0, -1)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::_ctor___VOID__CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::_ctor___VOID__CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_UINT16 ch = stack.Arg1().NumericByRef().u2; - int len = stack.Arg2().NumericByRef().s4; if(len < 0) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + CLR_UINT16 ch = stack.Arg1().NumericByRef().u2; + int len = stack.Arg2().NumericByRef().s4; + if (len < 0) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); { - CLR_RT_HeapBlock tmp; tmp.SetObjectReference( NULL ); - CLR_RT_ProtectFromGC gc( tmp ); + CLR_RT_HeapBlock tmp; + tmp.SetObjectReference(nullptr); + CLR_RT_ProtectFromGC gc(tmp); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( tmp, len, g_CLR_RT_WellKnownTypes.Char )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmp, len, g_CLR_RT_WellKnownTypes.Char)); { - CLR_RT_HeapBlock_Array* tmpArray = tmp.DereferenceArray(); - CLR_UINT16* pTmp = (CLR_UINT16*)tmpArray->GetFirstElement(); - CLR_UINT16* p; + CLR_RT_HeapBlock_Array *tmpArray = tmp.DereferenceArray(); + CLR_UINT16 *pTmp = (CLR_UINT16 *)tmpArray->GetFirstElement(); + CLR_UINT16 *p; - p = pTmp; while(len--) *p++ = ch; + p = pTmp; + while (len--) + *p++ = ch; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( stack.Arg0(), pTmp, tmpArray->m_numOfElements )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_String::CreateInstance(stack.Arg0(), pTmp, tmpArray->m_numOfElements)); } } NANOCLR_NOCLEANUP(); } - -HRESULT Library_corlib_native_System_String::CompareTo___I4__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::CompareTo___I4__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock& pThis = stack.Arg0(); // String references are special, they don't point to an object, they are the object. So use stack.Arg0() instead of stack.This() - CLR_RT_HeapBlock& pArg = stack.Arg1(); + CLR_RT_HeapBlock &pThis = stack.Arg0(); // String references are special, they don't point to an object, they are + // the object. So use stack.Arg0() instead of stack.This() + CLR_RT_HeapBlock &pArg = stack.Arg1(); - stack.SetResult_I4( CLR_RT_HeapBlock::Compare_Unsigned_Values( pThis, pArg ) ); + stack.SetResult_I4(CLR_RT_HeapBlock::Compare_Unsigned_Values(pThis, pArg)); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__SingleChar)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__SingleChar | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__SingleChar | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__MultipleChars)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__MultipleChars | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOfAny___I4__SZARRAY_CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__MultipleChars | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__String)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__String | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::IndexOf___I4__STRING__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__String | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar | c_IndexOf__Last )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__SingleChar | c_IndexOf__Last)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar | c_IndexOf__Last | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__SingleChar | c_IndexOf__Last | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__SingleChar | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE( + IndexOf(stack, c_IndexOf__SingleChar | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars | c_IndexOf__Last )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__MultipleChars | c_IndexOf__Last)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars | c_IndexOf__Last | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__MultipleChars | c_IndexOf__Last | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOfAny___I4__SZARRAY_CHAR__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__MultipleChars | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE( + IndexOf(stack, c_IndexOf__MultipleChars | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String | c_IndexOf__Last )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__String | c_IndexOf__Last)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String | c_IndexOf__Last | c_IndexOf__StartIndex )); + NANOCLR_SET_AND_LEAVE(IndexOf(stack, c_IndexOf__String | c_IndexOf__Last | c_IndexOf__StartIndex)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::LastIndexOf___I4__STRING__I4__I4(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(IndexOf( stack, c_IndexOf__String | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count )); + NANOCLR_SET_AND_LEAVE( + IndexOf(stack, c_IndexOf__String | c_IndexOf__Last | c_IndexOf__StartIndex | c_IndexOf__Count)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ToLower___STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::ToLower___STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(ChangeCase( stack, false )); + NANOCLR_SET_AND_LEAVE(ChangeCase(stack, false)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ToUpper___STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::ToUpper___STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(ChangeCase( stack, true )); + NANOCLR_SET_AND_LEAVE(ChangeCase(stack, true)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Trim___STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Trim___STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Trim( stack, NULL, true, true )); + NANOCLR_SET_AND_LEAVE(Trim(stack, nullptr, true, true)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_Boolean( CLR_RT_HeapBlock::Compare_Unsigned_Values( stack.Arg0(), stack.Arg1() ) == 0 ); + stack.SetResult_Boolean(CLR_RT_HeapBlock::Compare_Unsigned_Values(stack.Arg0(), stack.Arg1()) == 0); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_String::op_Equality___STATIC__BOOLEAN__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::op_Equality___STATIC__BOOLEAN__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING( stack )); + NANOCLR_SET_AND_LEAVE(Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING(stack)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::op_Inequality___STATIC__BOOLEAN__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::op_Inequality___STATIC__BOOLEAN__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING( stack )); + NANOCLR_CHECK_HRESULT(Library_corlib_native_System_String::Equals___STATIC__BOOLEAN__STRING__STRING(stack)); stack.NegateResult(); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Compare___STATIC__I4__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Compare___STATIC__I4__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stack.SetResult_I4( CLR_RT_HeapBlock::Compare_Unsigned_Values( stack.Arg0(), stack.Arg1() ) ); + stack.SetResult_I4(CLR_RT_HeapBlock::Compare_Unsigned_Values(stack.Arg0(), stack.Arg1())); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Concat( stack, &stack.Arg0(), 2 )); + NANOCLR_SET_AND_LEAVE(Concat(stack, &stack.Arg0(), 2)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Concat( stack, &stack.Arg0(), 3 )); + NANOCLR_SET_AND_LEAVE(Concat(stack, &stack.Arg0(), 3)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__STRING__STRING__STRING__STRING( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Concat( stack, &stack.Arg0(), 4 )); + NANOCLR_SET_AND_LEAVE(Concat(stack, &stack.Arg0(), 4)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__SZARRAY_STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_String::Concat___STATIC__STRING__SZARRAY_STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* pArray = stack.Arg0().DereferenceArray(); FAULT_ON_NULL(pArray); + CLR_RT_HeapBlock_Array *pArray = stack.Arg0().DereferenceArray(); + FAULT_ON_NULL(pArray); - NANOCLR_SET_AND_LEAVE(Concat( stack, (CLR_RT_HeapBlock*)pArray->GetFirstElement(), pArray->m_numOfElements )); + NANOCLR_SET_AND_LEAVE(Concat(stack, (CLR_RT_HeapBlock *)pArray->GetFirstElement(), pArray->m_numOfElements)); NANOCLR_NOCLEANUP(); } //--// -HRESULT Library_corlib_native_System_String::FromCharArray( CLR_RT_StackFrame& stack, int startIndex, int length ) +HRESULT Library_corlib_native_System_String::FromCharArray(CLR_RT_StackFrame &stack, int startIndex, int length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array; - CLR_UINT32 len; + CLR_RT_HeapBlock_Array *array; + CLR_UINT32 len; array = stack.Arg1().DereferenceArray(); if (!array || array->m_numOfElements == 0) @@ -558,85 +556,89 @@ HRESULT Library_corlib_native_System_String::FromCharArray( CLR_RT_StackFrame& s { len = array->m_numOfElements; - if (length == -1) + if (length == -1) length = len - startIndex; - if (CLR_RT_HeapBlock_Array::CheckRange(startIndex, length, len) == false) + if (CLR_RT_HeapBlock_Array::CheckRange(startIndex, length, len) == false) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(stack.Arg0(), (CLR_UINT16*)array->GetElement(startIndex), length)); + NANOCLR_SET_AND_LEAVE( + CLR_RT_HeapBlock_String::CreateInstance(stack.Arg0(), (CLR_UINT16 *)array->GetElement(startIndex), length)); } NANOCLR_NOCLEANUP(); } - -HRESULT Library_corlib_native_System_String::ToCharArray( CLR_RT_StackFrame& stack, int startIndex, int length ) +HRESULT Library_corlib_native_System_String::ToCharArray(CLR_RT_StackFrame &stack, int startIndex, int length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array; + CLR_RT_HeapBlock_Array *array; - NANOCLR_SET_AND_LEAVE(ConvertToCharArray( stack, stack.PushValueAndClear(), array, startIndex, length )); + NANOCLR_SET_AND_LEAVE(ConvertToCharArray(stack, stack.PushValueAndClear(), array, startIndex, length)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, int mode ) +HRESULT Library_corlib_native_System_String::IndexOf(CLR_RT_StackFrame &stack, int mode) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const char* szText; - int startIndex; - int count; - int pos; - const char* pString; - const CLR_UINT16* pChars; - int iChars = 0; + const char *szText; + int startIndex; + int count; + int pos; + const char *pString; + const CLR_UINT16 *pChars; + int iChars = 0; CLR_RT_UnicodeHelper inputIterator; - int inputLen; - int searchLen = 1; - - szText = stack.Arg0().RecoverString(); if(!szText) szText = ""; - pos = -1; - pString = NULL; - pChars = NULL; - - if(mode & c_IndexOf__SingleChar) + int inputLen; + int searchLen = 1; + + szText = stack.Arg0().RecoverString(); + if (!szText) + szText = ""; + pos = -1; + pString = nullptr; + pChars = nullptr; + + if (mode & c_IndexOf__SingleChar) { - pChars = (CLR_UINT16*)&stack.Arg1().NumericByRefConst().u2; + pChars = (CLR_UINT16 *)&stack.Arg1().NumericByRefConst().u2; iChars = 1; } - else if(mode & c_IndexOf__MultipleChars) + else if (mode & c_IndexOf__MultipleChars) { - CLR_RT_HeapBlock_Array* array = stack.Arg1().DereferenceArray(); FAULT_ON_NULL(array); + CLR_RT_HeapBlock_Array *array = stack.Arg1().DereferenceArray(); + FAULT_ON_NULL(array); - pChars = (const CLR_UINT16*)array->GetFirstElement(); - iChars = array->m_numOfElements; + pChars = (const CLR_UINT16 *)array->GetFirstElement(); + iChars = array->m_numOfElements; } - else if(mode & c_IndexOf__String) + else if (mode & c_IndexOf__String) { - pString = stack.Arg1().RecoverString(); FAULT_ON_NULL(pString); + pString = stack.Arg1().RecoverString(); + FAULT_ON_NULL(pString); // how long is the search string? - inputIterator.SetInputUTF8( pString ); + inputIterator.SetInputUTF8(pString); searchLen = inputIterator.CountNumberOfCharacters(); } // calculate input string length - inputIterator.SetInputUTF8( szText ); + inputIterator.SetInputUTF8(szText); inputLen = inputIterator.CountNumberOfCharacters(); // calculate start index - if(mode & c_IndexOf__StartIndex) + if (mode & c_IndexOf__StartIndex) { startIndex = stack.Arg2().NumericByRefConst().s4; } else { // for mode LastIndex... we are searching backwards toward the start of the string - if(mode & c_IndexOf__Last) + if (mode & c_IndexOf__Last) { startIndex = inputLen - 1; } @@ -647,18 +649,20 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, } // check the start index - if(startIndex < 0 || startIndex > inputLen) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (startIndex < 0 || startIndex > inputLen) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); // for mode LastIndex... with string we move the start index back by the search string length -1 - if((mode & c_IndexOf__String_Last) == c_IndexOf__String_Last) + if ((mode & c_IndexOf__String_Last) == c_IndexOf__String_Last) { startIndex -= searchLen - 1; // check the start index; if not in range skip the search - if(startIndex < 0 || startIndex > inputLen) goto Exit; + if (startIndex < 0 || startIndex > inputLen) + goto Exit; } - + // calculate the iteration count - if(mode & c_IndexOf__Count) + if (mode & c_IndexOf__Count) { // count form parameter count = stack.Arg3().NumericByRefConst().s4; @@ -666,7 +670,7 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, else { // for mode LastIndex... we are searching from start index backwards toward the start of the string - if(mode & c_IndexOf__Last) + if (mode & c_IndexOf__Last) { // backward until the start of string // one more time than the startIndex because we should iterate until zero @@ -681,50 +685,54 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, // for mode with string we reduce the count by the search string length -1 // if we search foreward - if((mode & c_IndexOf__String_Last) == c_IndexOf__String) + if ((mode & c_IndexOf__String_Last) == c_IndexOf__String) { count -= searchLen - 1; } - + // check the count - if(mode & c_IndexOf__Last) + if (mode & c_IndexOf__Last) { // check for backward mode; no exception; just exit - if(count > startIndex + 1) goto Exit; + if (count > startIndex + 1) + goto Exit; } else { // check for forward mode - if(startIndex + count > inputLen) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (startIndex + count > inputLen) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } - + // First move to the character, then read it. - if(inputIterator.ConvertFromUTF8( startIndex, true )) + if (inputIterator.ConvertFromUTF8(startIndex, true)) { // string mode? - if(pString) + if (pString) { // iterate thru all positions - while(count-- > 0) + while (count-- > 0) { - CLR_RT_UnicodeHelper inputString; inputString.SetInputUTF8( (const char*)inputIterator.m_inputUTF8 ); - CLR_RT_UnicodeHelper searchString; searchString.SetInputUTF8( pString ); + CLR_RT_UnicodeHelper inputString; + inputString.SetInputUTF8((const char *)inputIterator.m_inputUTF8); + CLR_RT_UnicodeHelper searchString; + searchString.SetInputUTF8(pString); bool finished = false; - - while(true) + + while (true) { - CLR_UINT16 bufInput[ 3 ]; - CLR_UINT16 bufSearch[ 3 ]; + CLR_UINT16 bufInput[3]; + CLR_UINT16 bufSearch[3]; - inputString.m_outputUTF16 = bufInput; + inputString.m_outputUTF16 = bufInput; inputString.m_outputUTF16_size = MAXSTRLEN(bufInput); - searchString.m_outputUTF16 = bufSearch; + searchString.m_outputUTF16 = bufSearch; searchString.m_outputUTF16_size = MAXSTRLEN(bufSearch); // read next char from search string; if no more chars to read (false) // then we are done and found the search string in the input string - if(searchString.ConvertFromUTF8( 1, false ) == false) + if (searchString.ConvertFromUTF8(1, false) == false) { pos = startIndex; finished = true; @@ -733,14 +741,14 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, // read the next char from the input string; if no more chars to read (false) // we didn't found the search string in the input string; we abort the search now - if(inputString.ConvertFromUTF8( 1, false ) == false) + if (inputString.ConvertFromUTF8(1, false) == false) { finished = true; break; } // does the char from input not match the char from the search string - if(bufInput[ 0 ] != bufSearch[ 0 ]) + if (bufInput[0] != bufSearch[0]) { // next iteration round but not finished break; @@ -752,13 +760,13 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, { break; } - + // reading forward or backward - if(mode & c_IndexOf__Last) + if (mode & c_IndexOf__Last) { startIndex--; // move one chars backward - if(inputIterator.MoveBackwardInUTF8( szText, 1 ) == false) + if (inputIterator.MoveBackwardInUTF8(szText, 1) == false) { break; } @@ -767,7 +775,7 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, { startIndex++; // move to the next char - if(inputIterator.ConvertFromUTF8( 1, true ) == false) + if (inputIterator.ConvertFromUTF8(1, true) == false) { break; } @@ -776,28 +784,28 @@ HRESULT Library_corlib_native_System_String::IndexOf( CLR_RT_StackFrame& stack, } // char mode? - if(pChars) + if (pChars) { // iterate thru all positions - while(count-- > 0) + while (count-- > 0) { - CLR_UINT16 buf[ 3 ]; + CLR_UINT16 buf[3]; - inputIterator.m_outputUTF16 = buf; + inputIterator.m_outputUTF16 = buf; inputIterator.m_outputUTF16_size = MAXSTRLEN(buf); // read the next char from the input string; if no more chars to read (false) // we didn't found the search chars in the input string - if(inputIterator.ConvertFromUTF8( 1, false ) == false) + if (inputIterator.ConvertFromUTF8(1, false) == false) { break; } // test each search char if it's a match - for(int i=0; iGetFirstElement(); + ptr = (CLR_UINT16 *)arrayTmp->GetFirstElement(); - for(CLR_UINT32 i=0; im_numOfElements; i++) + for (CLR_UINT32 i = 0; i < arrayTmp->m_numOfElements; i++) { CLR_UINT16 c = *ptr; - if(fToUpper) + if (fToUpper) { - if(c >= 'a' && c <= 'z') c += 'A' - 'a'; + if (c >= 'a' && c <= 'z') + c += 'A' - 'a'; } else { - if(c >= 'A' && c <= 'Z') c -= 'A' - 'a'; + if (c >= 'A' && c <= 'Z') + c -= 'A' - 'a'; } *ptr++ = c; } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), (CLR_UINT16*)arrayTmp->GetFirstElement(), arrayTmp->m_numOfElements )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( + stack.PushValue(), + (CLR_UINT16 *)arrayTmp->GetFirstElement(), + arrayTmp->m_numOfElements)); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::Substring( CLR_RT_StackFrame& stack, int startIndex, int length ) +HRESULT Library_corlib_native_System_String::Substring(CLR_RT_StackFrame &stack, int startIndex, int length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock refTmp; refTmp.SetObjectReference( NULL ); - CLR_RT_ProtectFromGC gc( refTmp ); - CLR_RT_HeapBlock_Array* arrayTmp; + CLR_RT_HeapBlock refTmp; + refTmp.SetObjectReference(nullptr); + CLR_RT_ProtectFromGC gc(refTmp); + CLR_RT_HeapBlock_Array *arrayTmp; - NANOCLR_CHECK_HRESULT(ConvertToCharArray( stack, refTmp, arrayTmp, 0, -1 )); + NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); - if(startIndex < 0 || startIndex > (int)arrayTmp->m_numOfElements) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (startIndex < 0 || startIndex > (int)arrayTmp->m_numOfElements) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - if(length == -1) + if (length == -1) { length = arrayTmp->m_numOfElements - startIndex; } else { - if(length < 0 || (startIndex + length) > (int)arrayTmp->m_numOfElements) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (length < 0 || (startIndex + length) > (int)arrayTmp->m_numOfElements) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( stack.PushValue(), (CLR_UINT16*)arrayTmp->GetElement( startIndex ), length )); + + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( + stack.PushValue(), + (CLR_UINT16 *)arrayTmp->GetElement(startIndex), + length)); NANOCLR_NOCLEANUP(); } - -HRESULT Library_corlib_native_System_String::Trim( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock_Array* arrayTrimChars, bool fStart, bool fEnd ) +HRESULT Library_corlib_native_System_String::Trim( + CLR_RT_StackFrame &stack, + CLR_RT_HeapBlock_Array *arrayTrimChars, + bool fStart, + bool fEnd) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock refTmp; refTmp.SetObjectReference( NULL ); - CLR_RT_ProtectFromGC gc( refTmp ); - CLR_RT_HeapBlock_Array* arrayTmp; - CLR_UINT16* pSrcStart; - CLR_UINT16* pSrcEnd; + CLR_RT_HeapBlock refTmp; + refTmp.SetObjectReference(nullptr); + CLR_RT_ProtectFromGC gc(refTmp); + CLR_RT_HeapBlock_Array *arrayTmp; + CLR_UINT16 *pSrcStart; + CLR_UINT16 *pSrcEnd; - NANOCLR_CHECK_HRESULT(ConvertToCharArray( stack, refTmp, arrayTmp, 0, -1 )); + NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); - pSrcStart = (CLR_UINT16*)arrayTmp->GetFirstElement(); - pSrcEnd = &pSrcStart[ arrayTmp->m_numOfElements ]; + pSrcStart = (CLR_UINT16 *)arrayTmp->GetFirstElement(); + pSrcEnd = &pSrcStart[arrayTmp->m_numOfElements]; - const CLR_UINT16* pTrim; - CLR_UINT32 iTrim; + const CLR_UINT16 *pTrim; + CLR_UINT32 iTrim; - if(arrayTrimChars && arrayTrimChars->m_numOfElements) + if (arrayTrimChars && arrayTrimChars->m_numOfElements) { - pTrim = (const CLR_UINT16*)arrayTrimChars->GetFirstElement(); - iTrim = arrayTrimChars->m_numOfElements; + pTrim = (const CLR_UINT16 *)arrayTrimChars->GetFirstElement(); + iTrim = arrayTrimChars->m_numOfElements; } else { - pTrim = c_WhiteSpaces; - iTrim = ARRAYSIZE(c_WhiteSpaces); + pTrim = c_WhiteSpaces; + iTrim = ARRAYSIZE(c_WhiteSpaces); } //--// - if(fStart) + if (fStart) { - while(pSrcStart < pSrcEnd) + while (pSrcStart < pSrcEnd) { - const CLR_UINT16* p = pTrim; - CLR_UINT32 i; + const CLR_UINT16 *p = pTrim; + CLR_UINT32 i; - for(i=0; im_numOfElements > 0) + arrayChars = chars.DereferenceArray(); + + if (arrayChars != nullptr && arrayChars->m_numOfElements > 0) { - pChars = (CLR_UINT16*)arrayChars->GetFirstElement(); + pChars = (CLR_UINT16 *)arrayChars->GetFirstElement(); cChars = arrayChars->m_numOfElements; } else { - pChars = &c_WhiteSpaces[ 0 ]; + pChars = &c_WhiteSpaces[0]; cChars = ARRAYSIZE(c_WhiteSpaces); } - - arrayDst = NULL; + + arrayDst = nullptr; { - CLR_RT_HeapBlock refSrc; refSrc.SetObjectReference( NULL ); - CLR_RT_ProtectFromGC gc( refSrc ); + CLR_RT_HeapBlock refSrc; + refSrc.SetObjectReference(nullptr); + CLR_RT_ProtectFromGC gc(refSrc); - NANOCLR_CHECK_HRESULT(ConvertToCharArray( stack, refSrc, arraySrc, 0, -1 )); + NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refSrc, arraySrc, 0, -1)); - for(int pass=0; pass<2; pass++) + for (int pass = 0; pass < 2; pass++) { - CLR_UINT16* pSrcStart = (CLR_UINT16*)arraySrc->GetFirstElement(); - CLR_UINT16* pSrc = pSrcStart; - int count = 0; - bool fFound = false; + CLR_UINT16 *pSrcStart = (CLR_UINT16 *)arraySrc->GetFirstElement(); + CLR_UINT16 *pSrc = pSrcStart; + int count = 0; + bool fFound = false; bool fContinueSearching = true; - for(CLR_UINT32 iSrc=0; iSrc <= arraySrc->m_numOfElements; iSrc++, pSrc++) + for (CLR_UINT32 iSrc = 0; iSrc <= arraySrc->m_numOfElements; iSrc++, pSrc++) { - if(iSrc == arraySrc->m_numOfElements) + if (iSrc == arraySrc->m_numOfElements) { fFound = true; } @@ -1040,11 +1069,11 @@ HRESULT Library_corlib_native_System_String::Split( CLR_RT_StackFrame& stack, CL } else if (fContinueSearching) { - const CLR_UINT16* pCharsT = pChars; + const CLR_UINT16 *pCharsT = pChars; - for(CLR_UINT32 iChars=0; iCharsGetElement( count ); + CLR_RT_HeapBlock *str = (CLR_RT_HeapBlock *)arrayDst->GetElement(count); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( *str, pSrcStart, (CLR_UINT32)(pSrc - pSrcStart) )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( + *str, + pSrcStart, + (CLR_UINT32)(pSrc - pSrcStart))); pSrcStart = pSrc + 1; } @@ -1068,11 +1100,12 @@ HRESULT Library_corlib_native_System_String::Split( CLR_RT_StackFrame& stack, CL } } - if(pass == 0) + if (pass == 0) { - CLR_RT_HeapBlock& refTarget = stack.PushValue(); + CLR_RT_HeapBlock &refTarget = stack.PushValue(); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( refTarget, count, g_CLR_RT_WellKnownTypes.String )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(refTarget, count, g_CLR_RT_WellKnownTypes.String)); arrayDst = refTarget.DereferenceArray(); } @@ -1085,98 +1118,113 @@ HRESULT Library_corlib_native_System_String::Split( CLR_RT_StackFrame& stack, CL //--// -HRESULT Library_corlib_native_System_String::Concat( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock* array, int num ) +HRESULT Library_corlib_native_System_String::Concat(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *array, int num) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - - CLR_RT_HeapBlock* ptrSrc; - const char* szTextSrc; - char* szTextDst = NULL; - CLR_UINT32 totLen; - CLR_UINT32 len; - + + CLR_RT_HeapBlock *ptrSrc; + const char *szTextSrc; + char *szTextDst = nullptr; + CLR_UINT32 totLen; + CLR_UINT32 len; + totLen = 0; - - for(int i=0; i<2; i++) + + for (int i = 0; i < 2; i++) { ptrSrc = array; - - for(int iStr=0; iStrDataType() == DATATYPE_OBJECT); _ASSERTE(FIMPLIES(ptrSrc->Dereference(), ptrSrc->Dereference()->DataType() == DATATYPE_STRING)); - + szTextSrc = ptrSrc->RecoverString(); - if(szTextSrc) + if (szTextSrc) { - len = (CLR_UINT32)hal_strlen_s( szTextSrc ); - - if(i==0) + len = (CLR_UINT32)hal_strlen_s(szTextSrc); + + if (i == 0) { totLen += len; } else - { - memcpy( szTextDst, szTextSrc, len ); - + { + memcpy(szTextDst, szTextSrc, len); + szTextDst += len; - } + } } - + ptrSrc++; } - - if(i==0) + + if (i == 0) { - //push return value - CLR_RT_HeapBlock& blkResult = stack.PushValue(); - CLR_RT_HeapBlock_String* str = CLR_RT_HeapBlock_String::CreateInstance( blkResult, totLen ); CHECK_ALLOCATION(str); - - szTextDst = (char*)str->StringText(); - szTextDst[ totLen ] = 0; + // push return value + CLR_RT_HeapBlock &blkResult = stack.PushValue(); + CLR_RT_HeapBlock_String *str = CLR_RT_HeapBlock_String::CreateInstance(blkResult, totLen); + CHECK_ALLOCATION(str); + + szTextDst = (char *)str->StringText(); + szTextDst[totLen] = 0; } } - + NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ConvertToCharArray( const char* szText, CLR_RT_HeapBlock& ref, CLR_RT_HeapBlock_Array*& array, int startIndex, int length ) +HRESULT Library_corlib_native_System_String::ConvertToCharArray( + const char *szText, + CLR_RT_HeapBlock &ref, + CLR_RT_HeapBlock_Array *&array, + int startIndex, + int length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_UnicodeHelper uh; - int totLength; + int totLength; FAULT_ON_NULL(szText); - uh.SetInputUTF8( szText ); + uh.SetInputUTF8(szText); - totLength = uh.CountNumberOfCharacters(); if(totLength < 0) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + totLength = uh.CountNumberOfCharacters(); + if (totLength < 0) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - if(length == -1) length = totLength; + if (length == -1) + length = totLength; - if(CLR_RT_HeapBlock_Array::CheckRange( startIndex, length, totLength ) == false) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (CLR_RT_HeapBlock_Array::CheckRange(startIndex, length, totLength) == false) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, length, g_CLR_RT_WellKnownTypes.Char )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(ref, length, g_CLR_RT_WellKnownTypes.Char)); array = ref.DereferenceArray(); - uh.m_outputUTF16 = (CLR_UINT16*)array->GetFirstElement(); - uh.m_outputUTF16_size = array->m_numOfElements; + uh.m_outputUTF16 = (CLR_UINT16 *)array->GetFirstElement(); + uh.m_outputUTF16_size = array->m_numOfElements; // // First move to the character, then read it. // - uh.ConvertFromUTF8( startIndex , true ); - uh.ConvertFromUTF8( array->m_numOfElements, false ); + uh.ConvertFromUTF8(startIndex, true); + uh.ConvertFromUTF8(array->m_numOfElements, false); NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_String::ConvertToCharArray( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock& ref, CLR_RT_HeapBlock_Array*& array, int startIndex, int length ) +HRESULT Library_corlib_native_System_String::ConvertToCharArray( + CLR_RT_StackFrame &stack, + CLR_RT_HeapBlock &ref, + CLR_RT_HeapBlock_Array *&array, + int startIndex, + int length) { NATIVE_PROFILE_CLR_CORE(); - return ConvertToCharArray( stack.Arg0().RecoverString(), ref, array, startIndex, length ); + return ConvertToCharArray(stack.Arg0().RecoverString(), ref, array, startIndex, length); } diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Monitor.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Monitor.cpp index ecfdb4959c..4e801ed427 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Monitor.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Monitor.cpp @@ -5,27 +5,27 @@ // #include "CorLib.h" - -HRESULT Library_corlib_native_System_Threading_Monitor::Enter___STATIC__VOID__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Monitor::Enter___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_StackFrame* caller = NULL; - - if(stack.Arg0().Dereference() == NULL) + CLR_RT_StackFrame *caller = nullptr; + + if (stack.Arg0().Dereference() == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_ARGUMENT_NULL); } - - switch(stack.m_customState) + + switch (stack.m_customState) { - case 0: + case 0: { - caller = stack.Caller(); FAULT_ON_NULL(caller); // We need to set the constraint on the caller, not on us... + caller = stack.Caller(); + FAULT_ON_NULL(caller); // We need to set the constraint on the caller, not on us... - hr = g_CLR_RT_ExecutionEngine.LockObject( stack.Arg0(), caller->m_owningSubThread, TIMEOUT_INFINITE, false ); - if(hr == CLR_E_THREAD_WAITING) + hr = g_CLR_RT_ExecutionEngine.LockObject(stack.Arg0(), caller->m_owningSubThread, TIMEOUT_INFINITE, false); + if (hr == CLR_E_THREAD_WAITING) { stack.m_customState = 1; } @@ -34,32 +34,33 @@ HRESULT Library_corlib_native_System_Threading_Monitor::Enter___STATIC__VOID__OB } break; - case 1: - NANOCLR_SET_AND_LEAVE(S_OK); - break; + case 1: + NANOCLR_SET_AND_LEAVE(S_OK); + break; - default: - NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + default: + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_Threading_Monitor::Exit___STATIC__VOID__OBJECT( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Threading_Monitor::Exit___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - - CLR_RT_StackFrame* caller = NULL; - if(stack.Arg0().Dereference() == NULL) + CLR_RT_StackFrame *caller = nullptr; + + if (stack.Arg0().Dereference() == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_ARGUMENT_NULL); } - - caller = stack.Caller(); FAULT_ON_NULL(caller); // We need to set the constraint on the caller, not on us... - NANOCLR_SET_AND_LEAVE(g_CLR_RT_ExecutionEngine.UnlockObject( stack.Arg0(), caller->m_owningSubThread )); + caller = stack.Caller(); + FAULT_ON_NULL(caller); // We need to set the constraint on the caller, not on us... + + NANOCLR_SET_AND_LEAVE(g_CLR_RT_ExecutionEngine.UnlockObject(stack.Arg0(), caller->m_owningSubThread)); NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp index 6e1730725a..fc60177417 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp @@ -48,7 +48,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::Start___VOID(CLR_RT_Stack // Don't start twice... // NANOCLR_CHECK_HRESULT(GetThread(stack, th, false, false)); - if (th != NULL) + if (th != nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -177,7 +177,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_Priority___SystemThre // 2. Sub-thread with different priority may have been created in // Library_spot_native_Microsoft_SPOT_ExecutionConstraint::Install___STATIC__VOID__I4__I4 - if (th != NULL) + if (th != nullptr) { pri = th->GetThreadPriority(); @@ -272,7 +272,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_IsAlive___BOOLEAN(CLR GetThread(stack, th, false, false); - stack.SetResult_Boolean(th != NULL && th->m_status != CLR_RT_Thread::TH_S_Terminated); + stack.SetResult_Boolean(th != nullptr && th->m_status != CLR_RT_Thread::TH_S_Terminated); NANOCLR_NOCLEANUP_NOLABEL(); } @@ -331,7 +331,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_ThreadState___SystemT NANOCLR_CHECK_HRESULT(GetThread(stack, th, false, false)); - if (th == NULL) + if (th == nullptr) { val = 8; // Unstarted } @@ -449,7 +449,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_CurrentThread___STATI // If we are a thread spawned by the debugger to perform evaluations, // return the thread object that correspond to thread that has focus in debugger. thread = thread->m_realThread; -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // Find an existing managed thread, if it exists // making sure to only return the managed object association with the current appdomain @@ -458,7 +458,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_CurrentThread___STATI { CLR_RT_HeapBlock *pManagedThread = src->m_objectPtr; bool fFound = false; - _ASSERTE(pManagedThread != NULL); + _ASSERTE(pManagedThread != nullptr); #if defined(NANOCLR_APPDOMAINS) { @@ -567,8 +567,8 @@ HRESULT Library_corlib_native_System_Threading_Thread::GetThread( NANOCLR_HEADER(); CLR_RT_ObjectToEvent_Source *src = GetThreadReference(stack); - th = (src == NULL) ? NULL : (CLR_RT_Thread *)src->m_eventPtr; - if (th == NULL) + th = (src == nullptr) ? nullptr : (CLR_RT_Thread *)src->m_eventPtr; + if (th == nullptr) { if (mustBeStarted) { diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index 05dfc7b44d..65c4684b24 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -203,8 +203,11 @@ CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_HeapBlock & if (dt == DATATYPE_OBJECT || dt == DATATYPE_BYREF) { obj = obj->Dereference(); + if (!obj) - return NULL; + { + return nullptr; + } dt = obj->DataType(); } @@ -224,5 +227,5 @@ CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_HeapBlock & return (CLR_INT64 *)&obj[FIELD___ticks].NumericByRef().s8; } - return NULL; + return nullptr; } diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index 4b389a829c..6b50203db2 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -38,7 +38,7 @@ HRESULT Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInf const char *szText = stack.Arg1().RecoverString(); FAULT_ON_NULL(szText); - NANOCLR_SET_AND_LEAVE(GetMethods(stack, szText, stack.Arg2().NumericByRef().s4, NULL, 0, false)); + NANOCLR_SET_AND_LEAVE(GetMethods(stack, szText, stack.Arg2().NumericByRef().s4, nullptr, 0, false)); NANOCLR_NOCLEANUP(); } @@ -91,7 +91,7 @@ HRESULT Library_corlib_native_System_Type::GetConstructor___SystemReflectionCons NANOCLR_SET_AND_LEAVE(GetMethods( stack, - NULL, + nullptr, c_BindingFlags_CreateInstance | c_BindingFlags_Instance | c_BindingFlags_Public | c_BindingFlags_NonPublic, pParams, iParams, @@ -107,9 +107,9 @@ HRESULT Library_corlib_native_System_Type::GetConstructors___SZARRAY_SystemRefle NANOCLR_SET_AND_LEAVE(GetMethods( stack, - NULL, + nullptr, c_BindingFlags_CreateInstance | c_BindingFlags_Instance | c_BindingFlags_Public, - NULL, + nullptr, 0, true)); @@ -133,7 +133,7 @@ HRESULT Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInf } else { - pParams = NULL; + pParams = nullptr; iParams = 0; } @@ -153,7 +153,7 @@ HRESULT Library_corlib_native_System_Type::GetMethod___SystemReflectionMethodInf const char *szText = stack.Arg1().RecoverString(); FAULT_ON_NULL(szText); - NANOCLR_SET_AND_LEAVE(GetMethods(stack, szText, c_BindingFlags_DefaultLookup, NULL, 0, false)); + NANOCLR_SET_AND_LEAVE(GetMethods(stack, szText, c_BindingFlags_DefaultLookup, nullptr, 0, false)); NANOCLR_NOCLEANUP(); } @@ -299,11 +299,11 @@ HRESULT Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType_ if (szAssembly) { - assm = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, fVersion ? &version : NULL, fVersion); + assm = g_CLR_RT_TypeSystem.FindAssembly(szAssembly, fVersion ? &version : nullptr, fVersion); } else { - assm = NULL; + assm = nullptr; } if (g_CLR_RT_TypeSystem.FindTypeDef(szClass, assm, td)) @@ -331,8 +331,7 @@ HRESULT Library_corlib_native_System_Type::GetTypeInternal___STATIC__SystemType_ if (!g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->FindAppDomainAssembly(inst.m_assm)) NANOCLR_SET_AND_LEAVE(S_OK); #endif - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); hbObj->SetReflection(reflex); } @@ -465,14 +464,18 @@ HRESULT Library_corlib_native_System_Type::GetFields( if (bindingFlags & c_BindingFlags_IgnoreCase) { // If strings are not eqaul - continue - if (szText != NULL && hal_stricmp(fieldName, szText)) + if (szText != nullptr && hal_stricmp(fieldName, szText)) + { continue; + } } else // Case sensitive compare { // If strings are not eqaul - continue - if (szText != NULL && strcmp(fieldName, szText)) + if (szText != nullptr && strcmp(fieldName, szText)) + { continue; + } } index.Set(td.Assembly(), i + tdR->firstStaticField); @@ -629,7 +632,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( continue; } - if (szText != NULL && !strcmp(assm->GetString(md->name), szText) == false) + if (szText != nullptr && !strcmp(assm->GetString(md->name), szText) == false) { continue; } @@ -718,10 +721,18 @@ HRESULT Library_corlib_native_System_Type::GetMethods( NANOCLR_CHECK_HRESULT(parserLeft.Advance(resLeft)); NANOCLR_CHECK_HRESULT(parserRight.Advance(resRight)); - bool fRightBetterMatchT = - CLR_RT_TypeSystem::MatchSignatureElement(resLeft, resRight, parserLeft, parserRight, true); - bool fLeftBetterMatchT = - CLR_RT_TypeSystem::MatchSignatureElement(resRight, resLeft, parserLeft, parserRight, true); + bool fRightBetterMatchT = CLR_RT_TypeSystem::MatchSignatureElement( + resLeft, + resRight, + parserLeft, + parserRight, + true); + bool fLeftBetterMatchT = CLR_RT_TypeSystem::MatchSignatureElement( + resRight, + resLeft, + parserLeft, + parserRight, + true); // If fLeftBetterMatchT && fRightBetterMatchT, one is assignable from the other, they // must be the same diff --git a/src/CLR/CorLib/corlib_native_System_WeakReference.cpp b/src/CLR/CorLib/corlib_native_System_WeakReference.cpp index 3302217807..5c2d8bf60a 100644 --- a/src/CLR/CorLib/corlib_native_System_WeakReference.cpp +++ b/src/CLR/CorLib/corlib_native_System_WeakReference.cpp @@ -74,7 +74,7 @@ void CLR_RT_HeapBlock_WeakReference::RecoverObjects(CLR_RT_DblLinkedList &lstHea weak->InsertInPriorityOrder(); - weak = NULL; + weak = nullptr; } } @@ -111,9 +111,9 @@ HRESULT CLR_RT_HeapBlock_WeakReference::GetTarget(CLR_RT_HeapBlock &targetRefere if (CLR_RT_BinaryFormatter::SerializationEnabled()) { - targetReference.SetObjectReference(NULL); + targetReference.SetObjectReference(nullptr); - if (m_targetDirect == NULL && m_targetSerialized != NULL) + if (m_targetDirect == nullptr && m_targetSerialized != nullptr) { if (m_identity.m_flags & CLR_RT_HeapBlock_WeakReference::WR_ArrayOfBytes) { @@ -125,15 +125,15 @@ HRESULT CLR_RT_HeapBlock_WeakReference::GetTarget(CLR_RT_HeapBlock &targetRefere input.SetObjectReference(m_targetSerialized); CLR_RT_HeapBlock output; - output.SetObjectReference(NULL); + output.SetObjectReference(nullptr); { CLR_RT_ProtectFromGC gcInput(input); CLR_RT_ProtectFromGC gcOutput(output); - if (FAILED(CLR_RT_BinaryFormatter::Deserialize(output, input, NULL, 0))) + if (FAILED(CLR_RT_BinaryFormatter::Deserialize(output, input, nullptr, 0))) { - output.SetObjectReference(NULL); + output.SetObjectReference(nullptr); } } @@ -175,7 +175,7 @@ HRESULT Library_corlib_native_System_WeakReference::get_IsAlive___BOOLEAN(CLR_RT weak = (CLR_RT_HeapBlock_WeakReference *)stack.This(); FAULT_ON_NULL(weak); - stack.SetResult_Boolean(weak->m_targetDirect != NULL); + stack.SetResult_Boolean(weak->m_targetDirect != nullptr); NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/Core/CLR_RT_DblLinkedList.cpp b/src/CLR/Core/CLR_RT_DblLinkedList.cpp index a438c27683..e9d65ef132 100644 --- a/src/CLR/Core/CLR_RT_DblLinkedList.cpp +++ b/src/CLR/Core/CLR_RT_DblLinkedList.cpp @@ -11,8 +11,8 @@ void CLR_RT_DblLinkedList::DblLinkedList_Initialize() { NATIVE_PROFILE_CLR_CORE(); m_first = Tail(); - m_null = NULL; - m_last = Head(); + m_null = nullptr; + m_last = Head(); } void CLR_RT_DblLinkedList::DblLinkedList_PushToCache() @@ -20,11 +20,13 @@ void CLR_RT_DblLinkedList::DblLinkedList_PushToCache() NATIVE_PROFILE_CLR_CORE(); ValidateList(); - while(true) + while (true) { - CLR_RT_HeapBlock_Node* node = ExtractFirstNode(); if(!node) break; + CLR_RT_HeapBlock_Node *node = ExtractFirstNode(); + if (!node) + break; - g_CLR_RT_EventCache.Append_Node( node ); + g_CLR_RT_EventCache.Append_Node(node); } } @@ -33,11 +35,13 @@ void CLR_RT_DblLinkedList::DblLinkedList_Release() NATIVE_PROFILE_CLR_CORE(); ValidateList(); - while(true) + while (true) { - CLR_RT_HeapBlock_Node* node = ExtractFirstNode(); if(!node) break; + CLR_RT_HeapBlock_Node *node = ExtractFirstNode(); + if (!node) + break; - CLR_RT_Memory::Release( node ); + CLR_RT_Memory::Release(node); } } @@ -46,9 +50,9 @@ int CLR_RT_DblLinkedList::NumOfNodes() NATIVE_PROFILE_CLR_CORE(); ValidateList(); - int num = 0; + int num = 0; - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Node,node,(*this)) + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Node, node, (*this)) { num++; } @@ -60,8 +64,8 @@ int CLR_RT_DblLinkedList::NumOfNodes() void CLR_RT_DblLinkedList::Relocate() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_first ); - CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_last ); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_first); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_last); } #if NANOCLR_VALIDATE_HEAP >= NANOCLR_VALIDATE_HEAP_2_DblLinkedList @@ -70,14 +74,18 @@ void CLR_RT_DblLinkedList::ValidateList() { NATIVE_PROFILE_CLR_CORE(); - if(m_null != NULL) NANOCLR_DEBUG_STOP(); + if (m_null != nullptr) + { + NANOCLR_DEBUG_STOP(); + } - CLR_RT_HeapBlock_Node* prev = Head(); - CLR_RT_HeapBlock_Node* node = prev->Next(); + CLR_RT_HeapBlock_Node *prev = Head(); + CLR_RT_HeapBlock_Node *node = prev->Next(); - while(node) + while (node) { - if(node->Prev() != prev) NANOCLR_DEBUG_STOP(); + if (node->Prev() != prev) + NANOCLR_DEBUG_STOP(); prev = node; node = prev->Next(); @@ -85,4 +93,3 @@ void CLR_RT_DblLinkedList::ValidateList() } #endif - diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index d691589dd0..54367d9f07 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -307,12 +307,12 @@ HRESULT CLR_RT_HeapBlock::SetObjectCls(const CLR_RT_TypeDef_Index &cls) } m_data.objectHeader.cls = cls; - m_data.objectHeader.lock = NULL; + m_data.objectHeader.lock = nullptr; NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock::SetGenericInstanceObject(const CLR_RT_TypeSpec_Index& genericType) +HRESULT CLR_RT_HeapBlock::SetGenericInstanceObject(const CLR_RT_TypeSpec_Index &genericType) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -325,7 +325,7 @@ HRESULT CLR_RT_HeapBlock::SetGenericInstanceObject(const CLR_RT_TypeSpec_Index& } m_data.genericInstance.genericType = genericType; - m_data.genericInstance.ptr = NULL; + m_data.genericInstance.ptr = nullptr; NANOCLR_NOCLEANUP(); } @@ -750,7 +750,7 @@ void CLR_RT_HeapBlock::AssignAndPinReferencedObject(const CLR_RT_HeapBlock &valu // This code is called only if "fixed" keyword is present in the managed code. Executed on assignment to "fixed" // pointer. First check if there is object referenced by the local var. We unpin it, since the reference is // replaced. - if ((m_data.objectReference.ptr != NULL && m_id.type.dataType == DATATYPE_ARRAY_BYREF) || + if ((m_data.objectReference.ptr != nullptr && m_id.type.dataType == DATATYPE_ARRAY_BYREF) || m_id.type.dataType == DATATYPE_BYREF) { // Unpin the object that has been pointed by local variable. @@ -770,7 +770,7 @@ void CLR_RT_HeapBlock::AssignAndPinReferencedObject(const CLR_RT_HeapBlock &valu } // Pin the object referenced by local variable. - if ((m_data.objectReference.ptr != NULL && m_id.type.dataType == DATATYPE_ARRAY_BYREF) || + if ((m_data.objectReference.ptr != nullptr && m_id.type.dataType == DATATYPE_ARRAY_BYREF) || m_id.type.dataType == DATATYPE_BYREF) { m_data.objectReference.ptr->Pin(); @@ -986,7 +986,9 @@ CLR_RT_HeapBlock *CLR_RT_HeapBlock::FixBoxingReference() CLR_RT_TypeDef_Instance inst; if (!inst.InitializeFromIndex(src->ObjectCls())) - return NULL; + { + return nullptr; + } if (inst.target->dataType != DATATYPE_VALUETYPE) // It's a boxed primitive/enum type. { @@ -1006,7 +1008,7 @@ bool CLR_RT_HeapBlock::IsZero() const switch (DataType()) { case DATATYPE_OBJECT: - return (m_data.objectReference.ptr == NULL); + return (m_data.objectReference.ptr == nullptr); case DATATYPE_I8: case DATATYPE_U8: @@ -1369,7 +1371,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( if (rightObj->DataType() == DATATYPE_VALUETYPE) { CLR_RT_TypeDef_Instance inst; - CLR_RT_HeapBlock *obj = NULL; + CLR_RT_HeapBlock *obj = nullptr; if (!inst.InitializeFromIndex(rightObj->ObjectCls())) { @@ -1390,7 +1392,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( } else { - if (rightObj == NULL) + if (rightObj == nullptr) { return false; } @@ -2396,7 +2398,7 @@ HRESULT CLR_RT_HeapBlock::TransparentProxyValidate() const CLR_RT_AppDomain *appDomain = TransparentProxyAppDomain(); CLR_RT_HeapBlock *obj = TransparentProxyDereference(); - if (appDomain == NULL || !appDomain->IsLoaded()) + if (appDomain == nullptr || !appDomain->IsLoaded()) NANOCLR_SET_AND_LEAVE(CLR_E_APPDOMAIN_EXITED); FAULT_ON_NULL(obj); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index a7b4e9541c..4398ec952a 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -19,7 +19,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( CLR_RT_TypeDef_Index cls; CLR_RT_TypeDef_Instance inst; - reference.SetObjectReference(NULL); + reference.SetObjectReference(nullptr); if ((CLR_INT32)length < 0) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); @@ -359,7 +359,7 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( for (int i = 0; i < length; i++, ptrSrc++, ptrDst++) { - if (ptrSrc->DataType() == DATATYPE_OBJECT && ptrSrc->Dereference() == NULL) + if (ptrSrc->DataType() == DATATYPE_OBJECT && ptrSrc->Dereference() == nullptr) { ; } @@ -382,7 +382,7 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( CLR_RT_TypeDescriptor descDst; CLR_RT_HeapBlock ref; CLR_RT_HeapBlock elem; - elem.SetObjectReference(NULL); + elem.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(elem); NANOCLR_CHECK_HRESULT(descDst.InitializeFromObject(*arrayDst)); @@ -393,7 +393,7 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( ref.InitializeArrayReferenceDirect(*arraySrc, indexSrc++); NANOCLR_CHECK_HRESULT(elem.LoadFromReference(ref)); - if (elem.DataType() == DATATYPE_OBJECT && elem.Dereference() == NULL) + if (elem.DataType() == DATATYPE_OBJECT && elem.Dereference() == nullptr) { ; } diff --git a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp index 725ef95f2c..e46ab3c798 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp @@ -5,58 +5,61 @@ // #include "Core.h" -HRESULT CLR_RT_HeapBlock_ArrayList::GetItem( CLR_INT32 index, CLR_RT_HeapBlock*& value ) +HRESULT CLR_RT_HeapBlock_ArrayList::GetItem(CLR_INT32 index, CLR_RT_HeapBlock *&value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(index < 0 || index >= GetSize()) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (index < 0 || index >= GetSize()) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - value = ((CLR_RT_HeapBlock*)GetItems()->GetElement( index ))->Dereference(); + value = ((CLR_RT_HeapBlock *)GetItems()->GetElement(index))->Dereference(); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_ArrayList::SetItem( CLR_INT32 index, CLR_RT_HeapBlock* value ) +HRESULT CLR_RT_HeapBlock_ArrayList::SetItem(CLR_INT32 index, CLR_RT_HeapBlock *value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(index < 0 || index >= GetSize()) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (index < 0 || index >= GetSize()) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - ((CLR_RT_HeapBlock*)GetItems()->GetElement( index ))->SetObjectReference( value ); + ((CLR_RT_HeapBlock *)GetItems()->GetElement(index))->SetObjectReference(value); NANOCLR_NOCLEANUP(); } // May Trigger GC, but parameter value will be protected -HRESULT CLR_RT_HeapBlock_ArrayList::Add( CLR_RT_HeapBlock* value, CLR_INT32& index ) +HRESULT CLR_RT_HeapBlock_ArrayList::Add(CLR_RT_HeapBlock *value, CLR_INT32 &index) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* items = GetItems(); - CLR_INT32 size = GetSize(); - CLR_INT32 capacity = items->m_numOfElements; + CLR_RT_HeapBlock_Array *items = GetItems(); + CLR_INT32 size = GetSize(); + CLR_INT32 capacity = items->m_numOfElements; - if(size == capacity) + if (size == capacity) { // Protect value from GC, in case EnsureCapacity triggers one - CLR_RT_HeapBlock valueHB; valueHB.SetObjectReference( value ); - CLR_RT_ProtectFromGC gc( valueHB ); - - NANOCLR_CHECK_HRESULT(EnsureCapacity( size + 1, capacity )); + CLR_RT_HeapBlock valueHB; + valueHB.SetObjectReference(value); + CLR_RT_ProtectFromGC gc(valueHB); + + NANOCLR_CHECK_HRESULT(EnsureCapacity(size + 1, capacity)); // needs to update the reference to the new array items = GetItems(); } - SetSize( size + 1 ); + SetSize(size + 1); - ((CLR_RT_HeapBlock*)items->GetElement( size ))->SetObjectReference( value ); + ((CLR_RT_HeapBlock *)items->GetElement(size))->SetObjectReference(value); index = size; - + NANOCLR_NOCLEANUP(); } @@ -65,145 +68,153 @@ HRESULT CLR_RT_HeapBlock_ArrayList::Clear() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(GetItems()->ClearElements( 0, GetSize() )); + NANOCLR_CHECK_HRESULT(GetItems()->ClearElements(0, GetSize())); + + SetSize(0); - SetSize( 0 ); - NANOCLR_NOCLEANUP(); } // May Trigger GC, but parameter value will be protected -HRESULT CLR_RT_HeapBlock_ArrayList::Insert( CLR_INT32 index, CLR_RT_HeapBlock* value ) +HRESULT CLR_RT_HeapBlock_ArrayList::Insert(CLR_INT32 index, CLR_RT_HeapBlock *value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* items = GetItems(); - CLR_INT32 size = GetSize(); - CLR_INT32 capacity = items->m_numOfElements; + CLR_RT_HeapBlock_Array *items = GetItems(); + CLR_INT32 size = GetSize(); + CLR_INT32 capacity = items->m_numOfElements; - if(index < 0 || index > size) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (index < 0 || index > size) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - if(size == capacity) + if (size == capacity) { // Protect value from GC, in case EnsureCapacity triggers one - CLR_RT_HeapBlock valueHB; valueHB.SetObjectReference( value ); - CLR_RT_ProtectFromGC gc( valueHB ); - - NANOCLR_CHECK_HRESULT(EnsureCapacity( size + 1, capacity )); + CLR_RT_HeapBlock valueHB; + valueHB.SetObjectReference(value); + CLR_RT_ProtectFromGC gc(valueHB); + + NANOCLR_CHECK_HRESULT(EnsureCapacity(size + 1, capacity)); // needs to update the reference to the new array items = GetItems(); } - if(index < size) + if (index < size) { // Move everything up one slot. - CLR_RT_HeapBlock* current = (CLR_RT_HeapBlock*)items->GetElement( size ); - CLR_RT_HeapBlock* end = (CLR_RT_HeapBlock*)items->GetElement( index ); + CLR_RT_HeapBlock *current = (CLR_RT_HeapBlock *)items->GetElement(size); + CLR_RT_HeapBlock *end = (CLR_RT_HeapBlock *)items->GetElement(index); do { - current->Assign( *(current - 1) ); - } - while(--current != end); + current->Assign(*(current - 1)); + } while (--current != end); } - ((CLR_RT_HeapBlock*)items->GetElement( index ))->SetObjectReference( value ); + ((CLR_RT_HeapBlock *)items->GetElement(index))->SetObjectReference(value); + + SetSize(size + 1); - SetSize( size + 1 ); - NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_ArrayList::RemoveAt( CLR_INT32 index ) +HRESULT CLR_RT_HeapBlock_ArrayList::RemoveAt(CLR_INT32 index) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* items = GetItems(); - CLR_INT32 size = GetSize(); + CLR_RT_HeapBlock_Array *items = GetItems(); + CLR_INT32 size = GetSize(); - if(index < 0 || index >= size) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if (index < 0 || index >= size) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); // Need to shift everything, if it's not the last item - if(index < size - 1) + if (index < size - 1) { // Move everything down one slot. - CLR_RT_HeapBlock* current = (CLR_RT_HeapBlock*)items->GetElement( index ); - CLR_RT_HeapBlock* end = (CLR_RT_HeapBlock*)items->GetElement( size - 1 ); + CLR_RT_HeapBlock *current = (CLR_RT_HeapBlock *)items->GetElement(index); + CLR_RT_HeapBlock *end = (CLR_RT_HeapBlock *)items->GetElement(size - 1); do { - current->Assign( *(current + 1) ); - } - while(++current != end); + current->Assign(*(current + 1)); + } while (++current != end); } size--; - ((CLR_RT_HeapBlock*)items->GetElement( size ))->SetObjectReference( NULL ); + ((CLR_RT_HeapBlock *)items->GetElement(size))->SetObjectReference(nullptr); + + SetSize(size); - SetSize( size ); - NANOCLR_NOCLEANUP(); } // May Trigger GC -HRESULT CLR_RT_HeapBlock_ArrayList::SetCapacity( CLR_UINT32 newCapacity ) +HRESULT CLR_RT_HeapBlock_ArrayList::SetCapacity(CLR_UINT32 newCapacity) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* items = GetItems(); - CLR_UINT32 size = GetSize(); + CLR_RT_HeapBlock_Array *items = GetItems(); + CLR_UINT32 size = GetSize(); - if(newCapacity != items->m_numOfElements) // if capacity is changing + if (newCapacity != items->m_numOfElements) // if capacity is changing { - CLR_RT_HeapBlock newItemsHB; - CLR_RT_HeapBlock_Array* newItems; - - if(newCapacity < size) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + CLR_RT_HeapBlock newItemsHB; + CLR_RT_HeapBlock_Array *newItems; + + if (newCapacity < size) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); - if(newCapacity < c_DefaultCapacity) + if (newCapacity < c_DefaultCapacity) { newCapacity = c_DefaultCapacity; } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newItemsHB, newCapacity, g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(newItemsHB, newCapacity, g_CLR_RT_WellKnownTypes.Object)); newItems = newItemsHB.DereferenceArray(); - if(size > 0) + if (size > 0) { - memcpy( newItems->GetFirstElement(), items->GetFirstElement(), size * sizeof(CLR_RT_HeapBlock) ); + memcpy(newItems->GetFirstElement(), items->GetFirstElement(), size * sizeof(CLR_RT_HeapBlock)); } - SetItems( newItems ); + SetItems(newItems); } - + NANOCLR_NOCLEANUP(); } // May Trigger GC -HRESULT CLR_RT_HeapBlock_ArrayList::EnsureCapacity( CLR_INT32 min, CLR_INT32 currentCapacity ) +HRESULT CLR_RT_HeapBlock_ArrayList::EnsureCapacity(CLR_INT32 min, CLR_INT32 currentCapacity) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(currentCapacity < min) + if (currentCapacity < min) { CLR_INT32 newCapacity = currentCapacity * 3 / 2; - if(newCapacity < min) newCapacity = min; + if (newCapacity < min) + newCapacity = min; - NANOCLR_SET_AND_LEAVE(SetCapacity( newCapacity )); + NANOCLR_SET_AND_LEAVE(SetCapacity(newCapacity)); } - + NANOCLR_NOCLEANUP(); } //--// -CT_ASSERT(Library_corlib_native_System_Collections_ArrayList__FIELD___items == Library_corlib_native_System_Collections_ArrayList::FIELD___items); -CT_ASSERT(Library_corlib_native_System_Collections_ArrayList__FIELD___size == Library_corlib_native_System_Collections_ArrayList::FIELD___size ); +CT_ASSERT( + Library_corlib_native_System_Collections_ArrayList__FIELD___items == + Library_corlib_native_System_Collections_ArrayList::FIELD___items); +CT_ASSERT( + Library_corlib_native_System_Collections_ArrayList__FIELD___size == + Library_corlib_native_System_Collections_ArrayList::FIELD___size); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_BinaryBlob.cpp b/src/CLR/Core/CLR_RT_HeapBlock_BinaryBlob.cpp index 7a224eba5b..fecabed004 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_BinaryBlob.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_BinaryBlob.cpp @@ -7,51 +7,64 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_BinaryBlob::CreateInstance( CLR_RT_HeapBlock& reference, CLR_UINT32 length, CLR_RT_MarkingHandler mark, CLR_RT_RelocationHandler relocate, CLR_UINT32 flags ) +HRESULT CLR_RT_HeapBlock_BinaryBlob::CreateInstance( + CLR_RT_HeapBlock &reference, + CLR_UINT32 length, + CLR_RT_MarkingHandler mark, + CLR_RT_RelocationHandler relocate, + CLR_UINT32 flags) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_BinaryBlob* obj = Allocate( length, flags ); CHECK_ALLOCATION(obj); + CLR_RT_HeapBlock_BinaryBlob *obj = Allocate(length, flags); + CHECK_ALLOCATION(obj); - reference.SetObjectReference( obj ); + reference.SetObjectReference(obj); - obj->SetBinaryBlobHandlers( mark, relocate ); - obj->m_assembly = NULL; + obj->SetBinaryBlobHandlers(mark, relocate); + obj->m_assembly = nullptr; NANOCLR_NOCLEANUP(); } -CLR_RT_HeapBlock_BinaryBlob* CLR_RT_HeapBlock_BinaryBlob::Allocate( CLR_UINT32 length, CLR_UINT32 flags ) +CLR_RT_HeapBlock_BinaryBlob *CLR_RT_HeapBlock_BinaryBlob::Allocate(CLR_UINT32 length, CLR_UINT32 flags) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT32 totLength = (CLR_UINT32)( sizeof(CLR_RT_HeapBlock_BinaryBlob) + length ); + CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_BinaryBlob) + length); - CLR_RT_HeapBlock_BinaryBlob* obj; + CLR_RT_HeapBlock_BinaryBlob *obj; - if(flags & CLR_RT_HeapBlock::HB_Event) + if (flags & CLR_RT_HeapBlock::HB_Event) { - obj = EVENTCACHE_EXTRACT_NODE_AS_BYTES(g_CLR_RT_EventCache,CLR_RT_HeapBlock_BinaryBlob,DATATYPE_BINARY_BLOB_HEAD,flags,totLength); + obj = EVENTCACHE_EXTRACT_NODE_AS_BYTES( + g_CLR_RT_EventCache, + CLR_RT_HeapBlock_BinaryBlob, + DATATYPE_BINARY_BLOB_HEAD, + flags, + totLength); } else { - obj = (CLR_RT_HeapBlock_BinaryBlob*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_BINARY_BLOB_HEAD, flags, totLength ); + obj = (CLR_RT_HeapBlock_BinaryBlob *) + g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects(DATATYPE_BINARY_BLOB_HEAD, flags, totLength); } - if(obj) + if (obj) { - obj->SetBinaryBlobHandlers( NULL, NULL ); + obj->SetBinaryBlobHandlers(nullptr, nullptr); } return obj; } -void CLR_RT_HeapBlock_BinaryBlob::Release( bool fEvent ) +void CLR_RT_HeapBlock_BinaryBlob::Release(bool fEvent) { NATIVE_PROFILE_CLR_CORE(); - SetBinaryBlobHandlers( NULL, NULL ); + SetBinaryBlobHandlers(nullptr, nullptr); - if(fEvent) g_CLR_RT_EventCache.Append_Node( this ); + if (fEvent) + g_CLR_RT_EventCache.Append_Node(this); } void CLR_RT_HeapBlock_BinaryBlob::Relocate() @@ -59,9 +72,8 @@ void CLR_RT_HeapBlock_BinaryBlob::Relocate() NATIVE_PROFILE_CLR_CORE(); CLR_RT_RelocationHandler relocate = BinaryBlobRelocationHandler(); - if(relocate) + if (relocate) { - relocate( this ); + relocate(this); } } - diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp index 4d817403e3..6d8e8862f4 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp @@ -7,19 +7,22 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_Delegate::CreateInstance( CLR_RT_HeapBlock& reference, const CLR_RT_MethodDef_Index& ftn, CLR_RT_StackFrame* call ) +HRESULT CLR_RT_HeapBlock_Delegate::CreateInstance( + CLR_RT_HeapBlock &reference, + const CLR_RT_MethodDef_Index &ftn, + CLR_RT_StackFrame *call) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - reference.SetObjectReference( NULL ); + reference.SetObjectReference(nullptr); CLR_UINT32 length = 0; - #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) - if(call) +#if defined(NANOCLR_DELEGATE_PRESERVE_STACK) + if (call) { - NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) + NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame, ptr, call) { length++; } @@ -29,38 +32,44 @@ HRESULT CLR_RT_HeapBlock_Delegate::CreateInstance( CLR_RT_HeapBlock& reference, // // Limit depth to three callers. // - if(length > 3) length = 3; - #else + if (length > 3) + length = 3; +#else (void)call; - #endif +#endif CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Delegate) + length * sizeof(CLR_RT_MethodDef_Index)); - CLR_RT_HeapBlock_Delegate* dlg = (CLR_RT_HeapBlock_Delegate*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_DELEGATE_HEAD, 0, totLength ); CHECK_ALLOCATION(dlg); + CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( + DATATYPE_DELEGATE_HEAD, + 0, + totLength); + CHECK_ALLOCATION(dlg); - reference.SetObjectReference( dlg ); + reference.SetObjectReference(dlg); dlg->ClearData(); dlg->m_cls.Clear(); - dlg->m_ftn = ftn; + dlg->m_ftn = ftn; #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) dlg->m_numOfStackFrames = length; #endif - - dlg->m_object.SetObjectReference( NULL ); + + dlg->m_object.SetObjectReference(nullptr); #if defined(NANOCLR_APPDOMAINS) dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); #endif #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) - if(call) + if (call) { - CLR_RT_MethodDef_Index* callStack = dlg->GetStackFrames(); + CLR_RT_MethodDef_Index *callStack = dlg->GetStackFrames(); - NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) + NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame, ptr, call) { - if(length-- == 0) break; + if (length-- == 0) + break; *callStack++ = ptr->m_call; } @@ -76,4 +85,3 @@ void CLR_RT_HeapBlock_Delegate::Relocate() NATIVE_PROFILE_CLR_CORE(); m_object.Relocate__HeapBlock(); } - diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp index 16c70646b9..6046cb8896 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp @@ -7,32 +7,37 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_Delegate_List::CreateInstance( CLR_RT_HeapBlock_Delegate_List*& list, CLR_UINT32 length ) +HRESULT CLR_RT_HeapBlock_Delegate_List::CreateInstance(CLR_RT_HeapBlock_Delegate_List *&list, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Delegate_List) + length * sizeof(CLR_RT_HeapBlock)); - list = (CLR_RT_HeapBlock_Delegate_List*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_DELEGATELIST_HEAD, 0, totLength ); CHECK_ALLOCATION(list); + list = (CLR_RT_HeapBlock_Delegate_List *) + g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects(DATATYPE_DELEGATELIST_HEAD, 0, totLength); + CHECK_ALLOCATION(list); list->ClearData(); list->m_cls.Clear(); list->m_length = length; - list->m_flags = 0; + list->m_flags = 0; NANOCLR_NOCLEANUP(); } -CLR_RT_HeapBlock* CLR_RT_HeapBlock_Delegate_List::CopyAndCompress( CLR_RT_HeapBlock* src, CLR_RT_HeapBlock* dst, CLR_UINT32 num ) +CLR_RT_HeapBlock *CLR_RT_HeapBlock_Delegate_List::CopyAndCompress( + CLR_RT_HeapBlock *src, + CLR_RT_HeapBlock *dst, + CLR_UINT32 num) { NATIVE_PROFILE_CLR_CORE(); - while(num--) + while (num--) { - CLR_RT_HeapBlock_Delegate* dlg = src->DereferenceDelegate(); - if(dlg) + CLR_RT_HeapBlock_Delegate *dlg = src->DereferenceDelegate(); + if (dlg) { - dst->SetObjectReference( dlg ); + dst->SetObjectReference(dlg); dst++; } @@ -47,90 +52,96 @@ CLR_RT_HeapBlock* CLR_RT_HeapBlock_Delegate_List::CopyAndCompress( CLR_RT_HeapBl return dst; } -HRESULT CLR_RT_HeapBlock_Delegate_List::Change( CLR_RT_HeapBlock& reference, CLR_RT_HeapBlock& delegateSrc, CLR_RT_HeapBlock& delegateTarget, bool fCombine, bool fWeak ) +HRESULT CLR_RT_HeapBlock_Delegate_List::Change( + CLR_RT_HeapBlock &reference, + CLR_RT_HeapBlock &delegateSrc, + CLR_RT_HeapBlock &delegateTarget, + bool fCombine, + bool fWeak) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Delegate_List* dlgListSrc; - CLR_RT_HeapBlock_Delegate_List* dlgListDst; - CLR_RT_HeapBlock_Delegate* dlg; - CLR_RT_HeapBlock* newDlgs; - CLR_RT_HeapBlock* oldDlgs; - CLR_UINT32 oldNum; - CLR_UINT32 newNum; + CLR_RT_HeapBlock_Delegate_List *dlgListSrc; + CLR_RT_HeapBlock_Delegate_List *dlgListDst; + CLR_RT_HeapBlock_Delegate *dlg; + CLR_RT_HeapBlock *newDlgs; + CLR_RT_HeapBlock *oldDlgs; + CLR_UINT32 oldNum; + CLR_UINT32 newNum; CLR_UINT32 num = 0; - reference.SetObjectReference( NULL ); + reference.SetObjectReference(nullptr); - if(delegateSrc .DataType() != DATATYPE_OBJECT || - delegateTarget.DataType() != DATATYPE_OBJECT ) + if (delegateSrc.DataType() != DATATYPE_OBJECT || delegateTarget.DataType() != DATATYPE_OBJECT) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } dlg = delegateTarget.DereferenceDelegate(); - if(dlg == NULL) + if (dlg == nullptr) { - reference.SetObjectReference( delegateSrc.DereferenceDelegate() ); + reference.SetObjectReference(delegateSrc.DereferenceDelegate()); NANOCLR_SET_AND_LEAVE(S_OK); } - if(dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) + if (dlg->DataType() == DATATYPE_DELEGATELIST_HEAD) { - CLR_RT_HeapBlock intermediate; intermediate.Assign( delegateSrc ); - CLR_RT_ProtectFromGC gc( intermediate ); + CLR_RT_HeapBlock intermediate; + intermediate.Assign(delegateSrc); + CLR_RT_ProtectFromGC gc(intermediate); - dlgListDst = (CLR_RT_HeapBlock_Delegate_List*)dlg; - newDlgs = dlgListDst->GetDelegates(); + dlgListDst = (CLR_RT_HeapBlock_Delegate_List *)dlg; + newDlgs = dlgListDst->GetDelegates(); - for(num=0; numm_length; num++, newDlgs++) + for (num = 0; num < dlgListDst->m_length; num++, newDlgs++) { - if(newDlgs->DataType() == DATATYPE_OBJECT && newDlgs->DereferenceDelegate() != NULL) // The delegate could have been GC'ed. + if (newDlgs->DataType() == DATATYPE_OBJECT && + newDlgs->DereferenceDelegate() != nullptr) // The delegate could have been GC'ed. { - NANOCLR_CHECK_HRESULT(Change( reference, intermediate, *newDlgs, fCombine, fWeak )); + NANOCLR_CHECK_HRESULT(Change(reference, intermediate, *newDlgs, fCombine, fWeak)); - intermediate.Assign( reference ); + intermediate.Assign(reference); } } } else { dlgListSrc = delegateSrc.DereferenceDelegateList(); - if(dlgListSrc == NULL) + if (dlgListSrc == nullptr) { - oldDlgs = NULL; - oldNum = 0; + oldDlgs = nullptr; + oldNum = 0; } else { - switch(dlgListSrc->DataType()) + switch (dlgListSrc->DataType()) { - case DATATYPE_DELEGATE_HEAD: - oldDlgs = &delegateSrc; - oldNum = 1; - break; - - case DATATYPE_DELEGATELIST_HEAD: - oldDlgs = dlgListSrc->GetDelegates(); - oldNum = dlgListSrc->m_length; - break; - - default: - NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + case DATATYPE_DELEGATE_HEAD: + oldDlgs = &delegateSrc; + oldNum = 1; + break; + + case DATATYPE_DELEGATELIST_HEAD: + oldDlgs = dlgListSrc->GetDelegates(); + oldNum = dlgListSrc->m_length; + break; + + default: + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } } - if(fCombine) + if (fCombine) { - if(oldNum == 0 && fWeak == false) + if (oldNum == 0 && fWeak == false) { // // Empty input list, copy the delegate. // - reference.Assign( delegateTarget ); + reference.Assign(delegateTarget); NANOCLR_SET_AND_LEAVE(S_OK); } @@ -140,34 +151,34 @@ HRESULT CLR_RT_HeapBlock_Delegate_List::Change( CLR_RT_HeapBlock& reference, CLR } else { - for(num=0, newDlgs=oldDlgs; numDereferenceDelegate(); - if(ptr) + CLR_RT_HeapBlock_Delegate *ptr = newDlgs->DereferenceDelegate(); + if (ptr) { - if( ptr->DelegateFtn().data == dlg->DelegateFtn().data && - ptr->m_object.Dereference() == dlg->m_object.Dereference() ) + if (ptr->DelegateFtn().data == dlg->DelegateFtn().data && + ptr->m_object.Dereference() == dlg->m_object.Dereference()) { break; } } } - if(num == oldNum) + if (num == oldNum) { - reference.Assign( delegateSrc ); // Nothing to remove. + reference.Assign(delegateSrc); // Nothing to remove. NANOCLR_SET_AND_LEAVE(S_OK); } - if(oldNum == 2 && (dlgListSrc->m_flags & CLR_RT_HeapBlock_Delegate_List::c_Weak) == 0) + if (oldNum == 2 && (dlgListSrc->m_flags & CLR_RT_HeapBlock_Delegate_List::c_Weak) == 0) { - reference.Assign( oldDlgs[ 1-num ] ); // Convert from a list to delegate. + reference.Assign(oldDlgs[1 - num]); // Convert from a list to delegate. NANOCLR_SET_AND_LEAVE(S_OK); } - if(oldNum == 1) + if (oldNum == 1) { - reference.SetObjectReference( NULL ); // Oops, empty delegate... + reference.SetObjectReference(nullptr); // Oops, empty delegate... NANOCLR_SET_AND_LEAVE(S_OK); } @@ -176,50 +187,58 @@ HRESULT CLR_RT_HeapBlock_Delegate_List::Change( CLR_RT_HeapBlock& reference, CLR newNum = oldNum - 1; } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate_List::CreateInstance( dlgListDst, newNum )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate_List::CreateInstance(dlgListDst, newNum)); dlgListDst->m_cls = dlg->m_cls; newDlgs = dlgListDst->GetDelegates(); - if(fCombine) + if (fCombine) { - newDlgs = dlgListDst->CopyAndCompress( oldDlgs, newDlgs, oldNum ); + newDlgs = dlgListDst->CopyAndCompress(oldDlgs, newDlgs, oldNum); - newDlgs->Assign( delegateTarget ); + newDlgs->Assign(delegateTarget); } else { - newDlgs = dlgListDst->CopyAndCompress( oldDlgs , newDlgs, num++ ); - newDlgs = dlgListDst->CopyAndCompress( oldDlgs + num, newDlgs, oldNum - num ); + newDlgs = dlgListDst->CopyAndCompress(oldDlgs, newDlgs, num++); + newDlgs = dlgListDst->CopyAndCompress(oldDlgs + num, newDlgs, oldNum - num); } dlgListDst->m_flags = (dlgListSrc && oldNum > 1) ? dlgListSrc->m_flags : 0; - if(fWeak) dlgListDst->m_flags |= CLR_RT_HeapBlock_Delegate_List::c_Weak; + if (fWeak) + dlgListDst->m_flags |= CLR_RT_HeapBlock_Delegate_List::c_Weak; - reference.SetObjectReference( dlgListDst ); + reference.SetObjectReference(dlgListDst); } NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_Delegate_List::Combine( CLR_RT_HeapBlock& reference, CLR_RT_HeapBlock& delegateSrc, CLR_RT_HeapBlock& delegateNew, bool fWeak ) +HRESULT CLR_RT_HeapBlock_Delegate_List::Combine( + CLR_RT_HeapBlock &reference, + CLR_RT_HeapBlock &delegateSrc, + CLR_RT_HeapBlock &delegateNew, + bool fWeak) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Change( reference, delegateSrc, delegateNew, true, fWeak )); + NANOCLR_SET_AND_LEAVE(Change(reference, delegateSrc, delegateNew, true, fWeak)); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_Delegate_List::Remove( CLR_RT_HeapBlock& reference, CLR_RT_HeapBlock& delegateSrc, CLR_RT_HeapBlock& delegateOld ) +HRESULT CLR_RT_HeapBlock_Delegate_List::Remove( + CLR_RT_HeapBlock &reference, + CLR_RT_HeapBlock &delegateSrc, + CLR_RT_HeapBlock &delegateOld) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_SET_AND_LEAVE(Change( reference, delegateSrc, delegateOld, false, false )); + NANOCLR_SET_AND_LEAVE(Change(reference, delegateSrc, delegateOld, false, false)); NANOCLR_NOCLEANUP(); } @@ -227,6 +246,5 @@ HRESULT CLR_RT_HeapBlock_Delegate_List::Remove( CLR_RT_HeapBlock& reference, CLR void CLR_RT_HeapBlock_Delegate_List::Relocate() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate( GetDelegates(), m_length ); + CLR_RT_GarbageCollector::Heap_Relocate(GetDelegates(), m_length); } - diff --git a/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp index 9a12d80505..a2e10b7eb4 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp @@ -13,7 +13,7 @@ HRESULT CLR_RT_HeapBlock_GenericInstance::CreateInstance(CLR_RT_HeapBlock& refer NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); -// reference.SetObjectReference( NULL ); +// reference.SetObjectReference( nullptr ); // CLR_UINT32 length = 0; @@ -48,7 +48,7 @@ HRESULT CLR_RT_HeapBlock_GenericInstance::CreateInstance(CLR_RT_HeapBlock& refer // dlg->m_numOfStackFrames = length; // #endif -// dlg->m_object.SetObjectReference( NULL ); +// dlg->m_object.SetObjectReference( nullptr ); // #if defined(NANOCLR_APPDOMAINS) // dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp index b46c5835d8..4cb2ef96e5 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp @@ -138,7 +138,7 @@ void CLR_RT_HeapBlock_Lock::ChangeOwner() { case DATATYPE_VALUETYPE: case DATATYPE_CLASS: - ptr->SetObjectLock(NULL); + ptr->SetObjectLock(nullptr); break; default: diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp index 813c13ebda..93f6b79e42 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp @@ -8,83 +8,87 @@ #if (NANOCLR_SYSTEM_COLLECTIONS == TRUE) #include -HRESULT CLR_RT_HeapBlock_Queue::Dequeue( CLR_RT_HeapBlock*& value ) +HRESULT CLR_RT_HeapBlock_Queue::Dequeue(CLR_RT_HeapBlock *&value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_INT32 head = Head(); - CLR_RT_HeapBlock* removed; + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_INT32 head = Head(); + CLR_RT_HeapBlock *removed; - if(size == 0) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); + if (size == 0) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); - removed = (CLR_RT_HeapBlock*)array->GetElement( head ); + removed = (CLR_RT_HeapBlock *)array->GetElement(head); value = removed->Dereference(); - removed->SetObjectReference( NULL ); + removed->SetObjectReference(nullptr); - SetHead( (head + 1) % array->m_numOfElements ); - - SetSize( size - 1 ); + SetHead((head + 1) % array->m_numOfElements); + + SetSize(size - 1); NANOCLR_NOCLEANUP(); } // May Trigger GC, but parameter value will be protected -HRESULT CLR_RT_HeapBlock_Queue::Enqueue( CLR_RT_HeapBlock* value ) +HRESULT CLR_RT_HeapBlock_Queue::Enqueue(CLR_RT_HeapBlock *value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_INT32 tail = GetTail(); - CLR_INT32 capacity = array->m_numOfElements; + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_INT32 tail = GetTail(); + CLR_INT32 capacity = array->m_numOfElements; - if(size == capacity) + if (size == capacity) { // Set new capacity CLR_RT_HeapBlock newArrayHB; - + // Protect value from GC, in case CreateInstance triggers one - CLR_RT_HeapBlock valueHB; valueHB.SetObjectReference( value ); - CLR_RT_ProtectFromGC gc( valueHB ); + CLR_RT_HeapBlock valueHB; + valueHB.SetObjectReference(value); + CLR_RT_ProtectFromGC gc(valueHB); capacity *= 2; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object)); array = newArrayHB.DereferenceArray(); - CopyTo( array, 0 ); + CopyTo(array, 0); tail = size; - SetArray( array ); - SetHead ( 0 ); - SetTail ( tail ); + SetArray(array); + SetHead(0); + SetTail(tail); } - ((CLR_RT_HeapBlock*)array->GetElement( tail ))->SetObjectReference( value ); + ((CLR_RT_HeapBlock *)array->GetElement(tail))->SetObjectReference(value); - SetTail( (tail + 1) % capacity ); + SetTail((tail + 1) % capacity); - SetSize( size + 1 ); + SetSize(size + 1); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_Queue::Peek( CLR_RT_HeapBlock*& value ) +HRESULT CLR_RT_HeapBlock_Queue::Peek(CLR_RT_HeapBlock *&value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(GetSize() == 0) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); + if (GetSize() == 0) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); - value = ((CLR_RT_HeapBlock*)GetArray()->GetElement( Head() ))->Dereference(); + value = ((CLR_RT_HeapBlock *)GetArray()->GetElement(Head()))->Dereference(); NANOCLR_NOCLEANUP(); } @@ -94,69 +98,77 @@ HRESULT CLR_RT_HeapBlock_Queue::Clear() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_INT32 head = Head(); - CLR_INT32 tail = GetTail(); + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_INT32 head = Head(); + CLR_INT32 tail = GetTail(); - if(size > 0) + if (size > 0) { - if(head < tail) + if (head < tail) { - NANOCLR_CHECK_HRESULT(array->ClearElements( head, size )); + NANOCLR_CHECK_HRESULT(array->ClearElements(head, size)); } else { - NANOCLR_CHECK_HRESULT(array->ClearElements( head, array->m_numOfElements - head )); - NANOCLR_CHECK_HRESULT(array->ClearElements( 0 , tail )); + NANOCLR_CHECK_HRESULT(array->ClearElements(head, array->m_numOfElements - head)); + NANOCLR_CHECK_HRESULT(array->ClearElements(0, tail)); } - - SetSize( 0 ); + + SetSize(0); } - SetHead( 0 ); - SetTail( 0 ); + SetHead(0); + SetTail(0); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_Queue::ObjArrayMemcpy( CLR_RT_HeapBlock_Array* arraySrc, int indexSrc, CLR_RT_HeapBlock_Array* arrayDst, int indexDst, int length ) +HRESULT CLR_RT_HeapBlock_Queue::ObjArrayMemcpy( + CLR_RT_HeapBlock_Array *arraySrc, + int indexSrc, + CLR_RT_HeapBlock_Array *arrayDst, + int indexDst, + int length) { NANOCLR_HEADER(); - memcpy( arraySrc->GetElement( indexSrc ), arrayDst->GetElement( indexDst ), length * sizeof(CLR_RT_HeapBlock) ); + memcpy(arraySrc->GetElement(indexSrc), arrayDst->GetElement(indexDst), length * sizeof(CLR_RT_HeapBlock)); NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT CLR_RT_HeapBlock_Queue::CopyTo( CLR_RT_HeapBlock_Array* toArray, CLR_INT32 index ) +HRESULT CLR_RT_HeapBlock_Queue::CopyTo(CLR_RT_HeapBlock_Array *toArray, CLR_INT32 index) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_INT32 head = Head(); - CLR_INT32 tail = GetTail(); - - // if the target array is of type Object, we don't need to call the complex Array::Copy() since there will be no casting involved - HRESULT (*arrayCopy)( CLR_RT_HeapBlock_Array*, int, CLR_RT_HeapBlock_Array*, int, int ) = + + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_INT32 head = Head(); + CLR_INT32 tail = GetTail(); + + // if the target array is of type Object, we don't need to call the complex Array::Copy() since there will be no + // casting involved + HRESULT(*arrayCopy) + (CLR_RT_HeapBlock_Array *, int, CLR_RT_HeapBlock_Array *, int, int) = (toArray->m_typeOfElement == DATATYPE_OBJECT) ? ObjArrayMemcpy : CLR_RT_HeapBlock_Array::Copy; - - if(((CLR_INT32)toArray->m_numOfElements) - index < size) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - if(size > 0) + if (((CLR_INT32)toArray->m_numOfElements) - index < size) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + + if (size > 0) { - if(head < tail) + if (head < tail) { - NANOCLR_SET_AND_LEAVE(arrayCopy( array, head, toArray, index, size )); + NANOCLR_SET_AND_LEAVE(arrayCopy(array, head, toArray, index, size)); } else { CLR_INT32 firstPart = array->m_numOfElements - head; - NANOCLR_CHECK_HRESULT(arrayCopy( array, head, toArray, index , firstPart )); - NANOCLR_SET_AND_LEAVE(arrayCopy( array, 0 , toArray, index + firstPart, tail )); + NANOCLR_CHECK_HRESULT(arrayCopy(array, head, toArray, index, firstPart)); + NANOCLR_SET_AND_LEAVE(arrayCopy(array, 0, toArray, index + firstPart, tail)); } } @@ -165,9 +177,17 @@ HRESULT CLR_RT_HeapBlock_Queue::CopyTo( CLR_RT_HeapBlock_Array* toArray, CLR_INT //--// -CT_ASSERT(Library_nf_system_collections_System_Collections_Queue__FIELD___array == Library_nf_system_collections_System_Collections_Queue::FIELD___array); -CT_ASSERT(Library_nf_system_collections_System_Collections_Queue__FIELD___head == Library_nf_system_collections_System_Collections_Queue::FIELD___head ); -CT_ASSERT(Library_nf_system_collections_System_Collections_Queue__FIELD___tail == Library_nf_system_collections_System_Collections_Queue::FIELD___tail ); -CT_ASSERT(Library_nf_system_collections_System_Collections_Queue__FIELD___size == Library_nf_system_collections_System_Collections_Queue::FIELD___size ); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Queue__FIELD___array == + Library_nf_system_collections_System_Collections_Queue::FIELD___array); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Queue__FIELD___head == + Library_nf_system_collections_System_Collections_Queue::FIELD___head); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Queue__FIELD___tail == + Library_nf_system_collections_System_Collections_Queue::FIELD___tail); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Queue__FIELD___size == + Library_nf_system_collections_System_Collections_Queue::FIELD___size); #endif diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp index 388b4c3dfc..de7096ec38 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp @@ -10,80 +10,84 @@ #include //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_Stack::Pop( CLR_RT_HeapBlock*& value ) +HRESULT CLR_RT_HeapBlock_Stack::Pop(CLR_RT_HeapBlock *&value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_RT_HeapBlock* removed; + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_RT_HeapBlock *removed; - if(size == 0) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); - - removed = (CLR_RT_HeapBlock*)array->GetElement( array->m_numOfElements - size ); + if (size == 0) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); + + removed = (CLR_RT_HeapBlock *)array->GetElement(array->m_numOfElements - size); value = removed->Dereference(); - removed->SetObjectReference( NULL ); + removed->SetObjectReference(nullptr); - SetSize( size - 1 ); + SetSize(size - 1); NANOCLR_NOCLEANUP(); } // May Trigger GC, but parameter value will be protected -HRESULT CLR_RT_HeapBlock_Stack::Push( CLR_RT_HeapBlock* value ) +HRESULT CLR_RT_HeapBlock_Stack::Push(CLR_RT_HeapBlock *value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); - CLR_INT32 capacity = array->m_numOfElements; + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); + CLR_INT32 capacity = array->m_numOfElements; - if(size == capacity) + if (size == capacity) { // Set new capacity - CLR_RT_HeapBlock newArrayHB; - CLR_RT_HeapBlock_Array* newArray; + CLR_RT_HeapBlock newArrayHB; + CLR_RT_HeapBlock_Array *newArray; // Protect value from GC, in case CreateInstance triggers one - CLR_RT_HeapBlock valueHB; valueHB.SetObjectReference( value ); - CLR_RT_ProtectFromGC gc( valueHB ); + CLR_RT_HeapBlock valueHB; + valueHB.SetObjectReference(value); + CLR_RT_ProtectFromGC gc(valueHB); capacity *= 2; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(newArrayHB, capacity, g_CLR_RT_WellKnownTypes.Object)); newArray = newArrayHB.DereferenceArray(); - memcpy( newArray->GetElement( size ), array->GetFirstElement(), size * sizeof(CLR_RT_HeapBlock) ); + memcpy(newArray->GetElement(size), array->GetFirstElement(), size * sizeof(CLR_RT_HeapBlock)); - SetArray( newArray ); + SetArray(newArray); array = newArray; } size++; - ((CLR_RT_HeapBlock*)array->GetElement( capacity - size ))->SetObjectReference( value ); + ((CLR_RT_HeapBlock *)array->GetElement(capacity - size))->SetObjectReference(value); - SetSize( size ); + SetSize(size); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_Stack::Peek( CLR_RT_HeapBlock*& value ) +HRESULT CLR_RT_HeapBlock_Stack::Peek(CLR_RT_HeapBlock *&value) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); - if(size == 0) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); + if (size == 0) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); - value = ((CLR_RT_HeapBlock*)array->GetElement( array->m_numOfElements - size ))->Dereference(); + value = ((CLR_RT_HeapBlock *)array->GetElement(array->m_numOfElements - size))->Dereference(); NANOCLR_NOCLEANUP(); } @@ -93,19 +97,23 @@ HRESULT CLR_RT_HeapBlock_Stack::Clear() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array = GetArray(); - CLR_INT32 size = GetSize(); + CLR_RT_HeapBlock_Array *array = GetArray(); + CLR_INT32 size = GetSize(); - NANOCLR_CHECK_HRESULT(array->ClearElements( array->m_numOfElements - size, size )); + NANOCLR_CHECK_HRESULT(array->ClearElements(array->m_numOfElements - size, size)); - SetSize( 0 ); + SetSize(0); NANOCLR_NOCLEANUP(); } //--// -CT_ASSERT(Library_nf_system_collections_System_Collections_Stack__FIELD___array == Library_nf_system_collections_System_Collections_Stack::FIELD___array); -CT_ASSERT(Library_nf_system_collections_System_Collections_Stack__FIELD___size == Library_nf_system_collections_System_Collections_Stack::FIELD___size ); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Stack__FIELD___array == + Library_nf_system_collections_System_Collections_Stack::FIELD___array); +CT_ASSERT( + Library_nf_system_collections_System_Collections_Stack__FIELD___size == + Library_nf_system_collections_System_Collections_Stack::FIELD___size); #endif diff --git a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp index e0638e84ed..d0713cc63b 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp @@ -7,110 +7,119 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -CLR_RT_HeapBlock_String* CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, CLR_UINT32 length ) +CLR_RT_HeapBlock_String *CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT32 totLength = sizeof(CLR_RT_HeapBlock_String) + length + 1; - CLR_RT_HeapBlock_String* str; + CLR_UINT32 totLength = sizeof(CLR_RT_HeapBlock_String) + length + 1; + CLR_RT_HeapBlock_String *str; - reference.SetObjectReference( NULL ); + reference.SetObjectReference(nullptr); - str = (CLR_RT_HeapBlock_String*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_STRING, 0, totLength ); - if(str) + str = (CLR_RT_HeapBlock_String *)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects(DATATYPE_STRING, 0, totLength); + if (str) { - char* szText = (char*)&str[ 1 ]; szText[ 0 ] = 0; + char *szText = (char *)&str[1]; + szText[0] = 0; #if defined(NANOCLR_NO_ASSEMBLY_STRINGS) - str->SetStringText( szText ); + str->SetStringText(szText); #else - str->SetStringText( szText, NULL ); -#endif + str->SetStringText(szText, nullptr); +#endif - reference.SetObjectReference( str ); + reference.SetObjectReference(str); } return str; } -HRESULT CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, const char* szText ) +HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, const char *szText) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(!szText) szText = ""; + if (!szText) + szText = ""; - NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance( reference, szText, (CLR_UINT32)hal_strlen_s( szText ) )); + NANOCLR_SET_AND_LEAVE(CLR_RT_HeapBlock_String::CreateInstance(reference, szText, (CLR_UINT32)hal_strlen_s(szText))); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, const char* szText, CLR_UINT32 length ) +HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, const char *szText, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_String* str; - char* szTextDst; + CLR_RT_HeapBlock_String *str; + char *szTextDst; - str = CreateInstance( reference, length ); CHECK_ALLOCATION(str); + str = CreateInstance(reference, length); + CHECK_ALLOCATION(str); - szTextDst = (char*)str->StringText(); + szTextDst = (char *)str->StringText(); - memcpy( szTextDst, szText, length ); szTextDst[ length ] = 0; + memcpy(szTextDst, szText, length); + szTextDst[length] = 0; NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, const char* szText, CLR_RT_Assembly* assm ) -{ +HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, const char *szText, CLR_RT_Assembly *assm) +{ NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_String* str; + CLR_RT_HeapBlock_String *str; - reference.SetObjectReference( NULL ); + reference.SetObjectReference(nullptr); - str = (CLR_RT_HeapBlock_String*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_STRING, 0, sizeof(CLR_RT_HeapBlock_String) ); CHECK_ALLOCATION(str); + str = (CLR_RT_HeapBlock_String *) + g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects(DATATYPE_STRING, 0, sizeof(CLR_RT_HeapBlock_String)); + CHECK_ALLOCATION(str); - reference.SetObjectReference( str ); + reference.SetObjectReference(str); #if defined(NANOCLR_NO_ASSEMBLY_STRINGS) (void)szText; (void)assm; - NANOCLR_CHECK_HRESULT( CLR_RT_HeapBlock_String::CreateInstance( reference, szText ) ); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(reference, szText)); #else - str->SetStringText( szText, assm ); + str->SetStringText(szText, assm); #endif NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, CLR_UINT32 token, CLR_RT_Assembly* assm ) +HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 token, CLR_RT_Assembly *assm) { NATIVE_PROFILE_CLR_CORE(); - return CreateInstance( reference, assm->GetString( CLR_DataFromTk( token ) ), assm ); + return CreateInstance(reference, assm->GetString(CLR_DataFromTk(token)), assm); } -HRESULT CLR_RT_HeapBlock_String::CreateInstance( CLR_RT_HeapBlock& reference, CLR_UINT16* szText, CLR_UINT32 length ) +HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT16 *szText, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_UnicodeHelper uh; uh.SetInputUTF16 ( szText ); - CLR_UINT32 lengthInBytes = uh.CountNumberOfBytes( length ); - CLR_RT_HeapBlock_String* str = CreateInstance( reference, lengthInBytes ); CHECK_ALLOCATION(str); - - uh.m_outputUTF8 = (CLR_UINT8*)str->StringText(); + CLR_RT_UnicodeHelper uh; + uh.SetInputUTF16(szText); + CLR_UINT32 lengthInBytes = uh.CountNumberOfBytes(length); + CLR_RT_HeapBlock_String *str = CreateInstance(reference, lengthInBytes); + CHECK_ALLOCATION(str); + + uh.m_outputUTF8 = (CLR_UINT8 *)str->StringText(); uh.m_outputUTF8_size = lengthInBytes + 1; - uh.ConvertToUTF8( length, false ); + uh.ConvertToUTF8(length, false); NANOCLR_NOCLEANUP(); } -CLR_RT_HeapBlock_String* CLR_RT_HeapBlock_String::GetStringEmpty() +CLR_RT_HeapBlock_String *CLR_RT_HeapBlock_String::GetStringEmpty() { - return g_CLR_RT_TypeSystem.m_assemblyMscorlib->GetStaticField( Library_corlib_native_System_String::FIELD_STATIC__Empty )->DereferenceString(); + return g_CLR_RT_TypeSystem.m_assemblyMscorlib + ->GetStaticField(Library_corlib_native_System_String::FIELD_STATIC__Empty) + ->DereferenceString(); } - diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp index 1c8333b95e..7b1db7e760 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Timer.cpp @@ -12,7 +12,7 @@ HRESULT CLR_RT_HeapBlock_Timer::CreateInstance(CLR_UINT32 flags, CLR_RT_HeapBloc NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Timer *timer = NULL; + CLR_RT_HeapBlock_Timer *timer = nullptr; // // Create a request and stop the calling thread. @@ -99,9 +99,13 @@ void CLR_RT_HeapBlock_Timer::SpawnTimer(CLR_RT_Thread *th) CLR_RT_HeapBlock_Delegate *delegate = callback->DereferenceDelegate(); CLR_RT_ProtectFromGC gc(*managedTimer); - _ASSERTE(delegate != NULL); - if (delegate == NULL) + _ASSERTE(delegate != nullptr); + + if (delegate == nullptr) + { return; + } + _ASSERTE(delegate->DataType() == DATATYPE_DELEGATE_HEAD); m_ticksLastExpiration = HAL_Time_CurrentTime(); @@ -111,7 +115,7 @@ void CLR_RT_HeapBlock_Timer::SpawnTimer(CLR_RT_Thread *th) if (SUCCEEDED(th->PushThreadProcDelegate(delegate))) { CLR_RT_StackFrame *stack = th->FirstFrame(); - if (stack->Next() != NULL) + if (stack->Next() != nullptr) { int ArgumentsCount = stack->m_call.target->argumentsCount; if (ArgumentsCount > 0) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_WaitForObject.cpp b/src/CLR/Core/CLR_RT_HeapBlock_WaitForObject.cpp index 5fc15290af..8144f231a2 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_WaitForObject.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_WaitForObject.cpp @@ -5,15 +5,20 @@ // #include "Core.h" - //////////////////////////////////////////////////////////////////////////////////////////////////// -// CreateInstance - Creates a wait object +// CreateInstance - Creates a wait object // // Result - returns S_OK - if the target object is in the signaled state - indicating no wait is needed -// - returns CLR_E_THREAD_WAITING - if the target object is not signaled - indicating that the caller thread is waiting +// - returns CLR_E_THREAD_WAITING - if the target object is not signaled - indicating that the caller thread is +// waiting // for the object to be signaled // -HRESULT CLR_RT_HeapBlock_WaitForObject::CreateInstance( CLR_RT_Thread* caller, const CLR_INT64& timeExpire, CLR_RT_HeapBlock* objects, CLR_UINT32 cObjects, bool fWaitAll ) +HRESULT CLR_RT_HeapBlock_WaitForObject::CreateInstance( + CLR_RT_Thread *caller, + const CLR_INT64 &timeExpire, + CLR_RT_HeapBlock *objects, + CLR_UINT32 cObjects, + bool fWaitAll) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -21,21 +26,28 @@ HRESULT CLR_RT_HeapBlock_WaitForObject::CreateInstance( CLR_RT_Thread* caller, c // // Create a request and stop the calling thread. // - - _ASSERTE( sizeof(CLR_RT_HeapBlock_WaitForObject) % 4 == 0 ); + + _ASSERTE(sizeof(CLR_RT_HeapBlock_WaitForObject) % 4 == 0); CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_WaitForObject) + cObjects * sizeof(CLR_RT_HeapBlock)); - CLR_RT_HeapBlock_WaitForObject* wait = EVENTCACHE_EXTRACT_NODE_AS_BYTES(g_CLR_RT_EventCache,CLR_RT_HeapBlock_WaitForObject,DATATYPE_WAIT_FOR_OBJECT_HEAD,0,totLength); CHECK_ALLOCATION(wait); - - wait->m_timeExpire = timeExpire; CLR_RT_ExecutionEngine::InvalidateTimerCache(); - wait->m_cObjects = cObjects; - wait->m_fWaitAll = fWaitAll; + CLR_RT_HeapBlock_WaitForObject *wait = EVENTCACHE_EXTRACT_NODE_AS_BYTES( + g_CLR_RT_EventCache, + CLR_RT_HeapBlock_WaitForObject, + DATATYPE_WAIT_FOR_OBJECT_HEAD, + 0, + totLength); + CHECK_ALLOCATION(wait); - memcpy( wait->GetWaitForObjects(), objects, sizeof(CLR_RT_HeapBlock) * cObjects ); + wait->m_timeExpire = timeExpire; + CLR_RT_ExecutionEngine::InvalidateTimerCache(); + wait->m_cObjects = cObjects; + wait->m_fWaitAll = fWaitAll; - caller->m_waitForObject = wait; - caller->m_status = CLR_RT_Thread::TH_S_Waiting; + memcpy(wait->GetWaitForObjects(), objects, sizeof(CLR_RT_HeapBlock) * cObjects); + + caller->m_waitForObject = wait; + caller->m_status = CLR_RT_Thread::TH_S_Waiting; caller->m_waitForObject_Result = CLR_RT_Thread::TH_WAIT_RESULT_INIT; NANOCLR_SET_AND_LEAVE(CLR_E_THREAD_WAITING); @@ -43,51 +55,59 @@ HRESULT CLR_RT_HeapBlock_WaitForObject::CreateInstance( CLR_RT_Thread* caller, c NANOCLR_NOCLEANUP(); } -void CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal( CLR_RT_Thread* th ) +void CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal(CLR_RT_Thread *th) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock_WaitForObject* wait = th->m_waitForObject; + CLR_RT_HeapBlock_WaitForObject *wait = th->m_waitForObject; - if(wait) + if (wait) { - if (CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal( th, wait->GetWaitForObjects(), wait->m_cObjects, wait->m_fWaitAll )) + if (CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal( + th, + wait->GetWaitForObjects(), + wait->m_cObjects, + wait->m_fWaitAll)) { - th->Restart( true ); + th->Restart(true); } } } -bool CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal(CLR_RT_Thread* caller, CLR_RT_HeapBlock* objects, CLR_UINT32 cObjects, bool fWaitAll) +bool CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal( + CLR_RT_Thread *caller, + CLR_RT_HeapBlock *objects, + CLR_UINT32 cObjects, + bool fWaitAll) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock* blk; - CLR_RT_HeapBlock* obj; - - if(fWaitAll) + CLR_RT_HeapBlock *blk; + CLR_RT_HeapBlock *obj; + + if (fWaitAll) { - //first time through, find out whether or not the requested objects are signaled - //second time through, reset the signalled objects - for(int phase = 0; phase < 2; phase++) + // first time through, find out whether or not the requested objects are signaled + // second time through, reset the signalled objects + for (int phase = 0; phase < 2; phase++) { blk = objects; - for(CLR_UINT32 i = 0; i < cObjects; i++) + for (CLR_UINT32 i = 0; i < cObjects; i++) { obj = blk->Dereference(); - _ASSERTE(obj != NULL); + _ASSERTE(obj != nullptr); - if(phase == 0) + if (phase == 0) { - if(!obj->IsFlagSet( CLR_RT_HeapBlock::HB_Signaled )) + if (!obj->IsFlagSet(CLR_RT_HeapBlock::HB_Signaled)) { return false; } } else { - if(obj->IsFlagSet( CLR_RT_HeapBlock::HB_SignalAutoReset )) + if (obj->IsFlagSet(CLR_RT_HeapBlock::HB_SignalAutoReset)) { - obj->ResetFlags( CLR_RT_HeapBlock::HB_Signaled ); - } + obj->ResetFlags(CLR_RT_HeapBlock::HB_Signaled); + } } blk++; @@ -97,19 +117,19 @@ bool CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal(CLR_RT_Thread* caller, CLR caller->m_waitForObject_Result = CLR_RT_Thread::TH_WAIT_RESULT_HANDLE_ALL; return true; } - else - { + else + { blk = objects; - for(CLR_UINT32 i = 0; i < cObjects; i++) + for (CLR_UINT32 i = 0; i < cObjects; i++) { obj = blk->Dereference(); - _ASSERTE(obj != NULL); + _ASSERTE(obj != nullptr); - if(obj->IsFlagSet( CLR_RT_HeapBlock::HB_Signaled )) - { - if(obj->IsFlagSet( CLR_RT_HeapBlock::HB_SignalAutoReset )) + if (obj->IsFlagSet(CLR_RT_HeapBlock::HB_Signaled)) + { + if (obj->IsFlagSet(CLR_RT_HeapBlock::HB_SignalAutoReset)) { - obj->ResetFlags( CLR_RT_HeapBlock::HB_Signaled ); + obj->ResetFlags(CLR_RT_HeapBlock::HB_Signaled); } caller->m_waitForObject_Result = CLR_RT_Thread::TH_WAIT_RESULT_HANDLE_0 + i; @@ -118,72 +138,84 @@ bool CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal(CLR_RT_Thread* caller, CLR blk++; } - } - + } + return false; } -void CLR_RT_HeapBlock_WaitForObject::SignalObject( CLR_RT_HeapBlock& object ) +void CLR_RT_HeapBlock_WaitForObject::SignalObject(CLR_RT_HeapBlock &object) { NATIVE_PROFILE_CLR_CORE(); - object.SetFlags( CLR_RT_HeapBlock::HB_Signaled ); + object.SetFlags(CLR_RT_HeapBlock::HB_Signaled); - NANOCLR_FOREACH_NODE(CLR_RT_Thread,th,g_CLR_RT_ExecutionEngine.m_threadsWaiting) + NANOCLR_FOREACH_NODE(CLR_RT_Thread, th, g_CLR_RT_ExecutionEngine.m_threadsWaiting) { - CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal( th ); + CLR_RT_HeapBlock_WaitForObject::TryWaitForSignal(th); - if(!object.IsFlagSet( CLR_RT_HeapBlock::HB_Signaled )) + if (!object.IsFlagSet(CLR_RT_HeapBlock::HB_Signaled)) { - _ASSERTE(object.IsFlagSet( CLR_RT_HeapBlock::HB_SignalAutoReset )); - //This is an AutoResetEvent. Since the event got unsignaled, we can break out of - //the loop early, as this object can only free one thread. + _ASSERTE(object.IsFlagSet(CLR_RT_HeapBlock::HB_SignalAutoReset)); + // This is an AutoResetEvent. Since the event got unsignaled, we can break out of + // the loop early, as this object can only free one thread. break; - } + } } NANOCLR_FOREACH_NODE_END(); } -HRESULT CLR_RT_HeapBlock_WaitForObject::WaitForSignal( CLR_RT_StackFrame& stack, const CLR_INT64& timeExpire, CLR_RT_HeapBlock* objects, CLR_UINT32 cObjects, bool fWaitAll ) +HRESULT CLR_RT_HeapBlock_WaitForObject::WaitForSignal( + CLR_RT_StackFrame &stack, + const CLR_INT64 &timeExpire, + CLR_RT_HeapBlock *objects, + CLR_UINT32 cObjects, + bool fWaitAll) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(stack.m_customState == 0) - { - CLR_RT_HeapBlock* objectsT = objects; + if (stack.m_customState == 0) + { + CLR_RT_HeapBlock *objectsT = objects; stack.m_customState = 1; - if(cObjects > 64) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + if (cObjects > 64) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - for(CLR_UINT32 i = 0; i < cObjects; i++) + for (CLR_UINT32 i = 0; i < cObjects; i++) { _ASSERTE(objects->DataType() == DATATYPE_OBJECT); FAULT_ON_NULL(objectsT->Dereference()); - objectsT++; + objectsT++; } - if(!TryWaitForSignal( stack.m_owningThread, objects, cObjects, fWaitAll )) + if (!TryWaitForSignal(stack.m_owningThread, objects, cObjects, fWaitAll)) { - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_WaitForObject::CreateInstance( stack.m_owningThread, timeExpire, objects, cObjects, fWaitAll )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_WaitForObject::CreateInstance( + stack.m_owningThread, + timeExpire, + objects, + cObjects, + fWaitAll)); } } NANOCLR_NOCLEANUP(); } - -HRESULT CLR_RT_HeapBlock_WaitForObject::WaitForSignal ( CLR_RT_StackFrame& stack, const CLR_INT64& timeExpire, CLR_RT_HeapBlock& object ) +HRESULT CLR_RT_HeapBlock_WaitForObject::WaitForSignal( + CLR_RT_StackFrame &stack, + const CLR_INT64 &timeExpire, + CLR_RT_HeapBlock &object) { NATIVE_PROFILE_CLR_CORE(); - return WaitForSignal( stack, timeExpire, &object, 1, false ); + return WaitForSignal(stack, timeExpire, &object, 1, false); } void CLR_RT_HeapBlock_WaitForObject::Relocate() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate( GetWaitForObjects(), m_cObjects ); + CLR_RT_GarbageCollector::Heap_Relocate(GetWaitForObjects(), m_cObjects); } - diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index 2d4928afcc..818456cfd9 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -34,15 +34,15 @@ void CLR_RT_HeapCluster::HeapCluster_Initialize(CLR_UINT32 size, CLR_UINT32 bloc { CLR_RT_HeapBlock_WeakReference *weak = (CLR_RT_HeapBlock_WeakReference *)ptr; - if (weak->DataSize() == CONVERTFROMSIZETOHEAPBLOCKS(sizeof(*weak)) && weak->m_targetSerialized != NULL && + if (weak->DataSize() == CONVERTFROMSIZETOHEAPBLOCKS(sizeof(*weak)) && weak->m_targetSerialized != nullptr && (weak->m_identity.m_flags & CLR_RT_HeapBlock_WeakReference::WR_SurviveBoot)) { - weak->SetNext(NULL); - weak->SetPrev(NULL); + weak->SetNext(nullptr); + weak->SetPrev(nullptr); weak->m_identity.m_flags &= ~CLR_RT_HeapBlock_WeakReference::WR_Persisted; - weak->m_targetDirect = NULL; + weak->m_targetDirect = nullptr; weak->MarkAlive(); @@ -96,7 +96,7 @@ void CLR_RT_HeapCluster::HeapCluster_Initialize(CLR_UINT32 size, CLR_UINT32 bloc CLR_RT_HeapBlock *CLR_RT_HeapCluster::ExtractBlocks(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock_Node *res = NULL; + CLR_RT_HeapBlock_Node *res = nullptr; CLR_UINT32 available = 0; m_freeList.ValidateList(); @@ -200,7 +200,7 @@ void CLR_RT_HeapCluster::RecoverFromGC() // Open the free list. // CLR_RT_HeapBlock_Node *last = m_freeList.Head(); - last->SetPrev(NULL); + last->SetPrev(nullptr); while (ptr < end) { @@ -259,7 +259,7 @@ void CLR_RT_HeapCluster::RecoverFromGC() // last->SetNext(m_freeList.Tail()); m_freeList.Tail()->SetPrev(last); - m_freeList.Tail()->SetNext(NULL); + m_freeList.Tail()->SetNext(nullptr); } CLR_RT_HeapBlock_Node *CLR_RT_HeapCluster::InsertInOrder(CLR_RT_HeapBlock_Node *node, CLR_UINT32 size) diff --git a/src/CLR/Core/CLR_RT_Interop.cpp b/src/CLR/Core/CLR_RT_Interop.cpp index 1764eaa2ef..49d829b011 100644 --- a/src/CLR/Core/CLR_RT_Interop.cpp +++ b/src/CLR/Core/CLR_RT_Interop.cpp @@ -6,150 +6,149 @@ #include "Core.h" - /********************************************************************** -** Macro: NANOCLR_INTEROP_CHECK_ARG_TYPE -** This macro is specific for Interop_Marshal_ functions. -** It checks that data type corresponds to the data type stored in heapblock +** Macro: NANOCLR_INTEROP_CHECK_ARG_TYPE +** This macro is specific for Interop_Marshal_ functions. +** It checks that data type corresponds to the data type stored in heapblock ** in parameter paramIndex. ** In release mode macro does nothing. **********************************************************************/ - // For the final product we disable checking of the argument types // NANOCLR_INTEROP_CHECK_ARG_TYPE is reduced to nothing. -#define NANOCLR_INTEROP_CHECK_ARG_TYPE( arg_type ) -#define NANOCLR_INTEROP_NOCLEANUP() return S_OK; - +#define NANOCLR_INTEROP_CHECK_ARG_TYPE(arg_type) +#define NANOCLR_INTEROP_NOCLEANUP() return S_OK; -HRESULT Interop_Marshal_bool( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, bool ¶m ) -{ +HRESULT Interop_Marshal_bool(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, bool ¶m) +{ NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4); -// The comparison with 0 converts numeric type "u1" to boolean type. - param = stackFrame.ArgN( paramIndex ).NumericByRef().u1 != 0; + // The comparison with 0 converts numeric type "u1" to boolean type. + param = stackFrame.ArgN(paramIndex).NumericByRef().u1 != 0; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT8( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned char ¶m ) +HRESULT Interop_Marshal_UINT8(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned char ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4); - param = stackFrame.ArgN( paramIndex ).NumericByRef().u1; + param = stackFrame.ArgN(paramIndex).NumericByRef().u1; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT16( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned short ¶m ) +HRESULT Interop_Marshal_UINT16(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned short ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4) - param = stackFrame.ArgN( paramIndex ).NumericByRef().u2; + param = stackFrame.ArgN(paramIndex).NumericByRef().u2; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT32( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned int ¶m ) +HRESULT Interop_Marshal_UINT32(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned int ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4) - param = stackFrame.ArgN( paramIndex ).NumericByRef().u4; + param = stackFrame.ArgN(paramIndex).NumericByRef().u4; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT64( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned __int64 ¶m ) +HRESULT Interop_Marshal_UINT64(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, unsigned __int64 ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I8); - param = stackFrame.ArgN( paramIndex ).NumericByRef().u8; + param = stackFrame.ArgN(paramIndex).NumericByRef().u8; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_CHAR( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, char ¶m ) +HRESULT Interop_Marshal_CHAR(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, char ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4) - param = stackFrame.ArgN( paramIndex ).NumericByRef().s1; + param = stackFrame.ArgN(paramIndex).NumericByRef().s1; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_INT8( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed char ¶m ) +HRESULT Interop_Marshal_INT8(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed char ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4) - param = stackFrame.ArgN( paramIndex ).NumericByRef().s1; + param = stackFrame.ArgN(paramIndex).NumericByRef().s1; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_INT16( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed short ¶m ) +HRESULT Interop_Marshal_INT16(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed short ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4); - param = stackFrame.ArgN( paramIndex ).NumericByRef().s2; + param = stackFrame.ArgN(paramIndex).NumericByRef().s2; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_INT32( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed int ¶m ) +HRESULT Interop_Marshal_INT32(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed int ¶m) { NATIVE_PROFILE_CLR_CORE(); - NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4); - param = stackFrame.ArgN( paramIndex ).NumericByRef().s4; + NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I4); + param = stackFrame.ArgN(paramIndex).NumericByRef().s4; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_INT64( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed __int64 ¶m ) +HRESULT Interop_Marshal_INT64(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed __int64 ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_I8); - param = stackFrame.ArgN( paramIndex ).NumericByRef().s8; + param = stackFrame.ArgN(paramIndex).NumericByRef().s8; NANOCLR_INTEROP_NOCLEANUP(); } #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) -HRESULT Interop_Marshal_float( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, float ¶m ) +HRESULT Interop_Marshal_float(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, float ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_R4); - param = stackFrame.ArgN( paramIndex ).NumericByRef().r4; + param = stackFrame.ArgN(paramIndex).NumericByRef().r4; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_double( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, double ¶m ) +HRESULT Interop_Marshal_double(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, double ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_R8); - param = stackFrame.ArgN( paramIndex ).NumericByRef().r8; + param = stackFrame.ArgN(paramIndex).NumericByRef().r8; NANOCLR_INTEROP_NOCLEANUP(); } #else -HRESULT Interop_Marshal_float( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed int ¶m ) +HRESULT Interop_Marshal_float(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed int ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_R4); - param = stackFrame.ArgN( paramIndex ).NumericByRef().r4; + param = stackFrame.ArgN(paramIndex).NumericByRef().r4; NANOCLR_INTEROP_NOCLEANUP(); } -HRESULT Interop_Marshal_double( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed __int64 ¶m ) +HRESULT Interop_Marshal_double(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, signed __int64 ¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_INTEROP_CHECK_ARG_TYPE(DATATYPE_R8); - param = stackFrame.ArgN( paramIndex ).NumericByRef().r8; + param = stackFrame.ArgN(paramIndex).NumericByRef().r8; NANOCLR_INTEROP_NOCLEANUP(); } #endif -HRESULT Interop_Marshal_LPCSTR( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, const char* ¶m ) +HRESULT Interop_Marshal_LPCSTR(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, const char *¶m) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); // Check the type of passed varialble - should be object for strings. - if ( stackFrame.ArgN( paramIndex ).DataType() != DATATYPE_OBJECT ) - { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - } + if (stackFrame.ArgN(paramIndex).DataType() != DATATYPE_OBJECT) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } // Checks that the string was actually present in managed code, not a NULL reference to sting. - param = stackFrame.ArgN( paramIndex ).RecoverString(); FAULT_ON_NULL(param); + param = stackFrame.ArgN(paramIndex).RecoverString(); + FAULT_ON_NULL(param); NANOCLR_NOCLEANUP(); } @@ -160,10 +159,13 @@ HRESULT Interop_Marshal_LPCSTR( const CLR_RT_StackFrame &stackFrame, unsigned in #endif // For unsupported types we set param to zero and always return S_OK. -HRESULT Interop_Marshal_UNSUPPORTED_TYPE( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, UNSUPPORTED_TYPE ¶m ) +HRESULT Interop_Marshal_UNSUPPORTED_TYPE( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + UNSUPPORTED_TYPE ¶m) { NATIVE_PROFILE_CLR_CORE(); - param = NULL; + param = nullptr; return S_OK; } @@ -174,14 +176,14 @@ HRESULT Interop_Marshal_UNSUPPORTED_TYPE( const CLR_RT_StackFrame &stackFrame, u #undef NANOCLR_INTEROP_CHECK_ARG_TYPE /********************************************************************** ** -** Function: Interop_Marshal_NUMERIC_ARRAY +** Function: Interop_Marshal_NUMERIC_ARRAY ** ** Synopsis: This function is used marshal arrays of basic types created by managed code. -** The native code can access and update array data. +** The native code can access and update array data. ** Thus the data can be exchanged between managed and native code in both directions. ** The native code cannot change size of array. ** -** Arguments: [stackFrame] - Reference to the managed stack frame. +** Arguments: [stackFrame] - Reference to the managed stack frame. ** [paramIndex] - Index of parameter passed from managed code. This parameter will be updated now. ** [pByteParam] - Reference of pointer to buffer with array data. Filled by the function ** [arraySize] - Count of elements in array. Filled by the function @@ -189,389 +191,547 @@ HRESULT Interop_Marshal_UNSUPPORTED_TYPE( const CLR_RT_StackFrame &stackFrame, u ** ** Returns: S_OK on success or error from StoreToReference. Error return would cause exception thrown in managed code. **********************************************************************/ -template -static HRESULT Interop_Marshal_NUMERIC_ARRAY -( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, T *&pByteParam, unsigned int &arraySize, unsigned int elementSize ) +template +static HRESULT Interop_Marshal_NUMERIC_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + T *&pByteParam, + unsigned int &arraySize, + unsigned int elementSize) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array *pHeapBlockArray = NULL; - - if ( stackFrame.ArgN( paramIndex ).DataType() != DATATYPE_OBJECT ) - { - NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + CLR_RT_HeapBlock_Array *pHeapBlockArray = nullptr; + + if (stackFrame.ArgN(paramIndex).DataType() != DATATYPE_OBJECT) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - - pHeapBlockArray = stackFrame.ArgN( paramIndex ).DereferenceArray(); FAULT_ON_NULL(pHeapBlockArray); - - if ( pHeapBlockArray->m_sizeOfElement != elementSize ) - { + + pHeapBlockArray = stackFrame.ArgN(paramIndex).DereferenceArray(); + FAULT_ON_NULL(pHeapBlockArray); + + if (pHeapBlockArray->m_sizeOfElement != elementSize) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - - arraySize = pHeapBlockArray->m_numOfElements; + + arraySize = pHeapBlockArray->m_numOfElements; pByteParam = (T *)pHeapBlockArray->GetFirstElement(); NANOCLR_NOCLEANUP(); } /********************************************************************** -** Group of function that retrive array of values from managed stack frame. +** Group of function that retrive array of values from managed stack frame. ** All these functions are wrappers around Interop_Marshal_NUMERIC_ARRAY, ** they create type safe interface for users of Interop library. **********************************************************************/ -HRESULT Interop_Marshal_bool_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_UINT8 &typedArray ) +HRESULT Interop_Marshal_bool_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_UINT8 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( unsigned char ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(unsigned char)); } -HRESULT Interop_Marshal_UINT8_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_UINT8 &typedArray ) +HRESULT Interop_Marshal_UINT8_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_UINT8 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( unsigned char ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(unsigned char)); } -HRESULT Interop_Marshal_UINT16_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_UINT16 &typedArray ) +HRESULT Interop_Marshal_UINT16_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_UINT16 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( unsigned short ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(unsigned short)); } -HRESULT Interop_Marshal_UINT32_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_UINT32 &typedArray ) +HRESULT Interop_Marshal_UINT32_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_UINT32 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( unsigned int ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(unsigned int)); } -HRESULT Interop_Marshal_UINT64_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_UINT64 &typedArray ) +HRESULT Interop_Marshal_UINT64_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_UINT64 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( unsigned __int64 ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(unsigned __int64)); } -HRESULT Interop_Marshal_CHAR_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_CHAR &typedArray ) +HRESULT Interop_Marshal_CHAR_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_CHAR &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( char ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(char)); } -HRESULT Interop_Marshal_INT8_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_INT8 &typedArray ) +HRESULT Interop_Marshal_INT8_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_INT8 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed char ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed char)); } -HRESULT Interop_Marshal_INT16_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_INT16 &typedArray ) +HRESULT Interop_Marshal_INT16_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_INT16 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed short ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed short)); } -HRESULT Interop_Marshal_INT32_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_INT32 &typedArray ) +HRESULT Interop_Marshal_INT32_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_INT32 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed int ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed int)); } -HRESULT Interop_Marshal_INT64_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_INT64 &typedArray ) +HRESULT Interop_Marshal_INT64_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_INT64 &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed __int64 ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed __int64)); } #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) -HRESULT Interop_Marshal_float_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_float &typedArray ) +HRESULT Interop_Marshal_float_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_float &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( float ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(float)); } -HRESULT Interop_Marshal_double_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_double &typedArray ) +HRESULT Interop_Marshal_double_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_double &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( double ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(double)); } #else -HRESULT Interop_Marshal_float_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_float &typedArray ) +HRESULT Interop_Marshal_float_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_float &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed int ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed int)); } -HRESULT Interop_Marshal_double_ARRAY( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, CLR_RT_TypedArray_double &typedArray ) +HRESULT Interop_Marshal_double_ARRAY( + const CLR_RT_StackFrame &stackFrame, + unsigned int paramIndex, + CLR_RT_TypedArray_double &typedArray) { NATIVE_PROFILE_CLR_CORE(); - return Interop_Marshal_NUMERIC_ARRAY( stackFrame, paramIndex, typedArray.m_pData, typedArray.m_ElemCount, sizeof( signed __int64 ) ); + return Interop_Marshal_NUMERIC_ARRAY( + stackFrame, + paramIndex, + typedArray.m_pData, + typedArray.m_ElemCount, + sizeof(signed __int64)); } #endif - /********************************************************************** ** -** Functions: SetResult_* +** Functions: SetResult_* ** -** Synopsis: This group of functions set result returned by native function to managed stack frame. +** Synopsis: This group of functions set result returned by native function to managed stack frame. ** It stores data from heap block pointed by pVoidHeapBlock back to the managed stack frame. ** -** Arguments: [stackFrame] - Reference to the managed stack frame. +** Arguments: [stackFrame] - Reference to the managed stack frame. ** [pVoidHeapBlock] - Pointer to heap block that keeps updated basic type value ** [paramIndex] - Index of parameter passed from managed code. This parameter will be updated now. ** ** Returns: S_OK on success or error from StoreToReference. Error return would cause exception thrown in managed code. **********************************************************************/ -void SetResult_bool( CLR_RT_StackFrame &stackFrame, bool value ) +void SetResult_bool(CLR_RT_StackFrame &stackFrame, bool value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_Boolean( value ); + stackFrame.SetResult_Boolean(value); } -void SetResult_CHAR( CLR_RT_StackFrame &stackFrame, char value ) +void SetResult_CHAR(CLR_RT_StackFrame &stackFrame, char value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_I1 ); + stackFrame.SetResult(value, DATATYPE_I1); } -void SetResult_INT8( CLR_RT_StackFrame &stackFrame, signed char value ) +void SetResult_INT8(CLR_RT_StackFrame &stackFrame, signed char value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_I1 ); + stackFrame.SetResult(value, DATATYPE_I1); } -void SetResult_INT16( CLR_RT_StackFrame &stackFrame, signed short value ) +void SetResult_INT16(CLR_RT_StackFrame &stackFrame, signed short value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_I2 ); + stackFrame.SetResult(value, DATATYPE_I2); } -void SetResult_INT32( CLR_RT_StackFrame &stackFrame, signed int value ) +void SetResult_INT32(CLR_RT_StackFrame &stackFrame, signed int value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_I4 ); + stackFrame.SetResult(value, DATATYPE_I4); } -void SetResult_INT64( CLR_RT_StackFrame &stackFrame, signed __int64 value ) +void SetResult_INT64(CLR_RT_StackFrame &stackFrame, signed __int64 value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_I8( value ); + stackFrame.SetResult_I8(value); } -void SetResult_UINT8( CLR_RT_StackFrame &stackFrame, unsigned char value ) +void SetResult_UINT8(CLR_RT_StackFrame &stackFrame, unsigned char value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_U1 ); + stackFrame.SetResult(value, DATATYPE_U1); } -void SetResult_UINT16( CLR_RT_StackFrame &stackFrame, unsigned short value ) +void SetResult_UINT16(CLR_RT_StackFrame &stackFrame, unsigned short value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_U2 ); + stackFrame.SetResult(value, DATATYPE_U2); } -void SetResult_UINT32( CLR_RT_StackFrame &stackFrame, unsigned int value ) +void SetResult_UINT32(CLR_RT_StackFrame &stackFrame, unsigned int value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult( value, DATATYPE_U4 ); + stackFrame.SetResult(value, DATATYPE_U4); } -void SetResult_UINT64( CLR_RT_StackFrame &stackFrame, unsigned __int64 value ) +void SetResult_UINT64(CLR_RT_StackFrame &stackFrame, unsigned __int64 value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_U8( value ); + stackFrame.SetResult_U8(value); } #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) -void SetResult_float( CLR_RT_StackFrame &stackFrame, float value ) +void SetResult_float(CLR_RT_StackFrame &stackFrame, float value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_R4( value ); + stackFrame.SetResult_R4(value); } -void SetResult_double( CLR_RT_StackFrame &stackFrame, double value ) +void SetResult_double(CLR_RT_StackFrame &stackFrame, double value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_R8( value ); + stackFrame.SetResult_R8(value); } #else -void SetResult_float( CLR_RT_StackFrame &stackFrame, CLR_INT32 value ) +void SetResult_float(CLR_RT_StackFrame &stackFrame, CLR_INT32 value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_R4( value ); + stackFrame.SetResult_R4(value); } -void SetResult_double( CLR_RT_StackFrame &stackFrame, CLR_INT64& value ) +void SetResult_double(CLR_RT_StackFrame &stackFrame, CLR_INT64 &value) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_R8( value ); + stackFrame.SetResult_R8(value); } #endif -void SetResult_LPCSTR( CLR_RT_StackFrame &stackFrame, const char* lpszString ) +void SetResult_LPCSTR(CLR_RT_StackFrame &stackFrame, const char *lpszString) { NATIVE_PROFILE_CLR_CORE(); - stackFrame.SetResult_String( lpszString ); + stackFrame.SetResult_String(lpszString); } /********************************************************************** ** -** Group of function that retrive reference to particular type from managed stack frame. +** Group of function that retrive reference to particular type from managed stack frame. ** This function hides CLR_RT_HeapBlock structure. -** -** Functions: Interop_Marshal_*_ByRef ** -** Synopsis: For paramenters passed by reference gets the +** Functions: Interop_Marshal_*_ByRef +** +** Synopsis: For paramenters passed by reference gets the ** reference to basic type parameter. ** After the call the pParam points to variable passed by reference from managed code. ** -** Arguments: [stackFrame] - Reference to the managed stack frame. -** [pHeapBlock] - Pointer to heap block that keeps reference type extracted from managed stack frame +** Arguments: [stackFrame] - Reference to the managed stack frame. +** [pHeapBlock] - Pointer to heap block that keeps reference type extracted from managed stack +*frame ** [paramIndex] - Index of parameter passed from managed code. ** [pParam] - Pointer to variable passed by reference from managed code. Filled by function. ** -** Returns: S_OK on success or error from LoadFromReference of CLR_E_WRONG_TYPE if type invalid. Error return would cause exception thrown in managed code. +** Returns: S_OK on success or error from LoadFromReference of CLR_E_WRONG_TYPE if type invalid. Error return would +*cause exception thrown in managed code. **********************************************************************/ /********************************************************************** -** Macro: NANOCLR_INTEROP_CHECK_REF_TYPE -** This macro is specific for Interop_Marshal_*_ByRef functions. -** It checks that retrived type corresponds to the data type stored in heapblock +** Macro: NANOCLR_INTEROP_CHECK_REF_TYPE +** This macro is specific for Interop_Marshal_*_ByRef functions. +** It checks that retrived type corresponds to the data type stored in heapblock ** in parameter paramIndex. ** In release mode macro does nothing. **********************************************************************/ #if defined(_DEBUG) -// In debug mode check reference type. -#define NANOCLR_INTEROP_CHECK_REF_TYPE( ref_type ) \ -if ( ((CLR_RT_HeapBlock *)pHeapBlock)->DataType() != ref_type ) \ -{ \ - NANOCLR_SET_AND_LEAVE( CLR_E_WRONG_TYPE ); \ -} +// In debug mode check reference type. +#define NANOCLR_INTEROP_CHECK_REF_TYPE(ref_type) \ + if (((CLR_RT_HeapBlock *)pHeapBlock)->DataType() != ref_type) \ + { \ + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); \ + } #else // Not defined _DEBUG, means we are in release mode - do nothing. -#define NANOCLR_INTEROP_CHECK_REF_TYPE( ref_type ) - +#define NANOCLR_INTEROP_CHECK_REF_TYPE(ref_type) + #endif - -//------------------ Unsigned Integral types ---------------------------------------------------------------------------- -HRESULT Interop_Marshal_bool_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, unsigned char *&pParam ) + +//------------------ Unsigned Integral types +//---------------------------------------------------------------------------- +HRESULT Interop_Marshal_bool_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + unsigned char *&pParam) { NATIVE_PROFILE_CLR_CORE(); // Declare hRes ( #define NANOCLR_HEADER() HRESULT hr ) NANOCLR_HEADER(); - - // Loads heapblock data from heapblock in managed stack frame - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); - + + // Loads heapblock data from heapblock in managed stack frame + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); + // Validates that data in heapblock correspond to requested parameter. NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_U1) - - // Now we have initialized pHeapBlock with reference paramenter. + + // Now we have initialized pHeapBlock with reference paramenter. // Need to cast the pointer because &s1 is "CLR_INT8 *", while we need "bool *" pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().u1; - + // Return S_OK or error if there is "go to" from NANOCLR_CHECK_HRESULT or NANOCLR_SET_AND_LEAVE NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT8_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, unsigned char *&pParam ) +HRESULT Interop_Marshal_UINT8_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + unsigned char *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_U1) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().u1; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT16_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, unsigned short *&pParam ) +HRESULT Interop_Marshal_UINT16_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + unsigned short *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_U2) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().u2; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT32_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, unsigned int *&pParam ) +HRESULT Interop_Marshal_UINT32_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + unsigned int *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_U4) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().u4; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_UINT64_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, unsigned __int64 *&pParam ) +HRESULT Interop_Marshal_UINT64_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + unsigned __int64 *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_U8) pParam = (unsigned __int64 *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().u8; NANOCLR_NOCLEANUP(); } //------------------ Signed Integral types ---------------------------------------------------------------------------- -HRESULT Interop_Marshal_CHAR_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, char *&pParam ) +HRESULT Interop_Marshal_CHAR_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + char *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_CHAR) pParam = (char *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().s1; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_INT8_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed char *&pParam ) +HRESULT Interop_Marshal_INT8_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed char *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); // signed char servers for both boolean and sbyte types. So we check for either of them. #if defined(_DEBUG) - if ( !( ((CLR_RT_HeapBlock *)pHeapBlock)->DataType() == DATATYPE_I1 || - ((CLR_RT_HeapBlock *)pHeapBlock)->DataType() == DATATYPE_BOOLEAN ) - ) + if (!(((CLR_RT_HeapBlock *)pHeapBlock)->DataType() == DATATYPE_I1 || + ((CLR_RT_HeapBlock *)pHeapBlock)->DataType() == DATATYPE_BOOLEAN)) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } -#endif +#endif pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().s1; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_INT16_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed short *&pParam ) +HRESULT Interop_Marshal_INT16_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed short *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_I2) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().s2; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_INT32_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed int *&pParam ) +HRESULT Interop_Marshal_INT32_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed int *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_I4) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().s4; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_INT64_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed __int64 *&pParam ) +HRESULT Interop_Marshal_INT64_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed __int64 *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_I8) pParam = (signed __int64 *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().s8; NANOCLR_NOCLEANUP(); @@ -580,87 +740,104 @@ HRESULT Interop_Marshal_INT64_ByRef( const CLR_RT_StackFrame &stackFrame, void * //----------------- Float point types - float and double #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) -HRESULT Interop_Marshal_float_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, float *&pParam ) +HRESULT Interop_Marshal_float_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + float *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_R4) pParam = &((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().r4; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_double_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, double *&pParam ) +HRESULT Interop_Marshal_double_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + double *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_R8) pParam = (double *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().r8; NANOCLR_NOCLEANUP(); } - //----------------- Non Float point types - float and double #else -HRESULT Interop_Marshal_float_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed int *&pParam ) +HRESULT Interop_Marshal_float_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed int *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_R4) pParam = (signed int *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().r4; NANOCLR_NOCLEANUP(); } -HRESULT Interop_Marshal_double_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, signed __int64* &pParam ) +HRESULT Interop_Marshal_double_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + signed __int64 *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); NANOCLR_INTEROP_CHECK_REF_TYPE(DATATYPE_R8) pParam = (signed __int64 *)&((CLR_RT_HeapBlock *)pHeapBlock)->NumericByRef().r8; NANOCLR_NOCLEANUP(); } #endif -HRESULT Interop_Marshal_UNSUPPORTED_TYPE_ByRef( const CLR_RT_StackFrame &stackFrame, void *pHeapBlock, unsigned int paramIndex, UNSUPPORTED_TYPE *&pParam ) +HRESULT Interop_Marshal_UNSUPPORTED_TYPE_ByRef( + const CLR_RT_StackFrame &stackFrame, + void *pHeapBlock, + unsigned int paramIndex, + UNSUPPORTED_TYPE *&pParam) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference( stackFrame.ArgN(paramIndex) )); - pParam = NULL; + NANOCLR_CHECK_HRESULT(((CLR_RT_HeapBlock *)pHeapBlock)->LoadFromReference(stackFrame.ArgN(paramIndex))); + pParam = nullptr; NANOCLR_NOCLEANUP(); } - #undef NANOCLR_INTEROP_CHECK_REF_TYPE - /********************************************************************** ** -** Function: Interop_Marshal_StoreRef +** Function: Interop_Marshal_StoreRef ** ** Synopsis: Stores data from the heap block passed in pVoidHeapBlock back to managed stack frame. ** Thus the managed stack frame and application may receive modified value of variable passed by reference.. ** -** Arguments: [stackFrame] - Reference to the managed stack frame. +** Arguments: [stackFrame] - Reference to the managed stack frame. ** [pVoidHeapBlock] - Pointer to heap block that keeps updated value of variable passed by reference. ** [paramIndex] - Index of parameter passed from managed code. ** ** Returns: S_OK on success or error from StoreToReference. Error return would cause exception thrown in managed code. **********************************************************************/ -HRESULT Interop_Marshal_StoreRef( CLR_RT_StackFrame &stackFrame, void *pVoidHeapBlock, unsigned int paramIndex ) +HRESULT Interop_Marshal_StoreRef(CLR_RT_StackFrame &stackFrame, void *pVoidHeapBlock, unsigned int paramIndex) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_HeapBlock *pHeapBlock = (CLR_RT_HeapBlock *)pVoidHeapBlock; - NANOCLR_CHECK_HRESULT(pHeapBlock->StoreToReference( stackFrame.ArgN(paramIndex), 0 )); + NANOCLR_CHECK_HRESULT(pHeapBlock->StoreToReference(stackFrame.ArgN(paramIndex), 0)); NANOCLR_NOCLEANUP(); } -CLR_RT_HeapBlock* Interop_Marshal_RetrieveManagedObject( CLR_RT_StackFrame &stackFrame ) +CLR_RT_HeapBlock *Interop_Marshal_RetrieveManagedObject(CLR_RT_StackFrame &stackFrame) { return stackFrame.This(); @@ -668,11 +845,11 @@ CLR_RT_HeapBlock* Interop_Marshal_RetrieveManagedObject( CLR_RT_StackFrame &stac /********************************************************************** ** -** Functions: Interop_Marshal_GetField_ +** Functions: Interop_Marshal_GetField_ ** ** Synopsis: Retrieves C++ reference ( pointer ) to the field in managed object. ** -** Arguments: [pThis] - Pointer to the managed object retrieved by Interop_Marshal_RetrieveManagedObject. +** Arguments: [pThis] - Pointer to the managed object retrieved by Interop_Marshal_RetrieveManagedObject. ** [fieldIndex] - Field index. ** ** Returns: Reference to the field. @@ -683,28 +860,28 @@ CLR_RT_HeapBlock* Interop_Marshal_RetrieveManagedObject( CLR_RT_StackFrame &stac #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif -bool &Interop_Marshal_GetField_bool( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +bool &Interop_Marshal_GetField_bool(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (bool&)pThis[ fieldIndex ].NumericByRef().u1; + return (bool &)pThis[fieldIndex].NumericByRef().u1; } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif -unsigned char &Interop_Marshal_GetField_UINT8( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +unsigned char &Interop_Marshal_GetField_UINT8(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().u1; + return pThis[fieldIndex].NumericByRef().u1; } -unsigned short &Interop_Marshal_GetField_UINT16( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +unsigned short &Interop_Marshal_GetField_UINT16(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().u2; + return pThis[fieldIndex].NumericByRef().u2; } -unsigned int &Interop_Marshal_GetField_UINT32( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +unsigned int &Interop_Marshal_GetField_UINT32(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().u4; + return pThis[fieldIndex].NumericByRef().u4; } #ifdef __GNUC__ @@ -712,33 +889,33 @@ unsigned int &Interop_Marshal_GetField_UINT32( CLR_RT_HeapBlock *pThis, unsigned #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif -unsigned __int64 &Interop_Marshal_GetField_UINT64( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +unsigned __int64 &Interop_Marshal_GetField_UINT64(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (unsigned __int64 &)pThis[ fieldIndex ].NumericByRef().u8; + return (unsigned __int64 &)pThis[fieldIndex].NumericByRef().u8; } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif -char &Interop_Marshal_GetField_CHAR( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +char &Interop_Marshal_GetField_CHAR(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (char &)pThis[ fieldIndex ].NumericByRef().s1; + return (char &)pThis[fieldIndex].NumericByRef().s1; } -signed char &Interop_Marshal_GetField_INT8( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed char &Interop_Marshal_GetField_INT8(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().s1; + return pThis[fieldIndex].NumericByRef().s1; } -signed short &Interop_Marshal_GetField_INT16( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed short &Interop_Marshal_GetField_INT16(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().s2; + return pThis[fieldIndex].NumericByRef().s2; } -signed int &Interop_Marshal_GetField_INT32( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed int &Interop_Marshal_GetField_INT32(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().s4; + return pThis[fieldIndex].NumericByRef().s4; } #ifdef __GNUC__ @@ -746,9 +923,9 @@ signed int &Interop_Marshal_GetField_INT32( CLR_RT_HeapBlock *pThis, unsigned i #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif -signed __int64 &Interop_Marshal_GetField_INT64( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed __int64 &Interop_Marshal_GetField_INT64(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (signed __int64 &)pThis[ fieldIndex ].NumericByRef().s8; + return (signed __int64 &)pThis[fieldIndex].NumericByRef().s8; } #ifdef __GNUC__ @@ -758,9 +935,9 @@ signed __int64 &Interop_Marshal_GetField_INT64( CLR_RT_HeapBlock *pThis, unsign //----------------- Float point types - float and double #if !defined(NANOCLR_EMULATED_FLOATINGPOINT) -float &Interop_Marshal_GetField_float( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +float &Interop_Marshal_GetField_float(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return pThis[ fieldIndex ].NumericByRef().r4; + return pThis[fieldIndex].NumericByRef().r4; } #ifdef __GNUC__ @@ -768,9 +945,9 @@ float &Interop_Marshal_GetField_float( CLR_RT_HeapBlock *pThis, unsigned int fi #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif -double &Interop_Marshal_GetField_double( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +double &Interop_Marshal_GetField_double(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (double &)pThis[ fieldIndex ].NumericByRef().r8; + return (double &)pThis[fieldIndex].NumericByRef().r8; } #ifdef __GNUC__ @@ -779,17 +956,16 @@ double &Interop_Marshal_GetField_double( CLR_RT_HeapBlock *pThis, unsigned int f #else -signed int &Interop_Marshal_GetField_float( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed int &Interop_Marshal_GetField_float(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (signed int &) pThis[ fieldIndex ].NumericByRef().r4; + return (signed int &)pThis[fieldIndex].NumericByRef().r4; } -signed __int64 &Interop_Marshal_GetField_double( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +signed __int64 &Interop_Marshal_GetField_double(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (signed __int64 &)pThis[ fieldIndex ].NumericByRef().r8; + return (signed __int64 &)pThis[fieldIndex].NumericByRef().r8; } - #endif #if defined(__arm) @@ -800,9 +976,9 @@ signed __int64 &Interop_Marshal_GetField_double( CLR_RT_HeapBlock *pThis, unsign #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #endif -UNSUPPORTED_TYPE &Interop_Marshal_GetField_UNSUPPORTED_TYPE( CLR_RT_HeapBlock *pThis, unsigned int fieldIndex ) +UNSUPPORTED_TYPE &Interop_Marshal_GetField_UNSUPPORTED_TYPE(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex) { - return (UNSUPPORTED_TYPE &)(*((UNSUPPORTED_TYPE *)NULL)); + return (UNSUPPORTED_TYPE &)(*((UNSUPPORTED_TYPE *)nullptr)); } #ifdef __GNUC__ #pragma GCC diagnostic pop @@ -810,4 +986,3 @@ UNSUPPORTED_TYPE &Interop_Marshal_GetField_UNSUPPORTED_TYPE( CLR_RT_HeapBlock *p #if defined(__arm) #pragma pop #endif - diff --git a/src/CLR/Core/CLR_RT_Memory.cpp b/src/CLR/Core/CLR_RT_Memory.cpp index bbb5005a0c..c1b1a39548 100644 --- a/src/CLR/Core/CLR_RT_Memory.cpp +++ b/src/CLR/Core/CLR_RT_Memory.cpp @@ -45,7 +45,7 @@ void *CLR_RT_Memory::SubtractFromSystem(size_t len) return &s_CLR_RT_Heap.location[s_CLR_RT_Heap.size]; } - return NULL; + return nullptr; } //--// @@ -127,7 +127,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) if (s_CLR_RT_Heap.size == 0) { - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -135,7 +135,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) if (len > heapSize) { ASSERT(false); - return NULL; + return nullptr; } // use the current index to prevent heap thrashing before initialization @@ -178,7 +178,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) return res; } - return NULL; + return nullptr; } void *CLR_RT_Memory::Allocate_And_Erase(size_t len, CLR_UINT32 flags) @@ -198,8 +198,11 @@ void *CLR_RT_Memory::ReAllocate(void *ptr, size_t len) // allocate always as an event but do not run GC on failure void *p = CLR_RT_Memory::Allocate(len, CLR_RT_HeapBlock::HB_Event | CLR_RT_HeapBlock::HB_NoGcOnFailedAllocation); + if (!p) - return NULL; + { + return nullptr; + } if (ptr) { diff --git a/src/CLR/Core/CLR_RT_ObjectToEvent_Source.cpp b/src/CLR/Core/CLR_RT_ObjectToEvent_Source.cpp index 18a0d3426b..2e64d6209a 100644 --- a/src/CLR/Core/CLR_RT_ObjectToEvent_Source.cpp +++ b/src/CLR/Core/CLR_RT_ObjectToEvent_Source.cpp @@ -7,38 +7,46 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_ObjectToEvent_Source::CreateInstance( CLR_RT_ObjectToEvent_Destination* event, CLR_RT_HeapBlock& object, CLR_RT_HeapBlock& reference ) +HRESULT CLR_RT_ObjectToEvent_Source::CreateInstance( + CLR_RT_ObjectToEvent_Destination *event, + CLR_RT_HeapBlock &object, + CLR_RT_HeapBlock &reference) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_ObjectToEvent_Source* oe = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache,CLR_RT_ObjectToEvent_Source,DATATYPE_OBJECT_TO_EVENT); CHECK_ALLOCATION(oe); + CLR_RT_ObjectToEvent_Source *oe = + EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_ObjectToEvent_Source, DATATYPE_OBJECT_TO_EVENT); + CHECK_ALLOCATION(oe); - oe->m_eventPtr = event; // Pointer to the event referenced. + oe->m_eventPtr = event; // Pointer to the event referenced. - oe->m_objectPtr = &object; // Pointer to the object to keep alive. + oe->m_objectPtr = &object; // Pointer to the object to keep alive. oe->m_referencePtr = &reference; // Pointer to the HeapBlock referencing this structure. - reference.SetObjectReference( oe ); + reference.SetObjectReference(oe); - event->m_references.LinkAtBack( oe ); + event->m_references.LinkAtBack(oe); NANOCLR_NOCLEANUP(); } -CLR_RT_ObjectToEvent_Source* CLR_RT_ObjectToEvent_Source::ExtractInstance( CLR_RT_HeapBlock& reference ) +CLR_RT_ObjectToEvent_Source *CLR_RT_ObjectToEvent_Source::ExtractInstance(CLR_RT_HeapBlock &reference) { NATIVE_PROFILE_CLR_CORE(); - if(reference.IsAReferenceOfThisType( DATATYPE_OBJECT_TO_EVENT ) == false) return NULL; + if (reference.IsAReferenceOfThisType(DATATYPE_OBJECT_TO_EVENT) == false) + { + return nullptr; + } - return (CLR_RT_ObjectToEvent_Source*)reference.Dereference(); + return (CLR_RT_ObjectToEvent_Source *)reference.Dereference(); } - void CLR_RT_ObjectToEvent_Source::EnsureObjectIsAlive() { NATIVE_PROFILE_CLR_CORE(); - if(m_objectPtr && m_objectPtr->IsAlive()) return; + if (m_objectPtr && m_objectPtr->IsAlive()) + return; Detach(); } @@ -46,18 +54,17 @@ void CLR_RT_ObjectToEvent_Source::EnsureObjectIsAlive() void CLR_RT_ObjectToEvent_Source::Detach() { NATIVE_PROFILE_CLR_CORE(); - if(m_referencePtr) + if (m_referencePtr) { - m_referencePtr->SetObjectReference( NULL ); + m_referencePtr->SetObjectReference(nullptr); } - g_CLR_RT_EventCache.Append_Node( this ); + g_CLR_RT_EventCache.Append_Node(this); } void CLR_RT_ObjectToEvent_Source::Relocate() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_objectPtr ); - CLR_RT_GarbageCollector::Heap_Relocate( (void**)&m_referencePtr ); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_objectPtr); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_referencePtr); } - diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index ce24e58ab9..b5bd378733 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -109,17 +109,17 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan stack->m_evalStack; // CLR_RT_HeapBlock* m_evalStackPos; // EVENT HEAP - NO RELOCATION - stack->m_evalStackEnd = stack->m_evalStack + - sizeEvalStack; // CLR_RT_HeapBlock* m_evalStackEnd; // EVENT HEAP - NO RELOCATION - - stack->m_arguments = NULL; // CLR_RT_HeapBlock* m_arguments; // EVENT HEAP - NO RELOCATION - - // - // union - // { - stack->m_customState = 0; // CLR_UINT32 m_customState; - // void* m_customPointer; - // }; - // + sizeEvalStack; // CLR_RT_HeapBlock* m_evalStackEnd; // EVENT HEAP - NO RELOCATION - + stack->m_arguments = nullptr; // CLR_RT_HeapBlock* m_arguments; // EVENT HEAP - NO RELOCATION - + // + // union + // { + stack->m_customState = 0; // CLR_UINT32 m_customState; + // void* m_customPointer; + // }; + // #ifndef NANOCLR_NO_IL_INLINE - stack->m_inlineFrame = NULL; + stack->m_inlineFrame = nullptr; #endif #if defined(NANOCLR_PROFILE_NEW_CALLS) stack->m_callchain.Enter(stack); // CLR_PROF_CounterCallChain m_callchain; @@ -141,15 +141,15 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan stack->m_nativeMethod = (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_DelegateInvoke; stack->m_flags = CLR_RT_StackFrame::c_MethodKind_Native; - stack->m_IPstart = NULL; + stack->m_IPstart = nullptr; } - else if (assm->nativeCode && (impl = assm->nativeCode[stack->m_call.Method()]) != NULL) + else if (assm->nativeCode && (impl = assm->nativeCode[stack->m_call.Method()]) != nullptr) { stack->m_nativeMethod = impl; stack->m_flags = CLR_RT_StackFrame::c_MethodKind_Native; - stack->m_IPstart = NULL; - stack->m_IP = NULL; + stack->m_IPstart = nullptr; + stack->m_IP = nullptr; } else { @@ -212,7 +212,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan } if (stack->m_owningThread->m_fHasJMCStepper || (stack->m_flags & c_HasBreakpoint) || - (caller->Prev() != NULL && (caller->m_flags & c_HasBreakpoint))) + (caller->Prev() != nullptr && (caller->m_flags & c_HasBreakpoint))) { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Push( stack, @@ -223,7 +223,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan //--// - if (caller->Prev() != NULL && caller->m_nativeMethod == stack->m_nativeMethod) + if (caller->Prev() != nullptr && caller->m_nativeMethod == stack->m_nativeMethod) { if (stack->m_flags & CLR_RT_StackFrame::c_ProcessSynchronize) { @@ -282,7 +282,7 @@ bool CLR_RT_StackFrame::PushInline( { const CLR_RECORD_METHODDEF *md = calleeInst.target; - if ((m_inlineFrame != NULL) || // We can only support one inline at a time per stack call + if ((m_inlineFrame != nullptr) || // We can only support one inline at a time per stack call (m_evalStackEnd - evalPos) <= (md->argumentsCount + md->localsCount + md->lengthEvalStack + 2) || // We must have enough space on the current stack for the inline method (m_nativeMethod != (CLR_RT_MethodHandler)CLR_RT_Thread::Execute_IL) || // We only support IL inlining @@ -290,9 +290,9 @@ bool CLR_RT_StackFrame::PushInline( CLR_RECORD_METHODDEF::MD_Constructor || // Do not try to inline constructors, etc because they require // special processing (0 != (md->flags & CLR_RECORD_METHODDEF::MD_Static)) || // Static methods also requires special processing - (calleeInst.assembly->nativeCode != NULL && (calleeInst.assembly->nativeCode[calleeInst.Method()] != - NULL)) || // Make sure the callee is not an internal method - (md->rva == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method + (calleeInst.assembly->nativeCode != nullptr && (calleeInst.assembly->nativeCode[calleeInst.Method()] != + nullptr)) || // Make sure the callee is not an internal method + (md->rva == CLR_EmptyIndex) || // Make sure we have a valid IP address for the method !g_CLR_RT_EventCache.GetInlineFrameBuffer( &m_inlineFrame)) // Make sure we have an extra slot in the inline cache { @@ -378,7 +378,7 @@ void CLR_RT_StackFrame::PopInline() if (m_flags & CLR_RT_StackFrame::c_InlineMethodHasReturnValue) { - if (m_owningThread->m_currentException.Dereference() == NULL) + if (m_owningThread->m_currentException.Dereference() == nullptr) { CLR_RT_HeapBlock &dst = PushValueAndAssign(src); @@ -387,7 +387,7 @@ void CLR_RT_StackFrame::PopInline() } g_CLR_RT_EventCache.FreeInlineBuffer(m_inlineFrame); - m_inlineFrame = NULL; + m_inlineFrame = nullptr; m_flags &= ~(CLR_RT_StackFrame::c_MethodKind_Inlined | CLR_RT_StackFrame::c_InlineMethodHasReturnValue); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -445,7 +445,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() CLR_RT_HeapBlock exception; CLR_RT_StackFrame *caller = this->Caller(); - exception.SetObjectReference(NULL); + exception.SetObjectReference(nullptr); if (m_flags & CLR_RT_StackFrame::c_AppDomainInjectException) { @@ -454,7 +454,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() _ASSERTE(m_owningThread->m_flags & CLR_RT_Thread::TH_F_Aborted); _ASSERTE(m_owningThread->m_flags & CLR_RT_Thread::TH_F_ContainsDoomedAppDomain); - _ASSERTE(m_owningThread->m_currentException.Dereference() != NULL); + _ASSERTE(m_owningThread->m_currentException.Dereference() != nullptr); _ASSERTE( m_owningThread->m_currentException.Dereference()->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.m_ThreadAbortException.m_data); @@ -464,7 +464,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() hr = CLR_E_APPDOMAIN_EXITED; } - else if (m_owningThread->m_currentException.Dereference() == NULL) + else if (m_owningThread->m_currentException.Dereference() == nullptr) { _ASSERTE((m_flags & CLR_RT_StackFrame::c_AppDomainInjectException) == 0); @@ -532,7 +532,7 @@ HRESULT CLR_RT_StackFrame::PushAppDomainTransition( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_StackFrame *frame = NULL; + CLR_RT_StackFrame *frame = nullptr; int cArgs = callInst.m_target->ArgumentsCount; CLR_RT_HeapBlock *proxy; @@ -577,7 +577,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( int argsOffset = 0; CLR_RT_StackFrame *stackSub; CLR_RT_HeapBlock tmp; - tmp.SetObjectReference(NULL); + tmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmp); if (mdR->flags & CLR_RECORD_METHODDEF::MD_Constructor) @@ -585,7 +585,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( CLR_RT_TypeDef_Instance owner; owner.InitializeFromMethod(md); - _ASSERTE(obj == NULL); + _ASSERTE(obj == nullptr); _SIDE_ASSERTE(owner.InitializeFromMethod(md)); @@ -881,7 +881,7 @@ void CLR_RT_StackFrame::Pop() CLR_RT_StackFrame *caller = Caller(); - if (caller->Prev() != NULL) + if (caller->Prev() != nullptr) { #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (caller->m_flags & CLR_RT_StackFrame::c_HasBreakpoint) @@ -939,7 +939,7 @@ void CLR_RT_StackFrame::Pop() // if (m_call.target->retValDataType != DATATYPE_VOID) { - if (m_owningThread->m_currentException.Dereference() == NULL) + if (m_owningThread->m_currentException.Dereference() == nullptr) { CLR_RT_HeapBlock &src = this->TopValue(); CLR_RT_HeapBlock &dst = caller->PushValueAndAssign(src); @@ -964,9 +964,9 @@ void CLR_RT_StackFrame::Pop() CLR_RT_HeapBlock *dst = (CLR_RT_HeapBlock *)array->GetElement((CLR_UINT32)index); CLR_RT_HeapBlock *exception = m_owningThread->m_currentException.Dereference(); - dst->SetObjectReference(NULL); + dst->SetObjectReference(nullptr); - if (exception != NULL) + if (exception != nullptr) { dst->SetObjectReference(exception); } @@ -991,7 +991,7 @@ void CLR_RT_StackFrame::Pop() { if (FAILED(dst->PerformBoxing(desc.m_handlerCls))) { - dst->SetObjectReference(NULL); + dst->SetObjectReference(nullptr); } } } @@ -1004,7 +1004,7 @@ void CLR_RT_StackFrame::Pop() // We could be jumping outside of a nested exception handler. // - m_owningThread->PopEH(this, NULL); + m_owningThread->PopEH(this, nullptr); // // If this StackFrame owns a SubThread, kill it. diff --git a/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp b/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp index 1f52d28342..3daac20df4 100644 --- a/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp +++ b/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp @@ -10,22 +10,22 @@ static const CLR_RT_NativeAssemblyData *LookUpAssemblyNativeDataByName( const char *lpszAssemblyName) { // Just sanity check to avoid crash in strcmp if name is NULL. - if (lpszAssemblyName == NULL) + if (lpszAssemblyName == nullptr) { - return NULL; + return nullptr; } // Loops in all entries and looks for the CLR_RT_NativeAssemblyData with name same as lpszAssemblyName for (int i = 0; pAssembliesNativeData[i]; i++) { - if (i < g_CLR_InteropAssembliesCount && pAssembliesNativeData[i] != NULL && + if (i < g_CLR_InteropAssembliesCount && pAssembliesNativeData[i] != nullptr && 0 == strcmp(lpszAssemblyName, pAssembliesNativeData[i]->m_szAssemblyName)) { return pAssembliesNativeData[i]; } } - return NULL; + return nullptr; } const CLR_RT_NativeAssemblyData *GetAssemblyNativeData(const char *lpszAssemblyName) diff --git a/src/CLR/Core/CLR_RT_UnicodeHelper.cpp b/src/CLR/Core/CLR_RT_UnicodeHelper.cpp index ba5057c107..f00e0159d5 100644 --- a/src/CLR/Core/CLR_RT_UnicodeHelper.cpp +++ b/src/CLR/Core/CLR_RT_UnicodeHelper.cpp @@ -516,13 +516,13 @@ void CLR_RT_UnicodeHelper::ConvertToUTF8(const std::wstring &src, std::string &d char *szBuf; int iSize; - iSize = ::WideCharToMultiByte(CP_UTF8, 0, src.c_str(), -1, NULL, 0, NULL, NULL); + iSize = ::WideCharToMultiByte(CP_UTF8, 0, src.c_str(), -1, nullptr, 0, nullptr, nullptr); if (iSize > 0) { szBuf = new char[iSize]; - iSize = ::WideCharToMultiByte(CP_UTF8, 0, src.c_str(), -1, szBuf, iSize, NULL, NULL); + iSize = ::WideCharToMultiByte(CP_UTF8, 0, src.c_str(), -1, szBuf, iSize, nullptr, nullptr); if (iSize > 0) { dst = szBuf; @@ -544,7 +544,7 @@ void CLR_RT_UnicodeHelper::ConvertFromUTF8(const std::string &src, std::wstring wchar_t *szBuf; int iSize; - iSize = ::MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, NULL, 0); + iSize = ::MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, nullptr, 0); if (iSize > 0) { @@ -569,7 +569,7 @@ void CLR_RT_UnicodeHelper::ConvertFromUTF8(const std::string &src, std::wstring UnicodeString::UnicodeString() { - m_wCharArray = NULL; + m_wCharArray = nullptr; m_length = 0; } @@ -614,10 +614,10 @@ HRESULT UnicodeString::Assign(const char *string) void UnicodeString::Release() { - if (m_wCharArray != NULL) + if (m_wCharArray != nullptr) { CLR_RT_Memory::Release(m_wCharArray); } - m_wCharArray = NULL; + m_wCharArray = nullptr; } diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index 055a7c7482..11284e35e1 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -107,7 +107,7 @@ bool CLR_RT_EventCache::VirtualMethodTable::FindVirtualMethod( if (m_list_freeItems.IsEmpty()) { en = (LookupEntry *)m_list_inUse.LastNode(); - if (en->Prev() == NULL) + if (en->Prev() == nullptr) { // // No node to steal, return. @@ -401,7 +401,7 @@ void CLR_RT_EventCache::EventCache_Initialize() { m_inlineBufferStart[i].m_pNext = &m_inlineBufferStart[i + 1]; } - m_inlineBufferStart[num].m_pNext = NULL; + m_inlineBufferStart[num].m_pNext = nullptr; #endif } @@ -458,7 +458,7 @@ CLR_RT_HeapBlock *CLR_RT_EventCache::Extract_Node_Slow(CLR_UINT32 dataType, CLR_ { NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock_Node *node; - CLR_RT_HeapBlock_Node *best = NULL; + CLR_RT_HeapBlock_Node *best = nullptr; CLR_UINT32 bestSize = 0; NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_Node, ptr, m_events[0].m_blocks) @@ -598,7 +598,7 @@ bool CLR_RT_EventCache::FindVirtualMethod( #ifndef NANOCLR_NO_IL_INLINE bool CLR_RT_EventCache::GetInlineFrameBuffer(CLR_RT_InlineBuffer **ppBuffer) { - if (m_inlineBufferStart != NULL) + if (m_inlineBufferStart != nullptr) { *ppBuffer = m_inlineBufferStart; @@ -607,7 +607,7 @@ bool CLR_RT_EventCache::GetInlineFrameBuffer(CLR_RT_InlineBuffer **ppBuffer) return true; } - *ppBuffer = NULL; + *ppBuffer = nullptr; return false; } diff --git a/src/CLR/Core/Checks.cpp b/src/CLR/Core/Checks.cpp index 398f56f7b1..c4bd536cde 100644 --- a/src/CLR/Core/Checks.cpp +++ b/src/CLR/Core/Checks.cpp @@ -14,21 +14,21 @@ HRESULT CLR_Checks::VerifyStackOK(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *to CLR_RT_HeapBlock const *evalStackArg = &stackArg->m_evalStackPos[-num]; int argCount = abs(num); - //if (num > 0) + // if (num > 0) //{ - // // loop through each parameter, if any and check validity - // for (int pos = 0; pos < num; pos++) - // { - // if (!(evalStackArg <= top)) - // { - // return S_FALSE; - // } + // // loop through each parameter, if any and check validity + // for (int pos = 0; pos < num; pos++) + // { + // if (!(evalStackArg <= top)) + // { + // return S_FALSE; + // } // topArg++; // evalStackArg++; // } //} - //else if (num < 0) + // else if (num < 0) //{ // // loop through each parameter, if any and check validity // for (int pos = 0; pos > num; pos--) @@ -46,24 +46,26 @@ HRESULT CLR_Checks::VerifyStackOK(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *to return S_OK; } -HRESULT CLR_Checks::VerifyObject( CLR_RT_HeapBlock& top ) +HRESULT CLR_Checks::VerifyObject(CLR_RT_HeapBlock &top) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - switch(top.DataType()) + switch (top.DataType()) { - case DATATYPE_OBJECT: - case DATATYPE_BYREF: - if(top.Dereference() != NULL) NANOCLR_SET_AND_LEAVE(S_OK); - break; - - case DATATYPE_ARRAY_BYREF: - if(top.DereferenceArray() != NULL) NANOCLR_SET_AND_LEAVE(S_OK); - break; - - default: - NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + case DATATYPE_OBJECT: + case DATATYPE_BYREF: + if (top.Dereference() != nullptr) + NANOCLR_SET_AND_LEAVE(S_OK); + break; + + case DATATYPE_ARRAY_BYREF: + if (top.DereferenceArray() != nullptr) + NANOCLR_SET_AND_LEAVE(S_OK); + break; + + default: + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); @@ -71,25 +73,25 @@ HRESULT CLR_Checks::VerifyObject( CLR_RT_HeapBlock& top ) NANOCLR_NOCLEANUP(); } -HRESULT CLR_Checks::VerifyArrayReference( CLR_RT_HeapBlock& ref ) +HRESULT CLR_Checks::VerifyArrayReference(CLR_RT_HeapBlock &ref) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array* array; + CLR_RT_HeapBlock_Array *array; - if(ref.DataType() != DATATYPE_OBJECT) + if (ref.DataType() != DATATYPE_OBJECT) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } array = ref.DereferenceArray(); - if(array == NULL) + if (array == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); } - if(array->DataType() != DATATYPE_SZARRAY) + if (array->DataType() != DATATYPE_SZARRAY) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -97,7 +99,7 @@ HRESULT CLR_Checks::VerifyArrayReference( CLR_RT_HeapBlock& ref ) NANOCLR_NOCLEANUP(); } -HRESULT CLR_Checks::VerifyUnknownInstruction( CLR_OPCODE op ) +HRESULT CLR_Checks::VerifyUnknownInstruction(CLR_OPCODE op) { (void)op; @@ -109,7 +111,7 @@ HRESULT CLR_Checks::VerifyUnknownInstruction( CLR_OPCODE op ) NANOCLR_NOCLEANUP(); } -HRESULT CLR_Checks::VerifyUnsupportedInstruction( CLR_OPCODE op ) +HRESULT CLR_Checks::VerifyUnsupportedInstruction(CLR_OPCODE op) { (void)op; diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 32778ad950..b9f3425649 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -64,29 +64,29 @@ HRESULT CLR_RT_ExecutionEngine::ExecutionEngine_Initialize() // CLR_RT_Thread* m_cctorThread; // #if !defined(NANOCLR_APPDOMAINS) - m_globalLock = NULL; // CLR_RT_HeapBlock* m_globalLock; - m_outOfMemoryException = NULL; // CLR_RT_HeapBlock* m_outOfMemoryException; -#endif // + m_globalLock = nullptr; // CLR_RT_HeapBlock* m_globalLock; + m_outOfMemoryException = nullptr; // CLR_RT_HeapBlock* m_outOfMemoryException; +#endif // - m_currentUICulture = NULL; // CLR_RT_HeapBlock* m_currentUICulture; + m_currentUICulture = nullptr; // CLR_RT_HeapBlock* m_currentUICulture; CLR_RT_HeapBlock_EndPoint::HandlerMethod_Initialize(); CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_Initialize(); - m_interruptThread = NULL; // CLR_RT_Thread m_interruptThread; + m_interruptThread = nullptr; // CLR_RT_Thread m_interruptThread; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - m_scratchPadArray = NULL; // CLR_RT_HeapBlock_Array* m_scratchPadArray; -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + m_scratchPadArray = nullptr; // CLR_RT_HeapBlock_Array* m_scratchPadArray; +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if defined(NANOCLR_APPDOMAINS) m_appDomains.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_appDomains; - m_appDomainCurrent = NULL; // CLR_AppDomainCurrent* m_appDomainCurrent; + m_appDomainCurrent = nullptr; // CLR_AppDomainCurrent* m_appDomainCurrent; m_appDomainIdNext = c_AppDomainId_Invalid + 1; // int m_appDomainIdNext; #endif - m_currentThread = NULL; + m_currentThread = nullptr; m_GlobalExecutionCounter = 0; @@ -214,7 +214,7 @@ void CLR_RT_ExecutionEngine::ExecutionEngine_Cleanup() m_fShuttingDown = true; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - m_scratchPadArray = NULL; + m_scratchPadArray = nullptr; m_breakpointsNum = 0; CLR_DBG_Debugger::DeleteInstance(); @@ -230,21 +230,21 @@ void CLR_RT_ExecutionEngine::ExecutionEngine_Cleanup() m_finalizersAlive.DblLinkedList_PushToCache(); m_finalizersPending.DblLinkedList_PushToCache(); - m_finalizerThread = NULL; - m_cctorThread = NULL; - m_timerThread = NULL; + m_finalizerThread = nullptr; + m_cctorThread = nullptr; + m_timerThread = nullptr; g_CLR_RT_TypeSystem.TypeSystem_Cleanup(); g_CLR_RT_EventCache.EventCache_Cleanup(); #if !defined(NANOCLR_APPDOMAINS) - m_globalLock = NULL; + m_globalLock = nullptr; #endif CLR_RT_HeapBlock_EndPoint::HandlerMethod_CleanUp(); CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_CleanUp(); - m_interruptThread = NULL; + m_interruptThread = nullptr; m_heap.DblLinkedList_Initialize(); } @@ -305,7 +305,7 @@ void CLR_RT_ExecutionEngine::LoadDownloadedAssemblies() if (header->GoodAssembly()) { - CLR_RT_Assembly *assm = NULL; + CLR_RT_Assembly *assm = nullptr; if (SUCCEEDED(CLR_RT_Assembly::CreateInstance(header, assm))) { @@ -329,7 +329,7 @@ void CLR_RT_ExecutionEngine::LoadDownloadedAssemblies() // if ((pASSM->flags & CLR_RT_Assembly::ResolutionCompleted) == 0) { - pASSM->file = NULL; + pASSM->file = nullptr; pASSM->DestroyInstance(); } @@ -365,7 +365,7 @@ CLR_UINT32 CLR_RT_ExecutionEngine::PerformGarbageCollection() m_heapState = c_HeapState_Normal; - m_lastHcUsed = NULL; + m_lastHcUsed = nullptr; #if !defined(BUILD_RTM) || defined(VIRTUAL_DEVICE) if (m_fPerformHeapCompaction) @@ -387,7 +387,7 @@ void CLR_RT_ExecutionEngine::PerformHeapCompaction() CLR_EE_CLR(Compaction_Pending); - m_lastHcUsed = NULL; + m_lastHcUsed = nullptr; } void CLR_RT_ExecutionEngine::Relocate() @@ -533,19 +533,19 @@ HRESULT CLR_RT_ExecutionEngine::CreateEntryPointArgs(CLR_RT_HeapBlock &argsBlk, CLR_RT_HeapBlock_Array *array; CLR_UINT32 iArg; - wchar_t *szArgNext = NULL; + wchar_t *szArgNext = nullptr; wchar_t *szArg = szCommandLineArgs; const wchar_t *sep = L" "; - wchar_t *context = NULL; + wchar_t *context = nullptr; szArg = wcstok_s(szArg, sep, &context); - while (szArg != NULL) + while (szArg != nullptr) { std::wstring arg = szArg; args.insert(args.end(), arg); - szArg = wcstok_s(NULL, sep, &context); + szArg = wcstok_s(nullptr, sep, &context); } NANOCLR_CHECK_HRESULT( @@ -575,7 +575,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS NANOCLR_HEADER(); CLR_RT_HeapBlock ref; - CLR_RT_Thread *thMain = NULL; + CLR_RT_Thread *thMain = nullptr; if (NANOCLR_INDEX_IS_INVALID(g_CLR_RT_TypeSystem.m_entryPoint)) { @@ -591,7 +591,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS CLR_EE_DBG_SET_MASK(StateProgramRunning, StateMask); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate::CreateInstance(ref, g_CLR_RT_TypeSystem.m_entryPoint, NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate::CreateInstance(ref, g_CLR_RT_TypeSystem.m_entryPoint, nullptr)); { CLR_RT_ProtectFromGC gc(ref); @@ -608,7 +608,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS // Set the arg to NULL, if that's the case. #if defined(VIRTUAL_DEVICE) - if (entryPointArgs != NULL) + if (entryPointArgs != nullptr) { NANOCLR_CHECK_HRESULT(CreateEntryPointArgs(stack->m_arguments[0], entryPointArgs)); } @@ -710,7 +710,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS #endif // By skipping the whole CLRStartup routine, the Monitor_Program_Exit message never gets sent to clients. - CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands::c_Monitor_ProgramExit, 0, NULL, WP_Flags_c_NonCritical); + CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands::c_Monitor_ProgramExit, 0, nullptr, WP_Flags_c_NonCritical); WaitForDebugger(); #endif @@ -721,9 +721,9 @@ bool CLR_RT_ExecutionEngine::EnsureSystemThread(CLR_RT_Thread *&thread, int prio { NATIVE_PROFILE_CLR_CORE(); - if (thread == NULL) + if (thread == nullptr) { - return SUCCEEDED(NewThread(thread, NULL, priority, -1, CLR_RT_Thread::TH_F_System)); + return SUCCEEDED(NewThread(thread, nullptr, priority, -1, CLR_RT_Thread::TH_F_System)); } else { @@ -770,22 +770,22 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Index indexNext; - _ASSERTE(m_cctorThread != NULL); + _ASSERTE(m_cctorThread != nullptr); //_ASSERTE(m_cctorThread->CanThreadBeReused()); indexNext.m_data = index.m_data; - _ASSERTE(appDomainAssembly != NULL); + _ASSERTE(appDomainAssembly != nullptr); // find next method with static constructor if (appDomainAssembly->m_assembly->FindNextStaticConstructor(indexNext)) { CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; - refDlg.SetObjectReference(NULL); + refDlg.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refDlg); - if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, NULL))) + if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, nullptr))) { dlg = refDlg.DereferenceDelegate(); dlg->m_appDomain = appDomain; @@ -806,14 +806,14 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock_Delegate *dlg = NULL; + CLR_RT_HeapBlock_Delegate *dlg = nullptr; if (!EnsureSystemThread(pCctorThread, ThreadPriority::System_Highest)) return; dlg = pCctorThread->m_dlg; - if (dlg != NULL) + if (dlg != nullptr) { CLR_RT_AppDomainAssembly *appDomainAssembly; CLR_RT_MethodDef_Index index = dlg->DelegateFtn(); @@ -825,7 +825,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread appDomainAssembly = dlg->m_appDomain->FindAppDomainAssembly(inst.m_assm); - _ASSERTE(appDomainAssembly != NULL); + _ASSERTE(appDomainAssembly != nullptr); _ASSERTE(appDomainAssembly->m_assembly == inst.m_assm); // This is ok if index is no longer valid. SpawnStaticConstructorHelper will call FindNextStaticConstructor @@ -858,7 +858,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread { CLR_RT_AppDomainAssembly *appDomainAssemblyRef = appDomain->FindAppDomainAssembly(ar->m_target); - _ASSERTE(appDomainAssemblyRef != NULL); + _ASSERTE(appDomainAssemblyRef != nullptr); _ASSERTE(appDomainAssemblyRef->m_flags & CLR_RT_AppDomainAssembly::StaticConstructorsExecuted); } #endif @@ -885,22 +885,22 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Index indexNext; - _ASSERTE(m_cctorThread != NULL); + _ASSERTE(m_cctorThread != nullptr); _ASSERTE(m_cctorThread->CanThreadBeReused()); indexNext.data = index.data; - _ASSERTE(assembly != NULL); + _ASSERTE(assembly != nullptr); // find next method with static constructor if (assembly->FindNextStaticConstructor(indexNext)) { CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; - refDlg.SetObjectReference(NULL); + refDlg.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refDlg); - if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, NULL))) + if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, nullptr))) { dlg = refDlg.DereferenceDelegate(); @@ -920,14 +920,14 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock_Delegate *dlg = NULL; + CLR_RT_HeapBlock_Delegate *dlg = nullptr; if (!EnsureSystemThread(pCctorThread, ThreadPriority::System_Highest)) return; dlg = pCctorThread->m_dlg; - if (dlg != NULL) + if (dlg != nullptr) { CLR_RT_MethodDef_Index index = dlg->DelegateFtn(); CLR_RT_MethodDef_Instance inst; @@ -989,10 +989,10 @@ void CLR_RT_ExecutionEngine::SpawnFinalizer() NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock_Finalizer *fin = (CLR_RT_HeapBlock_Finalizer *)m_finalizersPending.FirstNode(); - if (fin->Next() != NULL) + if (fin->Next() != nullptr) { CLR_RT_HeapBlock delegate; - delegate.SetObjectReference(NULL); + delegate.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(delegate); #if defined(NANOCLR_APPDOMAINS) @@ -1001,7 +1001,7 @@ void CLR_RT_ExecutionEngine::SpawnFinalizer() if (EnsureSystemThread(m_finalizerThread, ThreadPriority::BelowNormal)) { - if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(delegate, fin->m_md, NULL))) + if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(delegate, fin->m_md, nullptr))) { CLR_RT_HeapBlock_Delegate *dlg = delegate.DereferenceDelegate(); @@ -1041,7 +1041,7 @@ void CLR_RT_ExecutionEngine::RetrieveCurrentMethod(CLR_UINT32 &assmIndex, CLR_UI assmIndex = 0; methodIndex = 0; - if (m_currentThread != NULL) + if (m_currentThread != nullptr) { CLR_RT_StackFrame *stack = m_currentThread->CurrentFrame(); @@ -1065,7 +1065,7 @@ void CLR_SoftReboot() void CLR_DebuggerBreak() { - if (g_CLR_RT_ExecutionEngine.m_currentThread != NULL) + if (g_CLR_RT_ExecutionEngine.m_currentThread != nullptr) { CLR_RT_HeapBlock *obj = g_CLR_RT_ExecutionEngine.m_currentThread->m_currentException.Dereference(); @@ -1073,7 +1073,7 @@ void CLR_DebuggerBreak() /// Only inject the exception once -- if the dereference is not null then the exception is already set on the /// current thread /// - if (obj == NULL) + if (obj == nullptr) { Library_corlib_native_System_Exception::CreateInstance( g_CLR_RT_ExecutionEngine.m_currentThread->m_currentException, @@ -1129,11 +1129,11 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - CLR_RT_Thread *th = NULL; + CLR_RT_Thread *th = nullptr; // If a static constructor thread exists, we should be running it. // What about func-eval? - if (m_cctorThread == NULL) + if (m_cctorThread == nullptr) { // This is normal case execution. Looks for first ready thread. th = (CLR_RT_Thread *)m_threadsReady.FirstNode(); @@ -1156,7 +1156,7 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) // If th->Next() is NULL, then there are no Ready to run threads in the system. // In this case we spawn finalizer and make finalizer thread as ready one. - if (th->Next() == NULL) + if (th->Next() == nullptr) { g_CLR_RT_ExecutionEngine.SpawnFinalizer(); @@ -1174,7 +1174,7 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) } // If there is ready thread - decrease m_executionCounter for this (th) thread. - if (th->Next() != NULL) + if (th->Next() != nullptr) { // The value to update m_executionCounter for each run. See comment for GetQuantumDebit for possible values int debitForEachRun = th->GetQuantumDebit(); @@ -1383,11 +1383,11 @@ void CLR_RT_ExecutionEngine::InsertThreadRoundRobin(CLR_RT_DblLinkedList &thread thTarget->m_waitForEvents = 0; thTarget->m_waitForEvents_Timeout = TIMEOUT_INFINITE; - if (thTarget->m_waitForObject != NULL) + if (thTarget->m_waitForObject != nullptr) { g_CLR_RT_EventCache.Append_Node(thTarget->m_waitForObject); - thTarget->m_waitForObject = NULL; + thTarget->m_waitForObject = nullptr; } threads.InsertBeforeNode(th, thTarget); @@ -1418,7 +1418,7 @@ HRESULT CLR_RT_ExecutionEngine::NewThread( { thRes->DestroyInstance(); - thRes = NULL; + thRes = nullptr; } } @@ -1445,7 +1445,9 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForArray( CLR_UINT32 lengthHB = CONVERTFROMSIZETOHEAPBLOCKS(totLength); if (lengthHB > CLR_RT_HeapBlock::HB_MaxSize) - return NULL; + { + return nullptr; + } CLR_RT_HeapBlock_Array *pArray = (CLR_RT_HeapBlock_Array *)ExtractHeapBlocks(m_heap, DATATYPE_SZARRAY, 0, lengthHB); @@ -1476,7 +1478,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForClassOrValueTypes( if (length > CLR_RT_HeapBlock::HB_MaxSize) { - return NULL; + return nullptr; } _ASSERTE(dataType == DATATYPE_CLASS || dataType == DATATYPE_VALUETYPE); @@ -1505,7 +1507,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForGenericInstance( if (length > CLR_RT_HeapBlock::HB_MaxSize) { - return NULL; + return nullptr; } flags = flags | CLR_RT_HeapBlock::HB_InitializeToZero; @@ -1538,8 +1540,11 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocksForObjects( CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); + if (length > CLR_RT_HeapBlock::HB_MaxSize) - return NULL; + { + return nullptr; + } _ASSERTE(dataType != DATATYPE_CLASS && dataType != DATATYPE_VALUETYPE && dataType != DATATYPE_SZARRAY); @@ -1565,8 +1570,11 @@ CLR_RT_HeapBlock_Node *CLR_RT_ExecutionEngine::ExtractHeapBlocksForEvents( CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); + if (length > CLR_RT_HeapBlock::HB_MaxSize) - return NULL; + { + return nullptr; + } flags |= CLR_RT_HeapBlock::HB_Alive | CLR_RT_HeapBlock::HB_Event; @@ -1599,7 +1607,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( // Getting here during a GC is possible, since the watchdog ISR may now require // dynamic memory allocation for logging. Returning NULL means the watchdog log will // be lost, but without major restructuring there is not much we can do. - return NULL; + return nullptr; } #endif @@ -1630,7 +1638,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( } else { - if (m_lastHcUsed != NULL) + if (m_lastHcUsed != nullptr) { hb = m_lastHcUsed->ExtractBlocks(dataType, flags, length); if (hb) @@ -1660,12 +1668,12 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( NANOCLR_FOREACH_NODE_END(); } - m_lastHcUsed = NULL; + m_lastHcUsed = nullptr; } if (flags & CLR_RT_HeapBlock::HB_NoGcOnFailedAllocation) { - return NULL; + return nullptr; } switch (phase) @@ -1702,7 +1710,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( CLR_EE_SET(Compaction_Pending); } - return NULL; + return nullptr; } } } @@ -1729,7 +1737,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::AccessStaticField(const CLR_RT_FieldDe #endif } - return NULL; + return nullptr; } HRESULT CLR_RT_ExecutionEngine::InitializeReference(CLR_RT_HeapBlock &ref, CLR_RT_SignatureParser &parser) @@ -1911,7 +1919,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( { const CLR_RT_TypeDef_Index *cls2 = c_CLR_RT_DataTypeLookup[dt].m_cls; - if (cls2 == NULL) + if (cls2 == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -1926,7 +1934,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeLocals( done: if (levels > 0) // Array or reference { - locals->SetObjectReference(NULL); + locals->SetObjectReference(nullptr); // If local variable has DATATYPE_TYPE_PINNED, we mark heap block as if (dtModifier == DATATYPE_TYPE_PINNED) @@ -2017,7 +2025,7 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - reference.SetObjectReference(NULL); + reference.SetObjectReference(nullptr); NanoCLRDataType dt = (NanoCLRDataType)inst.target->dataType; @@ -2069,8 +2077,8 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR reference.SetObjectReference(obj); { - const CLR_RECORD_FIELDDEF *target = NULL; - CLR_RT_Assembly *assm = NULL; + const CLR_RECORD_FIELDDEF *target = nullptr; + CLR_RT_Assembly *assm = nullptr; CLR_RT_TypeDef_Instance instSub = inst; NANOCLR_CHECK_HRESULT(obj->SetObjectCls(inst)); @@ -2090,10 +2098,10 @@ HRESULT CLR_RT_ExecutionEngine::NewObject(CLR_RT_HeapBlock &reference, const CLR NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); clsFields = instSub.target->instanceFieldsCount; - target = NULL; + target = nullptr; } - if (target == NULL) + if (target == nullptr) { assm = instSub.assembly; target = assm->GetFieldDef(instSub.target->firstInstanceField + clsFields); @@ -2170,11 +2178,11 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const CLR_RECORD_FIELDDEF *target = NULL; - CLR_RT_Assembly *assm = NULL; + const CLR_RECORD_FIELDDEF *target = nullptr; + CLR_RT_Assembly *assm = nullptr; CLR_RT_TypeDef_Instance instSub = instance; - reference.SetObjectReference(NULL); + reference.SetObjectReference(nullptr); int clsFields = instance.target->instanceFieldsCount; int totFields = instance.CrossReference().totalFields + CLR_RT_HeapBlock::HB_Object_Fields_Offset; @@ -2204,10 +2212,10 @@ HRESULT CLR_RT_ExecutionEngine::NewGenericInstanceObject( } clsFields = instSub.target->instanceFieldsCount; - target = NULL; + target = nullptr; } - if (target == NULL) + if (target == nullptr) { assm = instSub.assembly; target = assm->GetFieldDef(instSub.target->firstInstanceField + clsFields); @@ -2360,7 +2368,7 @@ HRESULT CLR_RT_ExecutionEngine::FindFieldDef( do { - if (local.assembly->FindFieldDef(local.target, szText, NULL, 0, res)) + if (local.assembly->FindFieldDef(local.target, szText, nullptr, 0, res)) NANOCLR_SET_AND_LEAVE(S_OK); } while (local.SwitchToParent()); @@ -2405,7 +2413,7 @@ HRESULT CLR_RT_ExecutionEngine::FindField(CLR_RT_HeapBlock &reference, const cha CLR_RT_FieldDef_Index index; CLR_RT_HeapBlock *res; - field = NULL; + field = nullptr; NANOCLR_CHECK_HRESULT(FindFieldDef(reference, szText, index)); @@ -2414,8 +2422,11 @@ HRESULT CLR_RT_ExecutionEngine::FindField(CLR_RT_HeapBlock &reference, const cha if (inst.target->flags & CLR_RECORD_FIELDDEF::FD_Static) { res = CLR_RT_ExecutionEngine::AccessStaticField(index); - if (res == NULL) + + if (res == nullptr) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } } else { @@ -2483,7 +2494,7 @@ CLR_RT_HeapBlock_Lock *CLR_RT_ExecutionEngine::FindLockObject(CLR_RT_DblLinkedLi } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } CLR_RT_HeapBlock_Lock *CLR_RT_ExecutionEngine::FindLockObject(CLR_RT_HeapBlock &object) @@ -2846,7 +2857,7 @@ HRESULT CLR_RT_ExecutionEngine::LockObject( lock = FindLockObject(reference); - if (lock == NULL) + if (lock == nullptr) { NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Lock::CreateInstance(lock, sth->m_owningThread, reference)); } @@ -2980,10 +2991,8 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( // // Casting from [] to System.Array or System.Object is always allowed. // - if (inst.data == g_CLR_RT_WellKnownTypes.Array.data || - inst.data == g_CLR_RT_WellKnownTypes.Object.data || - inst.data == g_CLR_RT_WellKnownTypes.IList.data || - inst.data == g_CLR_RT_WellKnownTypes.ICloneable.data) + if (inst.data == g_CLR_RT_WellKnownTypes.Array.data || inst.data == g_CLR_RT_WellKnownTypes.Object.data || + inst.data == g_CLR_RT_WellKnownTypes.IList.data || inst.data == g_CLR_RT_WellKnownTypes.ICloneable.data) { return true; } @@ -3114,7 +3123,7 @@ HRESULT CLR_RT_ExecutionEngine::CastToType( NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (ref.DataType() == DATATYPE_OBJECT && ref.Dereference() == NULL) + if (ref.DataType() == DATATYPE_OBJECT && ref.Dereference() == nullptr) { ; } @@ -3129,7 +3138,7 @@ HRESULT CLR_RT_ExecutionEngine::CastToType( NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_CAST); } - ref.SetObjectReference(NULL); + ref.SetObjectReference(nullptr); } NANOCLR_NOCLEANUP(); @@ -3232,7 +3241,7 @@ void CLR_RT_ExecutionEngine::InstallBreakpoints(CLR_DBG_Commands::Debugging_Exec { CLR_RT_Memory::Release(m_breakpoints); - m_breakpoints = NULL; + m_breakpoints = nullptr; m_breakpointsNum = 0; } @@ -3300,8 +3309,11 @@ void CLR_RT_ExecutionEngine::StopOnBreakpoint( CLR_PMETADATA ip) { NATIVE_PROFILE_CLR_CORE(); - if (ip == NULL) + + if (ip == nullptr) + { ip = stack->m_IP; + } def.m_depth = stack->m_depth; def.m_md = stack->m_call; @@ -3351,14 +3363,14 @@ void CLR_RT_ExecutionEngine::Breakpoint_System_Event( { CLR_DBG_Commands::Debugging_Execution_BreakpointDef &def = m_breakpoints[pos]; - if (stack != NULL) + if (stack != nullptr) { - _ASSERTE(FIMPLIES(th != NULL, th == stack->m_owningThread)); + _ASSERTE(FIMPLIES(th != nullptr, th == stack->m_owningThread)); th = stack->m_owningThread; } - if (th == NULL || (def.m_pid == th->m_pid) || + if (th == nullptr || (def.m_pid == th->m_pid) || def.m_pid == CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_PID_ANY) { if (def.m_flags & event) @@ -3366,7 +3378,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_System_Event( hit.m_id = def.m_id; hit.m_flags = event; - if (stack != NULL) + if (stack != nullptr) { StopOnBreakpoint(hit, stack, ip); } @@ -3400,8 +3412,8 @@ void CLR_RT_ExecutionEngine::Breakpoint_Assemblies_Loaded() hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_ASSEMBLIES_LOADED, m_currentThread, - NULL, - NULL); + nullptr, + nullptr); } void CLR_RT_ExecutionEngine::Breakpoint_Threads_Prepare(CLR_RT_DblLinkedList &threads) @@ -3494,7 +3506,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_Thread_Terminated(CLR_RT_Thread *th) evt |= CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_EVAL_COMPLETE; } - Breakpoint_System_Event(hit, evt, th, NULL, NULL); + Breakpoint_System_Event(hit, evt, th, nullptr, nullptr); } void CLR_RT_ExecutionEngine::Breakpoint_Thread_Created(CLR_RT_Thread *th) @@ -3503,7 +3515,12 @@ void CLR_RT_ExecutionEngine::Breakpoint_Thread_Created(CLR_RT_Thread *th) CLR_DBG_Commands::Debugging_Execution_BreakpointDef hit; NANOCLR_CLEAR(hit); - Breakpoint_System_Event(hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_THREAD_CREATED, th, NULL, NULL); + Breakpoint_System_Event( + hit, + CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_THREAD_CREATED, + th, + nullptr, + nullptr); } //--// @@ -3566,7 +3583,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Push(CLR_RT_StackFrame *stack hit.m_flags = CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_STEP_IN; hit.m_depthExceptionHandler = reason; - StopOnBreakpoint(hit, stack, NULL); + StopOnBreakpoint(hit, stack, nullptr); } } } @@ -3620,7 +3637,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Pop(CLR_RT_StackFrame *stack, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_DEPTH_STEP_RETURN; } - StopOnBreakpoint(hit, (stepEH) ? stack : caller, NULL); + StopOnBreakpoint(hit, (stepEH) ? stack : caller, nullptr); } } } @@ -3666,7 +3683,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Step(CLR_RT_StackFrame *stack void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Hard(CLR_RT_StackFrame *stack, CLR_PMETADATA ip) { NATIVE_PROFILE_CLR_CORE(); - if (stack->Prev() != NULL && ip != NULL) + if (stack->Prev() != nullptr && ip != nullptr) { CLR_UINT32 IPoffset = (CLR_UINT32)(ip - stack->m_IPstart); @@ -3699,7 +3716,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_StackFrame_Break(CLR_RT_StackFrame *stac CLR_DBG_Commands::Debugging_Execution_BreakpointDef hit; NANOCLR_CLEAR(hit); - Breakpoint_System_Event(hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_BREAK, NULL, stack, NULL); + Breakpoint_System_Event(hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_BREAK, nullptr, stack, nullptr); } //--// @@ -3714,7 +3731,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_Exception(CLR_RT_StackFrame *stack, CLR_ Breakpoint_System_Event( hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_EXCEPTION_THROWN, - NULL, + nullptr, stack, ip); } @@ -3732,8 +3749,8 @@ void CLR_RT_ExecutionEngine::Breakpoint_Exception_Uncaught(CLR_RT_Thread *th) hit, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_EXCEPTION_THROWN, th, - NULL, - NULL); + nullptr, + nullptr); } void CLR_RT_ExecutionEngine::Breakpoint_Exception_Intercepted(CLR_RT_StackFrame *stack) @@ -3746,7 +3763,7 @@ void CLR_RT_ExecutionEngine::Breakpoint_Exception_Intercepted(CLR_RT_StackFrame hit.m_depthExceptionHandler = stack->m_depth; - Breakpoint_System_Event(hit, event, NULL, stack, NULL); + Breakpoint_System_Event(hit, event, nullptr, stack, nullptr); } #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index c6f94a5c6a..3cdade6dc5 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -7,7 +7,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -CLR_RT_ProtectFromGC *CLR_RT_ProtectFromGC::s_first = NULL; +CLR_RT_ProtectFromGC *CLR_RT_ProtectFromGC::s_first = nullptr; void CLR_RT_ProtectFromGC::Initialize(CLR_RT_HeapBlock &ref) { @@ -16,7 +16,7 @@ void CLR_RT_ProtectFromGC::Initialize(CLR_RT_HeapBlock &ref) s_first = this; m_data = (void **)&ref; - m_fpn = NULL; + m_fpn = nullptr; if (ref.IsForcedAlive()) { @@ -85,7 +85,7 @@ void CLR_RT_ProtectFromGC::InvokeAll() #if defined(NANOCLR_TRACE_EARLYCOLLECTION) -CLR_RT_AssertEarlyCollection *CLR_RT_AssertEarlyCollection::s_first = NULL; +CLR_RT_AssertEarlyCollection *CLR_RT_AssertEarlyCollection::s_first = nullptr; CLR_RT_AssertEarlyCollection::CLR_RT_AssertEarlyCollection(CLR_RT_HeapBlock *ptr) { @@ -105,7 +105,7 @@ CLR_RT_AssertEarlyCollection::~CLR_RT_AssertEarlyCollection() void CLR_RT_AssertEarlyCollection::Cancel() { NATIVE_PROFILE_CLR_CORE(); - m_ptr = NULL; + m_ptr = nullptr; } void CLR_RT_AssertEarlyCollection::CheckAll(CLR_RT_HeapBlock *ptr) @@ -206,7 +206,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() { CLR_RT_HeapBlock_Array *arr = (CLR_RT_HeapBlock_Array *)ptr; - if (arr != NULL) + if (arr != nullptr) { dt = arr->m_typeOfElement; @@ -344,7 +344,7 @@ void CLR_RT_GarbageCollector::Mark() // Call global markers. // #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(NULL); + (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(nullptr); #endif CLR_RT_ProtectFromGC::InvokeAll(); @@ -393,12 +393,12 @@ void CLR_RT_GarbageCollector::Mark() CheckSingleBlock_Force(g_CLR_RT_ExecutionEngine.m_currentUICulture); #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(NULL); + (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(nullptr); #endif // NANOCLR_VALIDATE_APPDOMAIN_ISOLATION #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CheckSingleBlock_Force(g_CLR_RT_ExecutionEngine.m_scratchPadArray); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (m_fOutOfStackSpaceForGC) { @@ -455,8 +455,8 @@ void CLR_RT_GarbageCollector::Mark() CLR_RT_Memory::Release(markStackT); } - m_markStackList = NULL; - m_markStack = NULL; + m_markStackList = nullptr; + m_markStack = nullptr; #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(appDomainSav); @@ -492,7 +492,7 @@ void CLR_RT_GarbageCollector::MarkWeak() } else { - weak->m_targetDirect = NULL; + weak->m_targetDirect = nullptr; } } } @@ -532,7 +532,7 @@ void CLR_RT_GarbageCollector::Sweep() // // Found a dead delegate, kill it!! // - dlgs->SetObjectReference(NULL); + dlgs->SetObjectReference(nullptr); continue; } @@ -601,7 +601,7 @@ void CLR_RT_GarbageCollector::CheckMemoryPressure() weak, g_CLR_RT_ExecutionEngine.m_weakReferences) { - if (weak->m_targetSerialized && weak->m_targetDirect == NULL) + if (weak->m_targetSerialized && weak->m_targetDirect == nullptr) { #if !defined(BUILD_RTM) CLR_RT_ReflectionDef_Index val; @@ -614,7 +614,7 @@ void CLR_RT_GarbageCollector::CheckMemoryPressure() val.InitializeFromHash(weak->m_identity.m_selectorHash); - if (inst.InitializeFromReflection(val, NULL)) + if (inst.InitializeFromReflection(val, nullptr)) { g_CLR_RT_TypeSystem.BuildTypeName(inst, szBuffer, iBuffer); rgBuffer[MAXSTRLEN(rgBuffer)] = 0; @@ -669,7 +669,7 @@ void CLR_RT_GarbageCollector::Assembly_Mark() { NATIVE_PROFILE_CLR_CORE(); #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(NULL); + (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(nullptr); #endif NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 7ecd94549c..c8daa54404 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -13,11 +13,11 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) g_CLR_PRF_Profiler.RecordHeapCompactionBegin(); #endif - + #if defined(NANOCLR_TRACE_MEMORY_STATS) - if(s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) + if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf( "GC: performing heap compaction\r\n" ); + CLR_Debug::Printf("GC: performing heap compaction\r\n"); } #endif @@ -37,9 +37,9 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() #endif #if defined(NANOCLR_TRACE_MEMORY_STATS) - if(s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) + if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf( "GC: heap compaction completed\r\n" ); + CLR_Debug::Printf("GC: heap compaction completed\r\n"); } #endif @@ -56,151 +56,159 @@ void CLR_RT_GarbageCollector::Heap_Compact() //--// - RelocationRegion relocHelper[ c_minimumSpaceForCompact ]; - const size_t relocMax = ARRAYSIZE(relocHelper); + RelocationRegion relocHelper[c_minimumSpaceForCompact]; + const size_t relocMax = ARRAYSIZE(relocHelper); - Heap_Relocate_Prepare( relocHelper, relocMax ); + Heap_Relocate_Prepare(relocHelper, relocMax); - RelocationRegion* relocBlocks = relocHelper; - RelocationRegion* relocCurrent = relocBlocks; + RelocationRegion *relocBlocks = relocHelper; + RelocationRegion *relocCurrent = relocBlocks; //--// TestPointers_PopulateOld(); - - CLR_RT_HeapCluster* freeRegion_hc = NULL;; - CLR_RT_HeapBlock_Node* freeRegion = NULL; + CLR_RT_HeapCluster *freeRegion_hc = nullptr; + ; + CLR_RT_HeapBlock_Node *freeRegion = nullptr; - CLR_RT_HeapCluster* currentSource_hc = (CLR_RT_HeapCluster*)g_CLR_RT_ExecutionEngine.m_heap.FirstNode(); - while(currentSource_hc->Next()) + CLR_RT_HeapCluster *currentSource_hc = (CLR_RT_HeapCluster *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode(); + while (currentSource_hc->Next()) { - CLR_RT_HeapBlock_Node* currentSource = currentSource_hc->m_payloadStart; - CLR_RT_HeapBlock_Node* currentSource_end = currentSource_hc->m_payloadEnd; + CLR_RT_HeapBlock_Node *currentSource = currentSource_hc->m_payloadStart; + CLR_RT_HeapBlock_Node *currentSource_end = currentSource_hc->m_payloadEnd; - if(!freeRegion) + if (!freeRegion) { // // Move to the next first free region. // - freeRegion_hc = (CLR_RT_HeapCluster*)g_CLR_RT_ExecutionEngine.m_heap.FirstNode(); - while(true) + freeRegion_hc = (CLR_RT_HeapCluster *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode(); + while (true) { - CLR_RT_HeapCluster* freeRegion_hcNext = (CLR_RT_HeapCluster*)freeRegion_hc->Next(); if(!freeRegion_hcNext) break; + CLR_RT_HeapCluster *freeRegion_hcNext = (CLR_RT_HeapCluster *)freeRegion_hc->Next(); + if (!freeRegion_hcNext) + break; - freeRegion = freeRegion_hc->m_freeList.FirstNode(); if(freeRegion->Next()) break; + freeRegion = freeRegion_hc->m_freeList.FirstNode(); + if (freeRegion->Next()) + break; - freeRegion = NULL; + freeRegion = nullptr; freeRegion_hc = freeRegion_hcNext; } - if(!freeRegion) break; + if (!freeRegion) + break; } - while(true) + while (true) { // // We can only move backward. // - if(currentSource < freeRegion) + if (currentSource < freeRegion) { - currentSource_hc = freeRegion_hc; - currentSource = freeRegion; + currentSource_hc = freeRegion_hc; + currentSource = freeRegion; currentSource_end = freeRegion_hc->m_payloadEnd; } - while(currentSource < currentSource_end && currentSource->IsFlagSet( CLR_RT_HeapBlock::HB_Unmovable )) + while (currentSource < currentSource_end && currentSource->IsFlagSet(CLR_RT_HeapBlock::HB_Unmovable)) { currentSource += currentSource->DataSize(); } - if(currentSource == currentSource_end) break; + if (currentSource == currentSource_end) + break; - ////////////////////////////////////////////////////// - // - // At this point, we have at least ONE movable block. - // - ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// + // + // At this point, we have at least ONE movable block. + // + ////////////////////////////////////////////////////// #if NANOCLR_VALIDATE_HEAP >= NANOCLR_VALIDATE_HEAP_4_CompactionPlus - if(IsBlockInFreeList( g_CLR_RT_ExecutionEngine.m_heap, freeRegion, true ) == false) + if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, freeRegion, true) == false) { - CLR_Debug::Printf( "'freeRegion' is not in a free list!! %08x\r\n", freeRegion ); + CLR_Debug::Printf("'freeRegion' is not in a free list!! %08x\r\n", freeRegion); NANOCLR_DEBUG_STOP(); } - if(IsBlockInFreeList( g_CLR_RT_ExecutionEngine.m_heap, currentSource, false )) + if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, currentSource, false)) { - CLR_Debug::Printf( "'currentSource' is in a free list!! %08x\r\n", currentSource ); + CLR_Debug::Printf("'currentSource' is in a free list!! %08x\r\n", currentSource); NANOCLR_DEBUG_STOP(); } #endif - if(m_relocCount >= relocMax) + if (m_relocCount >= relocMax) { - ValidateHeap( g_CLR_RT_ExecutionEngine.m_heap ); + ValidateHeap(g_CLR_RT_ExecutionEngine.m_heap); Heap_Relocate(); - ValidateHeap( g_CLR_RT_ExecutionEngine.m_heap ); + ValidateHeap(g_CLR_RT_ExecutionEngine.m_heap); - relocBlocks = m_relocBlocks; + relocBlocks = m_relocBlocks; relocCurrent = relocBlocks; TestPointers_PopulateOld(); } { - CLR_UINT32 move = 0; + CLR_UINT32 move = 0; CLR_UINT32 freeRegion_Size = freeRegion->DataSize(); - bool fSlide; + bool fSlide; - relocCurrent->m_destination = (CLR_UINT8*)freeRegion; - relocCurrent->m_start = (CLR_UINT8*)currentSource; - relocCurrent->m_offset = (CLR_UINT32)(relocCurrent->m_destination - relocCurrent->m_start); + relocCurrent->m_destination = (CLR_UINT8 *)freeRegion; + relocCurrent->m_start = (CLR_UINT8 *)currentSource; + relocCurrent->m_offset = (CLR_UINT32)(relocCurrent->m_destination - relocCurrent->m_start); - // // Are the free block and the last moved block adjacent? // - if(currentSource == freeRegion + freeRegion_Size) + if (currentSource == freeRegion + freeRegion_Size) { - while(currentSource < currentSource_end && currentSource->IsFlagSet( CLR_RT_HeapBlock::HB_Unmovable ) == false) + while (currentSource < currentSource_end && + currentSource->IsFlagSet(CLR_RT_HeapBlock::HB_Unmovable) == false) { CLR_UINT32 len = currentSource->DataSize(); currentSource += len; - move += len; + move += len; } fSlide = true; } else { - while(freeRegion_Size && currentSource < currentSource_end && currentSource->IsFlagSet( CLR_RT_HeapBlock::HB_Unmovable ) == false) + while (freeRegion_Size && currentSource < currentSource_end && + currentSource->IsFlagSet(CLR_RT_HeapBlock::HB_Unmovable) == false) { CLR_UINT32 len = currentSource->DataSize(); - if(freeRegion_Size < len) + if (freeRegion_Size < len) { break; } freeRegion_Size -= len; - currentSource += len; - move += len; + currentSource += len; + move += len; } fSlide = false; } - if(move) + if (move) { // // Skip forward to the next movable block. // - while(currentSource < currentSource_end && currentSource->IsFlagSet( CLR_RT_HeapBlock::HB_Unmovable )) + while (currentSource < currentSource_end && + currentSource->IsFlagSet(CLR_RT_HeapBlock::HB_Unmovable)) { currentSource += currentSource->DataSize(); } @@ -215,37 +223,35 @@ void CLR_RT_GarbageCollector::Heap_Compact() // Remove the old free block, copy the data, recreate the new free block. // Merge with the following one if they are adjacent now. // - CLR_RT_HeapBlock_Node* freeRegionNext = freeRegion->Next(); + CLR_RT_HeapBlock_Node *freeRegionNext = freeRegion->Next(); freeRegion->Unlink(); - - memmove( relocCurrent->m_destination, relocCurrent->m_start, moveBytes ); - if(freeRegion_Size) - { + memmove(relocCurrent->m_destination, relocCurrent->m_start, moveBytes); - freeRegion = freeRegion_hc->InsertInOrder( freeRegion + move, freeRegion_Size ); + if (freeRegion_Size) + { + freeRegion = freeRegion_hc->InsertInOrder(freeRegion + move, freeRegion_Size); } else { freeRegion = freeRegionNext; - } - if(fSlide == false) + if (fSlide == false) { - CLR_RT_HeapBlock_Node* dst = currentSource_hc->InsertInOrder( (CLR_RT_HeapBlock_Node*)relocCurrent->m_start, move ); + CLR_RT_HeapBlock_Node *dst = + currentSource_hc->InsertInOrder((CLR_RT_HeapBlock_Node *)relocCurrent->m_start, move); - if(dst < freeRegion && freeRegion < (dst + dst->DataSize())) + if (dst < freeRegion && freeRegion < (dst + dst->DataSize())) { freeRegion = dst; } - } - CLR_RT_GarbageCollector::ValidateCluster( currentSource_hc ); - CLR_RT_GarbageCollector::ValidateCluster( freeRegion_hc ); + CLR_RT_GarbageCollector::ValidateCluster(currentSource_hc); + CLR_RT_GarbageCollector::ValidateCluster(freeRegion_hc); relocCurrent++; m_relocCount++; @@ -253,64 +259,67 @@ void CLR_RT_GarbageCollector::Heap_Compact() else { freeRegion = freeRegion->Next(); - } - if(freeRegion->Next() == NULL) + if (freeRegion->Next() == nullptr) { - freeRegion = NULL; - freeRegion_hc = (CLR_RT_HeapCluster*)freeRegion_hc->Next(); - while(true) + freeRegion = nullptr; + freeRegion_hc = (CLR_RT_HeapCluster *)freeRegion_hc->Next(); + while (true) { - CLR_RT_HeapCluster* freeRegion_hcNext = (CLR_RT_HeapCluster*)freeRegion_hc->Next(); if(!freeRegion_hcNext) break; + CLR_RT_HeapCluster *freeRegion_hcNext = (CLR_RT_HeapCluster *)freeRegion_hc->Next(); + if (!freeRegion_hcNext) + break; - freeRegion = freeRegion_hc->m_freeList.FirstNode(); if(freeRegion->Next()) break; + freeRegion = freeRegion_hc->m_freeList.FirstNode(); + if (freeRegion->Next()) + break; - freeRegion = NULL; + freeRegion = nullptr; freeRegion_hc = freeRegion_hcNext; } - if(!freeRegion) break; - + if (!freeRegion) + break; } } } - currentSource_hc = (CLR_RT_HeapCluster*)currentSource_hc->Next(); + currentSource_hc = (CLR_RT_HeapCluster *)currentSource_hc->Next(); } - if(m_relocCount) + if (m_relocCount) { - ValidateHeap( g_CLR_RT_ExecutionEngine.m_heap ); + ValidateHeap(g_CLR_RT_ExecutionEngine.m_heap); Heap_Relocate(); - ValidateHeap( g_CLR_RT_ExecutionEngine.m_heap ); + ValidateHeap(g_CLR_RT_ExecutionEngine.m_heap); } } -void CLR_RT_GarbageCollector::Heap_Relocate_Prepare( RelocationRegion* blocks, size_t total ) +void CLR_RT_GarbageCollector::Heap_Relocate_Prepare(RelocationRegion *blocks, size_t total) { NATIVE_PROFILE_CLR_CORE(); m_relocBlocks = blocks; - m_relocTotal = total; - m_relocCount = 0; + m_relocTotal = total; + m_relocCount = 0; } -void CLR_RT_GarbageCollector::Heap_Relocate_AddBlock( CLR_UINT8* dst, CLR_UINT8* src, CLR_UINT32 length ) +void CLR_RT_GarbageCollector::Heap_Relocate_AddBlock(CLR_UINT8 *dst, CLR_UINT8 *src, CLR_UINT32 length) { NATIVE_PROFILE_CLR_CORE(); - RelocationRegion* reloc = m_relocBlocks; - size_t count = m_relocCount; + RelocationRegion *reloc = m_relocBlocks; + size_t count = m_relocCount; - while(count) + while (count) { - if(reloc->m_start > src) + if (reloc->m_start > src) { // // Insert region, so they are sorted by start address. // - memmove( &reloc[ 1 ], &reloc[ 0 ], count * sizeof(*reloc) ); + memmove(&reloc[1], &reloc[0], count * sizeof(*reloc)); break; } @@ -318,12 +327,12 @@ void CLR_RT_GarbageCollector::Heap_Relocate_AddBlock( CLR_UINT8* dst, CLR_UINT8* count--; } - reloc->m_start = src; - reloc->m_end = &src[ length ]; - reloc->m_destination = dst; - reloc->m_offset = (CLR_UINT32)(dst - src); + reloc->m_start = src; + reloc->m_end = &src[length]; + reloc->m_destination = dst; + reloc->m_offset = (CLR_UINT32)(dst - src); - if(++m_relocCount == m_relocTotal) + if (++m_relocCount == m_relocTotal) { Heap_Relocate(); } @@ -332,17 +341,19 @@ void CLR_RT_GarbageCollector::Heap_Relocate_AddBlock( CLR_UINT8* dst, CLR_UINT8* void CLR_RT_GarbageCollector::Heap_Relocate() { NATIVE_PROFILE_CLR_CORE(); - if(m_relocCount) + if (m_relocCount) { - RelocationRegion* relocBlocks = m_relocBlocks; + RelocationRegion *relocBlocks = m_relocBlocks; - CLR_UINT8* relocMinimum = relocBlocks->m_start; - CLR_UINT8* relocMaximum = relocBlocks->m_end; + CLR_UINT8 *relocMinimum = relocBlocks->m_start; + CLR_UINT8 *relocMaximum = relocBlocks->m_end; - for(size_t i=0; i relocBlocks->m_start) relocMinimum = relocBlocks->m_start; - if(relocMaximum < relocBlocks->m_end ) relocMaximum = relocBlocks->m_end; + if (relocMinimum > relocBlocks->m_start) + relocMinimum = relocBlocks->m_start; + if (relocMaximum < relocBlocks->m_end) + relocMaximum = relocBlocks->m_end; } m_relocMinimum = relocMinimum; @@ -350,7 +361,7 @@ void CLR_RT_GarbageCollector::Heap_Relocate() TestPointers_Remap(); - Heap_Relocate_Pass( NULL ); + Heap_Relocate_Pass(nullptr); #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) g_CLR_PRF_Profiler.TrackObjectRelocation(); @@ -364,23 +375,22 @@ void CLR_RT_GarbageCollector::Heap_Relocate() } } -void CLR_RT_GarbageCollector::Heap_Relocate_Pass( RelocateFtn ftn ) +void CLR_RT_GarbageCollector::Heap_Relocate_Pass(RelocateFtn ftn) { NATIVE_PROFILE_CLR_CORE(); - #if NANOCLR_VALIDATE_HEAP > NANOCLR_VALIDATE_HEAP_0_None +#if NANOCLR_VALIDATE_HEAP > NANOCLR_VALIDATE_HEAP_0_None m_relocWorker = ftn; - #else +#else (void)ftn; - #endif +#endif - NANOCLR_FOREACH_NODE(CLR_RT_HeapCluster,hc,g_CLR_RT_ExecutionEngine.m_heap) + NANOCLR_FOREACH_NODE(CLR_RT_HeapCluster, hc, g_CLR_RT_ExecutionEngine.m_heap) { - CLR_RT_HeapBlock_Node* ptr = hc->m_payloadStart; - CLR_RT_HeapBlock_Node* end = hc->m_payloadEnd; + CLR_RT_HeapBlock_Node *ptr = hc->m_payloadStart; + CLR_RT_HeapBlock_Node *end = hc->m_payloadEnd; - - while(ptr < end) + while (ptr < end) { CLR_RT_HEAPBLOCK_RELOCATE(ptr); @@ -394,10 +404,10 @@ void CLR_RT_GarbageCollector::Heap_Relocate_Pass( RelocateFtn ftn ) //--// -void CLR_RT_GarbageCollector::Heap_Relocate( CLR_RT_HeapBlock* lst, CLR_UINT32 len ) +void CLR_RT_GarbageCollector::Heap_Relocate(CLR_RT_HeapBlock *lst, CLR_UINT32 len) { NATIVE_PROFILE_CLR_CORE(); - while(len--) + while (len--) { CLR_RT_HEAPBLOCK_RELOCATE(lst); @@ -405,41 +415,41 @@ void CLR_RT_GarbageCollector::Heap_Relocate( CLR_RT_HeapBlock* lst, CLR_UINT32 l } } -void CLR_RT_GarbageCollector::Heap_Relocate( void** ref ) +void CLR_RT_GarbageCollector::Heap_Relocate(void **ref) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8* dst = (CLR_UINT8*)*ref; + CLR_UINT8 *dst = (CLR_UINT8 *)*ref; #if NANOCLR_VALIDATE_HEAP > NANOCLR_VALIDATE_HEAP_0_None - if(g_CLR_RT_GarbageCollector.m_relocWorker) + if (g_CLR_RT_GarbageCollector.m_relocWorker) { - g_CLR_RT_GarbageCollector.m_relocWorker( ref ); + g_CLR_RT_GarbageCollector.m_relocWorker(ref); } else #endif { - if(dst >= g_CLR_RT_GarbageCollector.m_relocMinimum && dst < g_CLR_RT_GarbageCollector.m_relocMaximum) + if (dst >= g_CLR_RT_GarbageCollector.m_relocMinimum && dst < g_CLR_RT_GarbageCollector.m_relocMaximum) { - RelocationRegion* relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; - size_t left = 0; - size_t right = g_CLR_RT_GarbageCollector.m_relocCount; + RelocationRegion *relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; + size_t left = 0; + size_t right = g_CLR_RT_GarbageCollector.m_relocCount; - while(left < right) + while (left < right) { - size_t center = (left + right) / 2; - RelocationRegion& relocCurrent = relocBlocks[ center ]; + size_t center = (left + right) / 2; + RelocationRegion &relocCurrent = relocBlocks[center]; - if(dst < relocCurrent.m_start) + if (dst < relocCurrent.m_start) { right = center; } - else if(dst >= relocCurrent.m_end) + else if (dst >= relocCurrent.m_end) { - left = center+1; + left = center + 1; } else { - *ref = (void*)(dst + relocCurrent.m_offset); + *ref = (void *)(dst + relocCurrent.m_offset); return; } @@ -450,18 +460,17 @@ void CLR_RT_GarbageCollector::Heap_Relocate( void** ref ) #if NANOCLR_VALIDATE_HEAP >= NANOCLR_VALIDATE_HEAP_3_Compaction -bool CLR_RT_GarbageCollector::Relocation_JustCheck( void** ref ) +bool CLR_RT_GarbageCollector::Relocation_JustCheck(void **ref) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8* dst = (CLR_UINT8*)*ref; + CLR_UINT8 *dst = (CLR_UINT8 *)*ref; - if(dst) + if (dst) { - ValidateBlockNotInFreeList( g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node*)dst ); + ValidateBlockNotInFreeList(g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node *)dst); } return true; } #endif - diff --git a/src/CLR/Core/GarbageCollector_ComputeReachabilityGraph.cpp b/src/CLR/Core/GarbageCollector_ComputeReachabilityGraph.cpp index ad76c24d69..b67795c383 100644 --- a/src/CLR/Core/GarbageCollector_ComputeReachabilityGraph.cpp +++ b/src/CLR/Core/GarbageCollector_ComputeReachabilityGraph.cpp @@ -7,71 +7,78 @@ //--// -void CLR_RT_GarbageCollector::MarkStack::Initialize( MarkStackElement* ptr, size_t num ) +void CLR_RT_GarbageCollector::MarkStack::Initialize(MarkStackElement *ptr, size_t num) { NATIVE_PROFILE_CLR_CORE(); GenericNode_Initialize(); - m_last = &ptr[ num-1 ]; - m_top = ptr; + m_last = &ptr[num - 1]; + m_top = ptr; // // Empty element to act a sentinel. // - ptr->ptr = NULL; + ptr->ptr = nullptr; ptr->num = 0; #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - ptr->appDomain = NULL; + ptr->appDomain = nullptr; #endif } //--// -bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForSingleBlock( CLR_RT_HeapBlock** ptr ) +bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForSingleBlock(CLR_RT_HeapBlock **ptr) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock* obj = *ptr; if(obj == NULL || obj->IsAlive()) return true; + CLR_RT_HeapBlock *obj = *ptr; + if (obj == nullptr || obj->IsAlive()) + return true; - return ComputeReachabilityGraphForMultipleBlocks( obj, 1 ); + return ComputeReachabilityGraphForMultipleBlocks(obj, 1); } - -bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_HeapBlock* lst, CLR_UINT32 num ) +bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks(CLR_RT_HeapBlock *lst, CLR_UINT32 num) { NATIVE_PROFILE_CLR_CORE(); - MarkStack * stackList; - MarkStackElement* stack; - MarkStackElement* stackLast; + MarkStack *stackList; + MarkStackElement *stack; + MarkStackElement *stackLast; -#define COMPUTEREACHABILITY_LOADSTATE() stackLast = g_CLR_RT_GarbageCollector.m_markStack->m_last; stack = g_CLR_RT_GarbageCollector.m_markStack->m_top; stackList = g_CLR_RT_GarbageCollector.m_markStack; -#define COMPUTEREACHABILITY_SAVESTATE() g_CLR_RT_GarbageCollector.m_markStack->m_last = stackLast; g_CLR_RT_GarbageCollector.m_markStack->m_top = stack; g_CLR_RT_GarbageCollector.m_markStack = stackList; +#define COMPUTEREACHABILITY_LOADSTATE() \ + stackLast = g_CLR_RT_GarbageCollector.m_markStack->m_last; \ + stack = g_CLR_RT_GarbageCollector.m_markStack->m_top; \ + stackList = g_CLR_RT_GarbageCollector.m_markStack; +#define COMPUTEREACHABILITY_SAVESTATE() \ + g_CLR_RT_GarbageCollector.m_markStack->m_last = stackLast; \ + g_CLR_RT_GarbageCollector.m_markStack->m_top = stack; \ + g_CLR_RT_GarbageCollector.m_markStack = stackList; COMPUTEREACHABILITY_LOADSTATE(); { - CLR_RT_HeapBlock* sub = NULL; + CLR_RT_HeapBlock *sub = nullptr; - while(true) + while (true) { - CLR_RT_HeapBlock* ptr = lst; + CLR_RT_HeapBlock *ptr = lst; - if(num == 0) + if (num == 0) { - if(stack->num == 0) + if (stack->num == 0) { - MarkStack* stackNext = (MarkStack*)stackList->Prev(); + MarkStack *stackNext = (MarkStack *)stackList->Prev(); - //finished with this MarkStack - if(stackNext->Prev() == NULL) + // finished with this MarkStack + if (stackNext->Prev() == nullptr) { - //finished marking + // finished marking break; } else { COMPUTEREACHABILITY_SAVESTATE(); - g_CLR_RT_GarbageCollector.m_markStack = stackNext; + g_CLR_RT_GarbageCollector.m_markStack = stackNext; COMPUTEREACHABILITY_LOADSTATE(); } } @@ -81,51 +88,54 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ stack->ptr++; stack->num--; - if(stack->num == 0) + if (stack->num == 0) { stack--; -#if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain( stack->appDomain ); +#if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) + (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(stack->appDomain); #endif } } - else if(num > 1) + else if (num > 1) { - if(stack == stackLast) + if (stack == stackLast) { - MarkStack* stackNext = (MarkStack*)stackList->Next(); + MarkStack *stackNext = (MarkStack *)stackList->Next(); - if(stackNext->Next() != NULL) - { + if (stackNext->Next() != nullptr) + { COMPUTEREACHABILITY_SAVESTATE(); g_CLR_RT_GarbageCollector.m_markStack = stackNext; COMPUTEREACHABILITY_LOADSTATE(); } else - { - //try to allocate another stack list... - stackNext = NULL; + { + // try to allocate another stack list... + stackNext = nullptr; - //If there was no space for GC last time, don't bother trying to allocate again - if(!g_CLR_RT_GarbageCollector.m_fOutOfStackSpaceForGC) + // If there was no space for GC last time, don't bother trying to allocate again + if (!g_CLR_RT_GarbageCollector.m_fOutOfStackSpaceForGC) { - for(int cElement = g_CLR_RT_GarbageCollector.c_minimumSpaceForGC; cElement >= 1; cElement /= 2) + for (int cElement = g_CLR_RT_GarbageCollector.c_minimumSpaceForGC; cElement >= 1; + cElement /= 2) { CLR_UINT32 size = sizeof(MarkStack) + sizeof(MarkStackElement) * cElement; - stackNext = (MarkStack*)CLR_RT_Memory::Allocate( size, CLR_RT_HeapBlock::HB_SpecialGCAllocation ); + stackNext = (MarkStack *)CLR_RT_Memory::Allocate( + size, + CLR_RT_HeapBlock::HB_SpecialGCAllocation); - if(stackNext) + if (stackNext) { COMPUTEREACHABILITY_SAVESTATE(); - stackNext->Initialize( (MarkStackElement*)(&stackNext[ 1 ]), (size_t)cElement ); + stackNext->Initialize((MarkStackElement *)(&stackNext[1]), (size_t)cElement); + + g_CLR_RT_GarbageCollector.m_markStackList->LinkAtBack(stackNext); - g_CLR_RT_GarbageCollector.m_markStackList->LinkAtBack( stackNext ); - g_CLR_RT_GarbageCollector.m_markStack = stackNext; - + COMPUTEREACHABILITY_LOADSTATE(); break; @@ -133,15 +143,15 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ } } - if(stackNext == NULL) + if (stackNext == nullptr) { - //Out of stack support space - //Set the failure flag and continue, ignoring lst, num - //The mark will complete later via MarkSlow + // Out of stack support space + // Set the failure flag and continue, ignoring lst, num + // The mark will complete later via MarkSlow g_CLR_RT_GarbageCollector.m_fOutOfStackSpaceForGC = true; - - lst = NULL; + + lst = nullptr; num = 0; continue; } @@ -150,71 +160,70 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ stack++; - stack->ptr = lst+1; - stack->num = num-1; + stack->ptr = lst + 1; + stack->num = num - 1; -#if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) +#if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) stack->appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); -#endif +#endif } - { - lst = NULL; + lst = nullptr; num = 0; - - CLR_RT_HeapBlock::Debug_CheckPointer( ptr ); + + CLR_RT_HeapBlock::Debug_CheckPointer(ptr); ptr->MarkAlive(); - switch(ptr->DataType()) + switch (ptr->DataType()) { case DATATYPE_OBJECT: case DATATYPE_BYREF: sub = ptr->Dereference(); break; - //--// + //--// - #if defined(NANOCLR_APPDOMAINS) +#if defined(NANOCLR_APPDOMAINS) case DATATYPE_TRANSPARENT_PROXY: - { - CLR_RT_AppDomain* appDomain = ptr->TransparentProxyAppDomain(); + { + CLR_RT_AppDomain *appDomain = ptr->TransparentProxyAppDomain(); - if(appDomain) + if (appDomain) + { + if (!appDomain->IsLoaded()) { - if(!appDomain->IsLoaded()) - { - //If the AppDomain is unloading, we no longer need to keep the reference around - ptr->SetTransparentProxyReference( NULL, NULL ); - } - else - { - #if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) - (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain( ptr->TransparentProxyAppDomain() ); - #endif - sub = ptr->TransparentProxyDereference(); - } - } + // If the AppDomain is unloading, we no longer need to keep the reference around + ptr->SetTransparentProxyReference(nullptr, nullptr); + } + else + { +#if defined(NANOCLR_VALIDATE_APPDOMAIN_ISOLATION) + (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(ptr->TransparentProxyAppDomain()); +#endif + sub = ptr->TransparentProxyDereference(); + } } - break; - #endif + } + break; +#endif - //--// + //--// case DATATYPE_ARRAY_BYREF: - sub = (CLR_RT_HeapBlock*)ptr->Array(); + sub = (CLR_RT_HeapBlock *)ptr->Array(); break; - //--// + //--// case DATATYPE_CLASS: case DATATYPE_VALUETYPE: // // This is the real object, mark all its fields. // - lst = ptr + 1; + lst = ptr + 1; num = ptr->DataSize() - 1; break; @@ -223,12 +232,12 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ // If the array is full of reference types, mark each of them. // { - CLR_RT_HeapBlock_Array* array = (CLR_RT_HeapBlock_Array*)ptr; + CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; - if(array->m_fReference) + if (array->m_fReference) { - lst = (CLR_RT_HeapBlock*)array->GetFirstElement(); - num = array->m_numOfElements; + lst = (CLR_RT_HeapBlock *)array->GetFirstElement(); + num = array->m_numOfElements; } } break; @@ -237,56 +246,55 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ break; case DATATYPE_DELEGATE_HEAD: - { - CLR_RT_HeapBlock_Delegate* dlg = (CLR_RT_HeapBlock_Delegate*)ptr; + { + CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; - lst = &dlg->m_object; - num = 1; - } - break; + lst = &dlg->m_object; + num = 1; + } + break; case DATATYPE_BINARY_BLOB_HEAD: - { - CLR_RT_HeapBlock_BinaryBlob* blob = (CLR_RT_HeapBlock_BinaryBlob*)ptr; - - _ASSERTE(blob->BinaryBlobMarkingHandler() == NULL); - } - break; + { + CLR_RT_HeapBlock_BinaryBlob *blob = (CLR_RT_HeapBlock_BinaryBlob *)ptr; + + _ASSERTE(blob->BinaryBlobMarkingHandler() == nullptr); + } + break; case DATATYPE_DELEGATELIST_HEAD: - { - CLR_RT_HeapBlock_Delegate_List* dlgList = (CLR_RT_HeapBlock_Delegate_List*)ptr; + { + CLR_RT_HeapBlock_Delegate_List *dlgList = (CLR_RT_HeapBlock_Delegate_List *)ptr; - if(dlgList->m_flags & CLR_RT_HeapBlock_Delegate_List::c_Weak) - { - dlgList->ClearData(); + if (dlgList->m_flags & CLR_RT_HeapBlock_Delegate_List::c_Weak) + { + dlgList->ClearData(); - g_CLR_RT_GarbageCollector.m_weakDelegates_Reachable.LinkAtBack( dlgList ); - } - else - { - lst = dlgList->GetDelegates(); - num = dlgList->m_length; - } + g_CLR_RT_GarbageCollector.m_weakDelegates_Reachable.LinkAtBack(dlgList); } - break; + else + { + lst = dlgList->GetDelegates(); + num = dlgList->m_length; + } + } + break; default: // the remaining data types aren't to be handled - break; + break; } - - if(sub) + + if (sub) { - if(sub->IsAlive() == false) + if (sub->IsAlive() == false) { lst = sub; num = 1; } - sub = NULL; + sub = nullptr; } - } } } @@ -297,4 +305,3 @@ bool CLR_RT_GarbageCollector::ComputeReachabilityGraphForMultipleBlocks( CLR_RT_ } //--// - diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 426bb0fc21..b4ba7f327c 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -112,7 +112,7 @@ bool CLR_RT_HeapBlock::InitObject() if (ptr->InitObject() == false) return false; - obj->SetObjectReference(NULL); + obj->SetObjectReference(nullptr); } return true; @@ -425,8 +425,8 @@ bool CLR_RT_Thread::FindEhBlock( { NATIVE_PROFILE_CLR_CORE(); CLR_RT_Assembly *assm = stack->m_call.assembly; - CLR_RT_ExceptionHandler *ptrEhExt = NULL; - const CLR_RECORD_EH *ptrEh = NULL; + CLR_RT_ExceptionHandler *ptrEhExt = nullptr; + const CLR_RECORD_EH *ptrEh = nullptr; CLR_UINT32 numEh = 0; // FROM is always non-NULL and indicates the current IP @@ -443,7 +443,7 @@ bool CLR_RT_Thread::FindEhBlock( if (!onlyFinallys || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) { CLR_Debug::Printf("Unwinding at "); - CLR_RT_DUMP::METHOD(stack->m_call, NULL); + CLR_RT_DUMP::METHOD(stack->m_call, nullptr); CLR_Debug::Printf(" [IP: %04x - %d]\r\n", (size_t)stack->m_IP, (stack->m_IP - stack->m_IPstart)); } } @@ -476,7 +476,7 @@ bool CLR_RT_Thread::FindEhBlock( return false; } - ptrEhExt = NULL; + ptrEhExt = nullptr; } break; @@ -499,7 +499,7 @@ bool CLR_RT_Thread::FindEhBlock( #if defined(NANOCLR_TRACE_EXCEPTIONS) if (s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Annoying) { - if (to == NULL || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) + if (to == nullptr || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) { CLR_Debug::Printf( "Checking EH: %04X-%04X => %04X\r\n", @@ -591,7 +591,7 @@ bool CLR_RT_Thread::FindEhBlock( #if defined(NANOCLR_TRACE_EXCEPTIONS) if (s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Annoying) { - if (to == NULL || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) + if (to == nullptr || s_CLR_RT_fTrace_Exceptions >= c_CLR_RT_Trace_Obnoxious) { CLR_Debug::Printf("No match\r\n"); } @@ -616,7 +616,7 @@ HRESULT CLR_RT_Thread::Execute() g_CLR_RT_ExecutionEngine.m_currentThread = this; - if (m_currentException.Dereference() != NULL) + if (m_currentException.Dereference() != nullptr) { hr = CLR_E_PROCESS_EXCEPTION; } @@ -658,7 +658,7 @@ HRESULT CLR_RT_Thread::Execute() default: // Allocate a new exception. stack = CurrentFrame(); - if (stack->Prev() != NULL) + if (stack->Prev() != nullptr) { #if defined(NANOCLR_TRACE_EXCEPTIONS) && defined(VIRTUAL_DEVICE) for (int i = 0; i < ARRAYSIZE(s_track); i++) @@ -707,7 +707,7 @@ HRESULT CLR_RT_Thread::Execute() break; #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) - if (m_currentException.Dereference() != NULL) + if (m_currentException.Dereference() != nullptr) { break; } @@ -723,7 +723,7 @@ HRESULT CLR_RT_Thread::Execute() g_CLR_RT_ExecutionEngine.m_currentThread = currentThreadSav; - ::Events_SetBoolTimer(NULL, 0); + ::Events_SetBoolTimer(nullptr, 0); NANOCLR_CLEANUP_END(); } @@ -744,7 +744,7 @@ HRESULT CLR_RT_Thread::Execute_Inner() } #endif - if (stack->Prev() == NULL) + if (stack->Prev() == nullptr) { m_status = CLR_RT_Thread::TH_S_Terminated; @@ -849,7 +849,7 @@ HRESULT CLR_RT_Thread::Execute_Inner() } // check for exception injected by native code - if (m_currentException.Dereference() != NULL) + if (m_currentException.Dereference() != nullptr) { hr = CLR_E_PROCESS_EXCEPTION; } @@ -857,7 +857,7 @@ HRESULT CLR_RT_Thread::Execute_Inner() // The inner loop may push or pop more stack frames stack = CurrentFrame(); - if (stack->Prev() == NULL) + if (stack->Prev() == nullptr) { m_status = CLR_RT_Thread::TH_S_Terminated; @@ -964,7 +964,7 @@ HRESULT CLR_RT_Thread::Execute_DelegateInvoke(CLR_RT_StackFrame &stackArg) dlg = array[stack->m_customState++].DereferenceDelegate(); - if (dlg == NULL || dlg->DataType() != DATATYPE_DELEGATE_HEAD) + if (dlg == nullptr || dlg->DataType() != DATATYPE_DELEGATE_HEAD) continue; break; @@ -982,7 +982,7 @@ HRESULT CLR_RT_Thread::Execute_DelegateInvoke(CLR_RT_StackFrame &stackArg) NANOCLR_CHECK_HRESULT(stack->MakeCall( inst, - fStaticMethod ? NULL : &dlg->m_object, + fStaticMethod ? nullptr : &dlg->m_object, &stack->m_arguments[1], md->argumentsCount - 1)); } @@ -1336,7 +1336,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) evalPos++; CHECKSTACK(stack, evalPos); - evalPos[0].SetObjectReference(NULL); + evalPos[0].SetObjectReference(nullptr); break; } @@ -2109,7 +2109,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) #endif pThis = &evalPos[1 - calleeInst.target->argumentsCount]; // Point to the first arg, 'this' if an - // instance method + // instance method if (calleeInst.target->flags & CLR_RECORD_METHODDEF::MD_DelegateInvoke) { @@ -2153,7 +2153,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { // Instance method, pThis[ 0 ] is valid - if (op == CEE_CALL && pThis[0].Dereference() == NULL) + if (op == CEE_CALL && pThis[0].Dereference() == nullptr) { // CALL on a null instance is allowed, and should not throw a NullReferenceException on // the call although a NullReferenceException is likely to be thrown soon thereafter if @@ -2191,7 +2191,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { WRITEBACK(stack, evalPos, ip, fDirty); - _ASSERTE(FIMPLIES(pThis->DataType() == DATATYPE_OBJECT, pThis->Dereference() != NULL)); + _ASSERTE(FIMPLIES(pThis->DataType() == DATATYPE_OBJECT, pThis->Dereference() != nullptr)); NANOCLR_CHECK_HRESULT( CLR_RT_StackFrame::PushAppDomainTransition(th, calleeInst, &pThis[0], &pThis[1])); } @@ -2369,7 +2369,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) CLR_RT_HeapBlock_Delegate *dlg = top[1].DereferenceDelegate(); - if (dlg == NULL) + if (dlg == nullptr) { NANOCLR_CHECK_HRESULT(CLR_E_NULL_REFERENCE); } @@ -2409,13 +2409,13 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) top[0].Assign(top[-1]); top--; } - top->SetObjectReference(NULL); + top->SetObjectReference(nullptr); // Stack: ... ... -> ... // ^ // Top points here. - if (calleeInst.genericType == NULL) + if (calleeInst.genericType == nullptr) { NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(top[0], cls)); } @@ -2668,8 +2668,11 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } CLR_RT_HeapBlock *ptr = CLR_RT_ExecutionEngine::AccessStaticField(field); - if (ptr == NULL) + + if (ptr == nullptr) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } evalPos++; CHECKSTACK(stack, evalPos); @@ -2691,8 +2694,11 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_RT_HeapBlock *ptr = CLR_RT_ExecutionEngine::AccessStaticField(field); - if (ptr == NULL) + + if (ptr == nullptr) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } evalPos++; CHECKSTACK(stack, evalPos); @@ -2713,8 +2719,11 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); CLR_RT_HeapBlock *ptr = CLR_RT_ExecutionEngine::AccessStaticField(field); - if (ptr == NULL) + + if (ptr == nullptr) + { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } evalPos--; CHECKSTACK(stack, evalPos); @@ -3096,7 +3105,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) evalPos++; CHECKSTACK(stack, evalPos); - evalPos[0].SetObjectReference(NULL); + evalPos[0].SetObjectReference(nullptr); switch (CLR_TypeFromTk(arg)) { @@ -3159,7 +3168,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_CHECK_HRESULT(th->ProcessException_EndFinally()); - _ASSERTE(th->m_currentException.Dereference() == NULL); + _ASSERTE(th->m_currentException.Dereference() == nullptr); stack = th->CurrentFrame(); goto Execute_Reload; } @@ -3194,7 +3203,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) _ASSERTE(us); us->m_stack = stack; - us->m_exception = NULL; + us->m_exception = nullptr; us->m_ip = ipLeave; us->m_currentBlockStart = eh.m_handlerStart; us->m_currentBlockEnd = eh.m_handlerEnd; @@ -3208,7 +3217,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) if (th->m_flags & CLR_RT_Thread::TH_F_Aborted) { - _ASSERTE(th->m_currentException.Dereference() == NULL); + _ASSERTE(th->m_currentException.Dereference() == nullptr); (void)Library_corlib_native_System_Exception::CreateInstance( th->m_currentException, diff --git a/src/CLR/Core/InterruptHandler/InterruptHandler.cpp b/src/CLR/Core/InterruptHandler/InterruptHandler.cpp index 51a58d1b71..e6def459be 100644 --- a/src/CLR/Core/InterruptHandler/InterruptHandler.cpp +++ b/src/CLR/Core/InterruptHandler/InterruptHandler.cpp @@ -7,18 +7,20 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// - //this method is called by Hardware_Initialize - //If you want to initialize your own interrupt handling related objects, put them here - +// this method is called by Hardware_Initialize +// If you want to initialize your own interrupt handling related objects, put them here + HRESULT CLR_HW_Hardware::ManagedHardware_Initialize() { NATIVE_PROFILE_CLR_HARDWARE(); NANOCLR_HEADER(); - - m_interruptData.m_HalQueue.Initialize( (CLR_HW_Hardware::HalInterruptRecord*)&g_scratchInterruptDispatchingStorage, InterruptRecords() ); - m_interruptData.m_applicationQueue.DblLinkedList_Initialize (); + m_interruptData.m_HalQueue.Initialize( + (CLR_HW_Hardware::HalInterruptRecord *)&g_scratchInterruptDispatchingStorage, + InterruptRecords()); + + m_interruptData.m_applicationQueue.DblLinkedList_Initialize(); m_interruptData.m_queuedInterrupts = 0; @@ -31,21 +33,23 @@ HRESULT CLR_HW_Hardware::SpawnDispatcher() NANOCLR_HEADER(); - CLR_RT_ApplicationInterrupt* interrupt; - CLR_RT_HeapBlock_NativeEventDispatcher* ioPort; + CLR_RT_ApplicationInterrupt *interrupt; + CLR_RT_HeapBlock_NativeEventDispatcher *ioPort; CLR_RT_HeapBlock_NativeEventDispatcher ::InterruptPortInterrupt *interruptData; // if reboot is in progress, just bail out - if(CLR_EE_DBG_IS( RebootPending )) + if (CLR_EE_DBG_IS(RebootPending)) { - return S_OK; + return S_OK; } - interrupt = (CLR_RT_ApplicationInterrupt*)m_interruptData.m_applicationQueue.FirstValidNode(); + interrupt = (CLR_RT_ApplicationInterrupt *)m_interruptData.m_applicationQueue.FirstValidNode(); - if((interrupt == NULL) || !g_CLR_RT_ExecutionEngine.EnsureSystemThread( g_CLR_RT_ExecutionEngine.m_interruptThread, ThreadPriority::System_Highest )) + if ((interrupt == nullptr) || !g_CLR_RT_ExecutionEngine.EnsureSystemThread( + g_CLR_RT_ExecutionEngine.m_interruptThread, + ThreadPriority::System_Highest)) { - return S_OK; + return S_OK; } interrupt->Unlink(); @@ -53,15 +57,15 @@ HRESULT CLR_HW_Hardware::SpawnDispatcher() interruptData = &interrupt->m_interruptPortInterrupt; ioPort = interruptData->context; - CLR_RT_ProtectFromGC gc1 ( *ioPort ); - - NANOCLR_SET_AND_LEAVE(ioPort->StartDispatch( interrupt, g_CLR_RT_ExecutionEngine.m_interruptThread )); - + CLR_RT_ProtectFromGC gc1(*ioPort); + + NANOCLR_SET_AND_LEAVE(ioPort->StartDispatch(interrupt, g_CLR_RT_ExecutionEngine.m_interruptThread)); + NANOCLR_CLEANUP(); - if(FAILED(hr)) + if (FAILED(hr)) { - ioPort->ThreadTerminationCallback( interrupt ); + ioPort->ThreadTerminationCallback(interrupt); } --m_interruptData.m_queuedInterrupts; @@ -75,9 +79,9 @@ HRESULT CLR_HW_Hardware::TransferAllInterruptsToApplicationQueue() NANOCLR_HEADER(); - while(true) + while (true) { - HalInterruptRecord* rec; + HalInterruptRecord *rec; { GLOBAL_LOCK(); @@ -87,17 +91,22 @@ HRESULT CLR_HW_Hardware::TransferAllInterruptsToApplicationQueue() GLOBAL_UNLOCK(); } - if(rec == NULL) break; + if (rec == nullptr) + break; - CLR_RT_ApplicationInterrupt* queueRec = (CLR_RT_ApplicationInterrupt*)CLR_RT_Memory::Allocate_And_Erase( sizeof(CLR_RT_ApplicationInterrupt), CLR_RT_HeapBlock::HB_CompactOnFailure ); CHECK_ALLOCATION(queueRec); + CLR_RT_ApplicationInterrupt *queueRec = (CLR_RT_ApplicationInterrupt *)CLR_RT_Memory::Allocate_And_Erase( + sizeof(CLR_RT_ApplicationInterrupt), + CLR_RT_HeapBlock::HB_CompactOnFailure); + CHECK_ALLOCATION(queueRec); - queueRec->m_interruptPortInterrupt.data1 = rec->m_data1; - queueRec->m_interruptPortInterrupt.data2 = rec->m_data2; - queueRec->m_interruptPortInterrupt.data3 = rec->m_data3; - queueRec->m_interruptPortInterrupt.time = rec->m_time; - queueRec->m_interruptPortInterrupt.context = (CLR_RT_HeapBlock_NativeEventDispatcher*)rec->m_context; + queueRec->m_interruptPortInterrupt.data1 = rec->m_data1; + queueRec->m_interruptPortInterrupt.data2 = rec->m_data2; + queueRec->m_interruptPortInterrupt.data3 = rec->m_data3; + queueRec->m_interruptPortInterrupt.time = rec->m_time; + queueRec->m_interruptPortInterrupt.context = (CLR_RT_HeapBlock_NativeEventDispatcher *)rec->m_context; - m_interruptData.m_applicationQueue.LinkAtBack( queueRec ); ++m_interruptData.m_queuedInterrupts; + m_interruptData.m_applicationQueue.LinkAtBack(queueRec); + ++m_interruptData.m_queuedInterrupts; { GLOBAL_LOCK(); @@ -108,28 +117,28 @@ HRESULT CLR_HW_Hardware::TransferAllInterruptsToApplicationQueue() } } - if(m_interruptData.m_queuedInterrupts == 0) + if (m_interruptData.m_queuedInterrupts == 0) { NANOCLR_SET_AND_LEAVE(CLR_E_NO_INTERRUPT); } NANOCLR_CLEANUP(); - if(CLR_E_OUT_OF_MEMORY == hr) + if (CLR_E_OUT_OF_MEMORY == hr) { // if there is no memory left discard all interrupts to avoid getting into a death spiral of OOM exceptions { GLOBAL_LOCK(); - while(!m_interruptData.m_HalQueue.IsEmpty()) + while (!m_interruptData.m_HalQueue.IsEmpty()) { m_interruptData.m_HalQueue.Pop(); } GLOBAL_UNLOCK(); } - } - + } + NANOCLR_CLEANUP_END(); } diff --git a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp index bb2e279629..b35a0c4dd9 100644 --- a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp +++ b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp @@ -9,7 +9,7 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -CLR_RT_DblLinkedList CLR_RT_HeapBlock_NativeEventDispatcher::eventList; +CLR_RT_DblLinkedList CLR_RT_HeapBlock_NativeEventDispatcher::eventList; void CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_Initialize() { @@ -22,7 +22,10 @@ void CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_RecoverFromGC() { NATIVE_PROFILE_CLR_IOPORT(); - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_NativeEventDispatcher, event, CLR_RT_HeapBlock_NativeEventDispatcher::eventList) + NANOCLR_FOREACH_NODE( + CLR_RT_HeapBlock_NativeEventDispatcher, + event, + CLR_RT_HeapBlock_NativeEventDispatcher::eventList) { event->RecoverFromGC(); } @@ -33,11 +36,12 @@ void CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_CleanUp() { NATIVE_PROFILE_CLR_IOPORT(); - CLR_RT_HeapBlock_NativeEventDispatcher* event; + CLR_RT_HeapBlock_NativeEventDispatcher *event; - while(NULL != (event = (CLR_RT_HeapBlock_NativeEventDispatcher*)CLR_RT_HeapBlock_NativeEventDispatcher::eventList.FirstValidNode())) + while (nullptr != (event = (CLR_RT_HeapBlock_NativeEventDispatcher *) + CLR_RT_HeapBlock_NativeEventDispatcher::eventList.FirstValidNode())) { - if(event->driverMethods != NULL) + if (event->driverMethods != nullptr) { event->driverMethods->cleanupProcessor(event); } @@ -47,37 +51,38 @@ void CLR_RT_HeapBlock_NativeEventDispatcher::HandlerMethod_CleanUp() } } -HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance( CLR_RT_HeapBlock& owner, CLR_RT_HeapBlock& eventRef ) +HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance(CLR_RT_HeapBlock &owner, CLR_RT_HeapBlock &eventRef) { NATIVE_PROFILE_CLR_IOPORT(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_NativeEventDispatcher* event = NULL; - - event = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache,CLR_RT_HeapBlock_NativeEventDispatcher,DATATYPE_IO_PORT); CHECK_ALLOCATION(event); - + CLR_RT_HeapBlock_NativeEventDispatcher *event = nullptr; + + event = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_HeapBlock_NativeEventDispatcher, DATATYPE_IO_PORT); + CHECK_ALLOCATION(event); + { - - CLR_RT_ProtectFromGC gc( *event ); - + + CLR_RT_ProtectFromGC gc(*event); + event->Initialize(); - eventList.LinkAtBack( event ); - - NANOCLR_CHECK_HRESULT(CLR_RT_ObjectToEvent_Source::CreateInstance( event, owner, eventRef )); - - } + eventList.LinkAtBack(event); + + NANOCLR_CHECK_HRESULT(CLR_RT_ObjectToEvent_Source::CreateInstance(event, owner, eventRef)); + } - // Set pointer to driver custom data to NULL. It initialized later by users of CLR_RT_HeapBlock_NativeEventDispatcher + // Set pointer to driver custom data to NULL. It initialized later by users of + // CLR_RT_HeapBlock_NativeEventDispatcher event->pDrvCustomData = NULL; // Set pointers to drivers methods to NULL. - event->driverMethods = NULL; + event->driverMethods = NULL; NANOCLR_CLEANUP(); - if(FAILED(hr)) + if (FAILED(hr)) { - if(event) + if (event) { event->ReleaseWhenDead(); } @@ -86,15 +91,18 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance( CLR_RT_HeapBlock NANOCLR_CLEANUP_END(); } -HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::ExtractInstance( CLR_RT_HeapBlock& ref, CLR_RT_HeapBlock_NativeEventDispatcher*& event ) +HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::ExtractInstance( + CLR_RT_HeapBlock &ref, + CLR_RT_HeapBlock_NativeEventDispatcher *&event) { NATIVE_PROFILE_CLR_IOPORT(); NANOCLR_HEADER(); - CLR_RT_ObjectToEvent_Source* src = CLR_RT_ObjectToEvent_Source::ExtractInstance( ref ); FAULT_ON_NULL(src); + CLR_RT_ObjectToEvent_Source *src = CLR_RT_ObjectToEvent_Source::ExtractInstance(ref); + FAULT_ON_NULL(src); - event = (CLR_RT_HeapBlock_NativeEventDispatcher*)src->m_eventPtr; + event = (CLR_RT_HeapBlock_NativeEventDispatcher *)src->m_eventPtr; NANOCLR_NOCLEANUP(); } @@ -112,18 +120,19 @@ bool CLR_RT_HeapBlock_NativeEventDispatcher::ReleaseWhenDeadEx() { NATIVE_PROFILE_CLR_IOPORT(); - if(!IsReadyForRelease()) return false; + if (!IsReadyForRelease()) + return false; - //remove any queued interrupts for this event - NANOCLR_FOREACH_NODE(CLR_RT_ApplicationInterrupt,interrupt,g_CLR_HW_Hardware.m_interruptData.m_applicationQueue) + // remove any queued interrupts for this event + NANOCLR_FOREACH_NODE(CLR_RT_ApplicationInterrupt, interrupt, g_CLR_HW_Hardware.m_interruptData.m_applicationQueue) { - if(this == interrupt->m_interruptPortInterrupt.context) + if (this == interrupt->m_interruptPortInterrupt.context) { interrupt->Unlink(); --g_CLR_HW_Hardware.m_interruptData.m_queuedInterrupts; - ThreadTerminationCallback( interrupt ); + ThreadTerminationCallback(interrupt); } } NANOCLR_FOREACH_NODE_END(); @@ -141,94 +150,98 @@ void CLR_RT_HeapBlock_NativeEventDispatcher::RemoveFromHALQueue() { // Since we are going to analyze and update the queue we need to disable interrupts. // Interrupt service routines add records to this queue. - CLR_UINT32 elemCount = 0; - GLOBAL_LOCK(); + CLR_UINT32 elemCount = 0; + GLOBAL_LOCK(); elemCount = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.NumberOfElements(); GLOBAL_UNLOCK(); // For all elements in the queue - for ( CLR_UINT32 curElem = 0; curElem < elemCount; curElem++ ) + for (CLR_UINT32 curElem = 0; curElem < elemCount; curElem++) { // Retrieve the element ( actually remove it from the queue ) - CLR_HW_Hardware::HalInterruptRecord* testRec = NULL; + CLR_HW_Hardware::HalInterruptRecord *testRec = nullptr; GLOBAL_LOCK(); testRec = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Pop(); GLOBAL_UNLOCK(); - + // Check if context of this record points to the instance of CLR_RT_HeapBlock_NativeEventDispatcher // If the "context" is the same as "this", then we skip the "Push" and record is removed. - if ( testRec->m_context != this ) + if (testRec->m_context != this) { // If it is different from this instance of CLR_RT_HeapBlock_NativeEventDispatcher, thin push it back - CLR_HW_Hardware::HalInterruptRecord* newRec = NULL; - GLOBAL_LOCK(); + CLR_HW_Hardware::HalInterruptRecord *newRec = nullptr; + GLOBAL_LOCK(); newRec = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Push(); GLOBAL_UNLOCK(); - newRec->AssignFrom( *testRec ); + newRec->AssignFrom(*testRec); } } } -void CLR_RT_HeapBlock_NativeEventDispatcher::SaveToHALQueue( uint32_t data1, uint32_t data2 ) +void CLR_RT_HeapBlock_NativeEventDispatcher::SaveToHALQueue(uint32_t data1, uint32_t data2) { NATIVE_PROFILE_CLR_IOPORT(); - CLR_HW_Hardware::HalInterruptRecord* rec = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Push(); + CLR_HW_Hardware::HalInterruptRecord *rec = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Push(); - if(rec == NULL) + if (rec == nullptr) { // remove the oldest interrupt to make room for the newest g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Pop(); - + rec = g_CLR_HW_Hardware.m_interruptData.m_HalQueue.Push(); } - - if(rec) + + if (rec) { - rec->m_data1 = data1; - rec->m_data2 = data2; + rec->m_data1 = data1; + rec->m_data2 = data2; rec->m_context = this; - rec->m_time = HAL_Time_CurrentTime(); + rec->m_time = HAL_Time_CurrentTime(); } - ::Events_Set( SYSTEM_EVENT_HW_INTERRUPT ); + ::Events_Set(SYSTEM_EVENT_HW_INTERRUPT); } -void SaveNativeEventToHALQueue( CLR_RT_HeapBlock_NativeEventDispatcher *pContext, uint32_t data1, uint32_t data2 ) +void SaveNativeEventToHALQueue(CLR_RT_HeapBlock_NativeEventDispatcher *pContext, uint32_t data1, uint32_t data2) { - pContext->SaveToHALQueue( data1, data2 ); + pContext->SaveToHALQueue(data1, data2); } -void CleanupNativeEventsFromHALQueue( CLR_RT_HeapBlock_NativeEventDispatcher *pContext ) +void CleanupNativeEventsFromHALQueue(CLR_RT_HeapBlock_NativeEventDispatcher *pContext) { pContext->RemoveFromHALQueue(); } -HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::StartDispatch( CLR_RT_ApplicationInterrupt* appInterrupt, CLR_RT_Thread* th ) +HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::StartDispatch( + CLR_RT_ApplicationInterrupt *appInterrupt, + CLR_RT_Thread *th) { NATIVE_PROFILE_CLR_IOPORT(); NANOCLR_HEADER(); - CLR_RT_StackFrame* stackTop; - CLR_RT_HeapBlock* args; - CLR_RT_HeapBlock_Delegate* dlg; - CLR_RT_HeapBlock* event; + CLR_RT_StackFrame *stackTop; + CLR_RT_HeapBlock *args; + CLR_RT_HeapBlock_Delegate *dlg; + CLR_RT_HeapBlock *event; const CLR_UINT64 c_UTCMask = 0x8000000000000000ULL; - InterruptPortInterrupt& interrupt = appInterrupt->m_interruptPortInterrupt; + InterruptPortInterrupt &interrupt = appInterrupt->m_interruptPortInterrupt; - NANOCLR_CHECK_HRESULT(RecoverManagedObject( event )); - dlg = event[ Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::FIELD__threadSpawn ].DereferenceDelegate(); FAULT_ON_NULL(dlg); + NANOCLR_CHECK_HRESULT(RecoverManagedObject(event)); + dlg = event[Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::FIELD__threadSpawn] + .DereferenceDelegate(); + FAULT_ON_NULL(dlg); - NANOCLR_CHECK_HRESULT(th->PushThreadProcDelegate( dlg )); + NANOCLR_CHECK_HRESULT(th->PushThreadProcDelegate(dlg)); stackTop = th->CurrentFrame(); args = stackTop->m_arguments; - if((stackTop->m_call.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) + if ((stackTop->m_call.target->flags & CLR_RECORD_METHODDEF::MD_Static) == 0) { ++args; } @@ -236,47 +249,48 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::StartDispatch( CLR_RT_Applicatio // // set values for delegate arguments // - args[0].SetInteger ( interrupt.data1 ); - args[1].SetInteger ( interrupt.data2 ); - args[2].SetInteger ( (CLR_UINT64)interrupt.time | c_UTCMask ); - args[2].ChangeDataType( DATATYPE_DATETIME ); - - th->m_terminationCallback = CLR_RT_HeapBlock_NativeEventDispatcher::ThreadTerminationCallback; + args[0].SetInteger(interrupt.data1); + args[1].SetInteger(interrupt.data2); + args[2].SetInteger((CLR_UINT64)interrupt.time | c_UTCMask); + args[2].ChangeDataType(DATATYPE_DATETIME); + + th->m_terminationCallback = CLR_RT_HeapBlock_NativeEventDispatcher::ThreadTerminationCallback; th->m_terminationParameter = appInterrupt; NANOCLR_NOCLEANUP(); } -void CLR_RT_HeapBlock_NativeEventDispatcher::ThreadTerminationCallback( void* arg ) +void CLR_RT_HeapBlock_NativeEventDispatcher::ThreadTerminationCallback(void *arg) { NATIVE_PROFILE_CLR_IOPORT(); - CLR_RT_ApplicationInterrupt* appInterrupt = (CLR_RT_ApplicationInterrupt*)arg; - CLR_RT_HeapBlock_NativeEventDispatcher::InterruptPortInterrupt& interrupt = appInterrupt->m_interruptPortInterrupt; + CLR_RT_ApplicationInterrupt *appInterrupt = (CLR_RT_ApplicationInterrupt *)arg; + CLR_RT_HeapBlock_NativeEventDispatcher::InterruptPortInterrupt &interrupt = appInterrupt->m_interruptPortInterrupt; - FreeManagedEvent((interrupt.data1 >> 8) & 0xff, //category - (interrupt.data1 ) & 0xff, //subCategory - interrupt.data1 >> 16 , //data1 - interrupt.data2 ); + FreeManagedEvent( + (interrupt.data1 >> 8) & 0xff, // category + (interrupt.data1) & 0xff, // subCategory + interrupt.data1 >> 16, // data1 + interrupt.data2); interrupt.data1 = 0; interrupt.data2 = 0; - CLR_RT_Memory::Release( appInterrupt ); + CLR_RT_Memory::Release(appInterrupt); g_CLR_HW_Hardware.SpawnDispatcher(); } -HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::RecoverManagedObject( CLR_RT_HeapBlock*& event ) +HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::RecoverManagedObject(CLR_RT_HeapBlock *&event) { NATIVE_PROFILE_CLR_IOPORT(); NANOCLR_HEADER(); // recover the managed object - NANOCLR_FOREACH_NODE(CLR_RT_ObjectToEvent_Source,ref,this->m_references) + NANOCLR_FOREACH_NODE(CLR_RT_ObjectToEvent_Source, ref, this->m_references) { - if(ref->m_objectPtr) + if (ref->m_objectPtr) { event = ref->m_objectPtr; NANOCLR_SET_AND_LEAVE(S_OK); @@ -284,7 +298,7 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::RecoverManagedObject( CLR_RT_Hea } NANOCLR_FOREACH_NODE_END(); - event = NULL; + event = nullptr; NANOCLR_SET_AND_LEAVE(CLR_E_PIN_DEAD); diff --git a/src/CLR/Core/RPC/CLR_RT_HeapBlock_EndPoint.cpp b/src/CLR/Core/RPC/CLR_RT_HeapBlock_EndPoint.cpp index caf1abb299..3f3e5e4b83 100644 --- a/src/CLR/Core/RPC/CLR_RT_HeapBlock_EndPoint.cpp +++ b/src/CLR/Core/RPC/CLR_RT_HeapBlock_EndPoint.cpp @@ -7,7 +7,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// - CLR_RT_DblLinkedList CLR_RT_HeapBlock_EndPoint::m_endPoints; void CLR_RT_HeapBlock_EndPoint::HandlerMethod_Initialize() @@ -17,7 +16,7 @@ void CLR_RT_HeapBlock_EndPoint::HandlerMethod_Initialize() void CLR_RT_HeapBlock_EndPoint::HandlerMethod_RecoverFromGC() { - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_EndPoint,endPoint,CLR_RT_HeapBlock_EndPoint::m_endPoints) + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_EndPoint, endPoint, CLR_RT_HeapBlock_EndPoint::m_endPoints) { endPoint->RecoverFromGC(); } @@ -28,74 +27,82 @@ void CLR_RT_HeapBlock_EndPoint::HandlerMethod_CleanUp() { } -CLR_RT_HeapBlock_EndPoint* CLR_RT_HeapBlock_EndPoint::FindEndPoint( const CLR_RT_HeapBlock_EndPoint::Port& port ) +CLR_RT_HeapBlock_EndPoint *CLR_RT_HeapBlock_EndPoint::FindEndPoint(const CLR_RT_HeapBlock_EndPoint::Port &port) { - NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_EndPoint,endPoint,CLR_RT_HeapBlock_EndPoint::m_endPoints) + NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_EndPoint, endPoint, CLR_RT_HeapBlock_EndPoint::m_endPoints) { - if((endPoint->m_addr.m_type == port.m_type) && (endPoint->m_addr.m_id == port.m_id)) return endPoint; //eliminate the need for another func. call; member variables are public + if ((endPoint->m_addr.m_type == port.m_type) && (endPoint->m_addr.m_id == port.m_id)) + return endPoint; // eliminate the need for another func. call; member variables are public } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } -bool CLR_RT_HeapBlock_EndPoint::Port::Compare( const CLR_RT_HeapBlock_EndPoint::Port& port ) +bool CLR_RT_HeapBlock_EndPoint::Port::Compare(const CLR_RT_HeapBlock_EndPoint::Port &port) { return m_type == port.m_type && m_id == port.m_id; } //--// -HRESULT CLR_RT_HeapBlock_EndPoint::CreateInstance( const CLR_RT_HeapBlock_EndPoint::Port& port, CLR_RT_HeapBlock& owner, CLR_RT_HeapBlock& epRef ) +HRESULT CLR_RT_HeapBlock_EndPoint::CreateInstance( + const CLR_RT_HeapBlock_EndPoint::Port &port, + CLR_RT_HeapBlock &owner, + CLR_RT_HeapBlock &epRef) { NANOCLR_HEADER(); - CLR_RT_HeapBlock_EndPoint* endPoint = NULL; + CLR_RT_HeapBlock_EndPoint *endPoint = nullptr; // // Create a request and stop the calling thread. // - endPoint = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache,CLR_RT_HeapBlock_EndPoint,DATATYPE_ENDPOINT_HEAD); CHECK_ALLOCATION(endPoint); + endPoint = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_HeapBlock_EndPoint, DATATYPE_ENDPOINT_HEAD); + CHECK_ALLOCATION(endPoint); { - CLR_RT_ProtectFromGC gc( *endPoint ); + CLR_RT_ProtectFromGC gc(*endPoint); endPoint->Initialize(); - endPoint->m_seq = 0; + endPoint->m_seq = 0; endPoint->m_addr = port; endPoint->m_messages.DblLinkedList_Initialize(); - CLR_RT_HeapBlock_EndPoint::m_endPoints.LinkAtBack( endPoint ); + CLR_RT_HeapBlock_EndPoint::m_endPoints.LinkAtBack(endPoint); - NANOCLR_SET_AND_LEAVE(CLR_RT_ObjectToEvent_Source::CreateInstance( endPoint, owner, epRef )); + NANOCLR_SET_AND_LEAVE(CLR_RT_ObjectToEvent_Source::CreateInstance(endPoint, owner, epRef)); } NANOCLR_CLEANUP(); - if(FAILED(hr)) + if (FAILED(hr)) { - if(endPoint) endPoint->ReleaseWhenDeadEx(); + if (endPoint) + endPoint->ReleaseWhenDeadEx(); } NANOCLR_CLEANUP_END(); } -HRESULT CLR_RT_HeapBlock_EndPoint::ExtractInstance( CLR_RT_HeapBlock& ref, CLR_RT_HeapBlock_EndPoint*& endPoint ) +HRESULT CLR_RT_HeapBlock_EndPoint::ExtractInstance(CLR_RT_HeapBlock &ref, CLR_RT_HeapBlock_EndPoint *&endPoint) { NANOCLR_HEADER(); - CLR_RT_ObjectToEvent_Source* src = CLR_RT_ObjectToEvent_Source::ExtractInstance( ref ); FAULT_ON_NULL(src); + CLR_RT_ObjectToEvent_Source *src = CLR_RT_ObjectToEvent_Source::ExtractInstance(ref); + FAULT_ON_NULL(src); - endPoint = (CLR_RT_HeapBlock_EndPoint*)src->m_eventPtr; + endPoint = (CLR_RT_HeapBlock_EndPoint *)src->m_eventPtr; NANOCLR_NOCLEANUP(); } bool CLR_RT_HeapBlock_EndPoint::ReleaseWhenDeadEx() { - if(!IsReadyForRelease()) return false; + if (!IsReadyForRelease()) + return false; m_messages.DblLinkedList_Release(); @@ -113,18 +120,19 @@ void CLR_RT_HeapBlock_EndPoint::RecoverFromGC() //--// -CLR_RT_HeapBlock_EndPoint::Message* CLR_RT_HeapBlock_EndPoint::FindMessage( CLR_UINT32 cmd, const CLR_UINT32* seq ) +CLR_RT_HeapBlock_EndPoint::Message *CLR_RT_HeapBlock_EndPoint::FindMessage(CLR_UINT32 cmd, const CLR_UINT32 *seq) { - NANOCLR_FOREACH_NODE(Message,msg,m_messages) + NANOCLR_FOREACH_NODE(Message, msg, m_messages) { - if(msg->m_cmd == cmd) + if (msg->m_cmd == cmd) { - if(!seq ) return msg; - if(msg->m_addr.m_seq == *seq) return msg; + if (!seq) + return msg; + if (msg->m_addr.m_seq == *seq) + return msg; } } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } - diff --git a/src/CLR/Core/RPC/RPC_stub.cpp b/src/CLR/Core/RPC/RPC_stub.cpp index dfb95c9e25..062b445202 100644 --- a/src/CLR/Core/RPC/RPC_stub.cpp +++ b/src/CLR/Core/RPC/RPC_stub.cpp @@ -7,7 +7,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// - __nfweak void CLR_RT_HeapBlock_EndPoint::HandlerMethod_Initialize() { } @@ -20,14 +19,14 @@ __nfweak void CLR_RT_HeapBlock_EndPoint::HandlerMethod_CleanUp() { } -__nfweak CLR_RT_HeapBlock_EndPoint* CLR_RT_HeapBlock_EndPoint::FindEndPoint( const CLR_RT_HeapBlock_EndPoint::Port& port ) +__nfweak CLR_RT_HeapBlock_EndPoint *CLR_RT_HeapBlock_EndPoint::FindEndPoint(const CLR_RT_HeapBlock_EndPoint::Port &port) { (void)port; - return NULL; + return nullptr; } -__nfweak bool CLR_RT_HeapBlock_EndPoint::Port::Compare( const CLR_RT_HeapBlock_EndPoint::Port& port ) +__nfweak bool CLR_RT_HeapBlock_EndPoint::Port::Compare(const CLR_RT_HeapBlock_EndPoint::Port &port) { (void)port; @@ -36,7 +35,10 @@ __nfweak bool CLR_RT_HeapBlock_EndPoint::Port::Compare( const CLR_RT_HeapBlock_E //--// -__nfweak HRESULT CLR_RT_HeapBlock_EndPoint::CreateInstance( const CLR_RT_HeapBlock_EndPoint::Port& port, CLR_RT_HeapBlock& owner, CLR_RT_HeapBlock& epRef ) +__nfweak HRESULT CLR_RT_HeapBlock_EndPoint::CreateInstance( + const CLR_RT_HeapBlock_EndPoint::Port &port, + CLR_RT_HeapBlock &owner, + CLR_RT_HeapBlock &epRef) { (void)port; (void)owner; @@ -45,7 +47,7 @@ __nfweak HRESULT CLR_RT_HeapBlock_EndPoint::CreateInstance( const CLR_RT_HeapBlo NANOCLR_FEATURE_STUB_RETURN(); } -__nfweak HRESULT CLR_RT_HeapBlock_EndPoint::ExtractInstance( CLR_RT_HeapBlock& ref, CLR_RT_HeapBlock_EndPoint*& endPoint ) +__nfweak HRESULT CLR_RT_HeapBlock_EndPoint::ExtractInstance(CLR_RT_HeapBlock &ref, CLR_RT_HeapBlock_EndPoint *&endPoint) { (void)ref; (void)endPoint; @@ -66,10 +68,12 @@ __nfweak void CLR_RT_HeapBlock_EndPoint::RecoverFromGC() //--// -__nfweak CLR_RT_HeapBlock_EndPoint::Message* CLR_RT_HeapBlock_EndPoint::FindMessage( CLR_UINT32 cmd, const CLR_UINT32* seq ) +__nfweak CLR_RT_HeapBlock_EndPoint::Message *CLR_RT_HeapBlock_EndPoint::FindMessage( + CLR_UINT32 cmd, + const CLR_UINT32 *seq) { (void)cmd; (void)seq; - - return NULL; + + return nullptr; } diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index fffd93b629..340d1ada1e 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -25,8 +25,10 @@ CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::TypeHandler::FixDereference(CLR_RT_Hea CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::TypeHandler::FixNull(CLR_RT_HeapBlock *v) { NATIVE_PROFILE_CLR_SERIALIZATION(); - if (v && v->DataType() == DATATYPE_OBJECT && v->Dereference() == NULL) - return NULL; + if (v && v->DataType() == DATATYPE_OBJECT && v->Dereference() == nullptr) + { + return nullptr; + } return v; } @@ -65,8 +67,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - m_value = NULL; - m_type = NULL; + m_value = nullptr; + m_type = nullptr; v = TypeHandler::FixNull(v); if (v) @@ -110,8 +112,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) NANOCLR_SET_AND_LEAVE(CLR_E_APPDOMAIN_MARSHAL_EXCEPTION); } #endif - m_value = NULL; - m_type = NULL; + m_value = nullptr; + m_type = nullptr; } } @@ -132,9 +134,9 @@ int CLR_RT_BinaryFormatter::TypeHandler::SignatureRequirements() res &= ~c_Signature_Length; } - m_typeForced = NULL; + m_typeForced = nullptr; - if (m_typeExpected != NULL) + if (m_typeExpected != nullptr) { switch (m_typeExpected->m_flags) { @@ -244,7 +246,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature(int &res) } } - if (m_value == NULL) + if (m_value == nullptr) { if (mask == 0) { @@ -417,7 +419,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitSignature_Inner( CLR_RT_TypeDescriptor typeSub; typeSub.InitializeFromType(type->m_reflex.data.type); - NANOCLR_CHECK_HRESULT(EmitSignature_Inner(c_Signature_Header | c_Signature_Type, &typeSub, NULL)); + NANOCLR_CHECK_HRESULT(EmitSignature_Inner(c_Signature_Header | c_Signature_Type, &typeSub, nullptr)); } sizeReal = value->DereferenceArray()->m_numOfElements; @@ -502,8 +504,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) int mask = SignatureRequirements(); - m_value = NULL; - m_type = NULL; + m_value = nullptr; + m_type = nullptr; if (m_typeForced) { @@ -539,7 +541,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadSignature(int &res) NANOCLR_CHECK_HRESULT(m_bf->ReadCompressedUnsigned(index)); dup = m_bf->GetDuplicate(index); - if (dup == NULL) + if (dup == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_SERIALIZATION_VIOLATION); } @@ -1040,7 +1042,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) if (len == 0xFFFFFFFF) { - m_value->SetObjectReference(NULL); + m_value->SetObjectReference(nullptr); } else { @@ -1145,13 +1147,13 @@ HRESULT CLR_RT_BinaryFormatter::State::CreateInstance( CLR_RT_TypeDescriptor *pDesc; SerializationHintsAttribute hintsTmp; - if (type && CLR_RT_ReflectionDef_Index::Convert(*type, inst, NULL)) + if (type && CLR_RT_ReflectionDef_Index::Convert(*type, inst, nullptr)) { NANOCLR_CHECK_HRESULT(desc.InitializeFromType(inst)); pDesc = &desc; - if (hints == NULL) + if (hints == nullptr) { hints = &hintsTmp; @@ -1162,7 +1164,7 @@ HRESULT CLR_RT_BinaryFormatter::State::CreateInstance( } else { - pDesc = NULL; + pDesc = nullptr; } NANOCLR_SET_AND_LEAVE(CreateInstance(parent, hints, pDesc)); @@ -1213,7 +1215,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi CLR_RT_AttributeEnumerator en; en.Initialize(cls); - if (en.MatchNext(&inst, NULL)) + if (en.MatchNext(&inst, nullptr)) { CLR_RT_AttributeParser parser; @@ -1225,8 +1227,10 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi NANOCLR_CHECK_HRESULT(parser.Next(val)); - if (val == NULL) + if (val == nullptr) + { break; + } } } } @@ -1250,7 +1254,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( CLR_RT_AttributeEnumerator en; en.Initialize(fld); - if (en.MatchNext(&inst, NULL)) + if (en.MatchNext(&inst, nullptr)) { CLR_RT_AttributeParser parser; @@ -1262,7 +1266,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( NANOCLR_CHECK_HRESULT(parser.Next(val)); - if (val == NULL) + if (val == nullptr) { break; } @@ -1305,7 +1309,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) src = TypeHandler::FixNull(src); } - if (src == NULL || + if (src == nullptr || (c_CLR_RT_DataTypeLookup[src->DataType()].m_flags & CLR_RT_DataTypeLookup::c_OptimizedValueType) == 0) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); @@ -1397,7 +1401,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AssignAndFixBoxing(CLR_RT_HeapBlock &dst) else { src = &m_value.m_value_tmp; - src->SetObjectReference(NULL); + src->SetObjectReference(nullptr); } } @@ -1419,7 +1423,7 @@ HRESULT CLR_RT_BinaryFormatter::State::GetValue() NANOCLR_HEADER(); State *prev = (State *)Prev(); - if (prev->Prev() == NULL) + if (prev->Prev() == nullptr) { NANOCLR_SET_AND_LEAVE(m_value.SetValue(&m_parent->m_value)); } @@ -1452,7 +1456,7 @@ HRESULT CLR_RT_BinaryFormatter::State::SetValueAndDestroyInstance() { State *prev = (State *)Prev(); - if (prev->Prev() == NULL) + if (prev->Prev() == nullptr) { NANOCLR_CHECK_HRESULT(AssignAndFixBoxing(m_parent->m_value)); } @@ -1601,7 +1605,7 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() m_fields_NeedProcessing = true; m_fields_CurrentClass = m_value.m_type->m_handlerCls; m_fields_CurrentField = 0; - m_fields_Pointer = NULL; + m_fields_Pointer = nullptr; break; } @@ -1620,7 +1624,7 @@ HRESULT CLR_RT_BinaryFormatter::State::Advance() m_array_LastPos, capacity)); - m_array_ExpectedType = NULL; + m_array_ExpectedType = nullptr; } else { @@ -1756,7 +1760,7 @@ HRESULT CLR_RT_BinaryFormatter::State::AdvanceToTheNextElement() } else { - hints = NULL; + hints = nullptr; } NANOCLR_SET_AND_LEAVE(State::CreateInstance(m_parent, hints, m_array_ExpectedType)); @@ -1780,7 +1784,7 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B res = ptr; CHECK_ALLOCATION(ptr); - ptr->m_stream = NULL; // CLR_RT_HeapBlock_MemoryStream* m_stream; + ptr->m_stream = nullptr; // CLR_RT_HeapBlock_MemoryStream* m_stream; ptr->m_index = 0; // CLR_UINT32 m_index; ptr->m_lastTypeRead = 0; // CLR_UINT32 m_lastTypeRead; ptr->m_duplicates @@ -1789,8 +1793,8 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B ptr->m_states.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_states; // EVENT HEAP - // NO RELOCATION - list of CLR_RT_BinaryFormatter::State // - ptr->m_fDeserialize = (buf != NULL); // bool m_fDeserialize; - ptr->m_value.SetObjectReference(NULL); // CLR_RT_HeapBlock m_value; + ptr->m_fDeserialize = (buf != nullptr); // bool m_fDeserialize; + ptr->m_value.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_value; ptr->m_value_desc.TypeDescriptor_Initialize(); // CLR_RT_TypeDescriptor m_value_desc; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(ptr->m_stream, buf, len)); @@ -1817,8 +1821,11 @@ HRESULT CLR_RT_BinaryFormatter::Advance() while (true) { State *top = (State *)m_states.LastNode(); - if (top->Prev() == NULL) + + if (top->Prev() == nullptr) + { break; + } NANOCLR_CHECK_HRESULT(top->Advance()); } @@ -1831,7 +1838,7 @@ HRESULT CLR_RT_BinaryFormatter::Advance() void CLR_RT_BinaryFormatter::PrepareForGC(void *data) { NATIVE_PROFILE_CLR_SERIALIZATION(); - if (data != NULL) + if (data != nullptr) { CLR_RT_BinaryFormatter *bf = (CLR_RT_BinaryFormatter *)data; @@ -1853,7 +1860,7 @@ HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_Heap CLR_RT_HeapBlock cls; CLR_UINT32 flags = 0; - cls.SetObjectReference(NULL); + cls.SetObjectReference(nullptr); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; @@ -1868,14 +1875,14 @@ HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_Heap } } - CLR_RT_BinaryFormatter *bf = NULL; + CLR_RT_BinaryFormatter *bf = nullptr; CLR_RT_ProtectFromGC pgc((void **)&bf, CLR_RT_BinaryFormatter::PrepareForGC); - refData.SetObjectReference(NULL); + refData.SetObjectReference(nullptr); - NANOCLR_CHECK_HRESULT(CLR_RT_BinaryFormatter::CreateInstance(NULL, 0, bf)); + NANOCLR_CHECK_HRESULT(CLR_RT_BinaryFormatter::CreateInstance(nullptr, 0, bf)); - NANOCLR_CHECK_HRESULT(State::CreateInstance(bf, NULL, &cls)); + NANOCLR_CHECK_HRESULT(State::CreateInstance(bf, nullptr, &cls)); bf->m_flags = flags; bf->m_value.Assign(object); @@ -1890,7 +1897,7 @@ HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_Heap { bf->DestroyInstance(); - bf = NULL; + bf = nullptr; } NANOCLR_CLEANUP_END(); @@ -1907,7 +1914,7 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( CLR_RT_HeapBlock cls; - cls.SetObjectReference(NULL); + cls.SetObjectReference(nullptr); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; @@ -1924,9 +1931,9 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( CLR_RT_HeapBlock_Array *array = object.DereferenceArray(); - refData.SetObjectReference(NULL); + refData.SetObjectReference(nullptr); - if (array != NULL) + if (array != nullptr) { NANOCLR_SET_AND_LEAVE(CLR_RT_BinaryFormatter::Deserialize( refData, @@ -1951,14 +1958,14 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - CLR_RT_BinaryFormatter *bf = NULL; + CLR_RT_BinaryFormatter *bf = nullptr; CLR_RT_ProtectFromGC pgc((void **)&bf, CLR_RT_BinaryFormatter::PrepareForGC); - refData.SetObjectReference(NULL); + refData.SetObjectReference(nullptr); NANOCLR_CHECK_HRESULT(CLR_RT_BinaryFormatter::CreateInstance(data, size, bf)); - NANOCLR_CHECK_HRESULT(State::CreateInstance(bf, NULL, cls)); + NANOCLR_CHECK_HRESULT(State::CreateInstance(bf, nullptr, cls)); bf->m_flags = flags; @@ -1977,7 +1984,7 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( bf->DestroyInstance(); - bf = NULL; + bf = nullptr; } NANOCLR_CLEANUP_END(); @@ -2032,7 +2039,7 @@ CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 index) } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } //--//--// diff --git a/src/CLR/Core/Streams.cpp b/src/CLR/Core/Streams.cpp index ccf87ac218..9374f162fa 100644 --- a/src/CLR/Core/Streams.cpp +++ b/src/CLR/Core/Streams.cpp @@ -7,44 +7,46 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_MemoryStream::CreateInstance( CLR_RT_HeapBlock_MemoryStream*& stream, CLR_UINT8* buf, int len ) +HRESULT CLR_RT_HeapBlock_MemoryStream::CreateInstance(CLR_RT_HeapBlock_MemoryStream *&stream, CLR_UINT8 *buf, int len) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - stream = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache,CLR_RT_HeapBlock_MemoryStream,DATATYPE_MEMORY_STREAM_HEAD); CHECK_ALLOCATION(stream); + stream = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_HeapBlock_MemoryStream, DATATYPE_MEMORY_STREAM_HEAD); + CHECK_ALLOCATION(stream); - NANOCLR_SET_AND_LEAVE(stream->Initialize( buf, len )); + NANOCLR_SET_AND_LEAVE(stream->Initialize(buf, len)); NANOCLR_NOCLEANUP(); } -void CLR_RT_HeapBlock_MemoryStream::DeleteInstance( CLR_RT_HeapBlock_MemoryStream*& stream ) +void CLR_RT_HeapBlock_MemoryStream::DeleteInstance(CLR_RT_HeapBlock_MemoryStream *&stream) { NATIVE_PROFILE_CLR_CORE(); - if(stream) + if (stream) { stream->Release(); - g_CLR_RT_EventCache.Append_Node( stream ); + g_CLR_RT_EventCache.Append_Node(stream); - stream = NULL; + stream = nullptr; } } -HRESULT CLR_RT_HeapBlock_MemoryStream::Initialize( CLR_UINT8* buf, CLR_UINT32 len ) +HRESULT CLR_RT_HeapBlock_MemoryStream::Initialize(CLR_UINT8 *buf, CLR_UINT32 len) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - m_buffers.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_buffers; // EVENT HEAP - NO RELOCATION - list of CLR_RT_HeapBlock_MemoryStream::Buffer - + m_buffers.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_buffers; // EVENT HEAP - NO RELOCATION - + // list of CLR_RT_HeapBlock_MemoryStream::Buffer + CHECK_ALLOCATION(NewBuffer()); - if(buf) + if (buf) { - m_current->m_data = buf; - m_current->m_length = len; + m_current->m_data = buf; + m_current->m_length = len; } NANOCLR_NOCLEANUP(); @@ -61,15 +63,15 @@ void CLR_RT_HeapBlock_MemoryStream::Release() void CLR_RT_HeapBlock_MemoryStream::Rewind() { NATIVE_PROFILE_CLR_CORE(); - m_current = (Buffer*)m_buffers.FirstNode(); - m_pos = -1; - m_avail = 0; + m_current = (Buffer *)m_buffers.FirstNode(); + m_pos = -1; + m_avail = 0; } void CLR_RT_HeapBlock_MemoryStream::Reset() { NATIVE_PROFILE_CLR_CORE(); - NANOCLR_FOREACH_NODE(Buffer,node,m_buffers) + NANOCLR_FOREACH_NODE(Buffer, node, m_buffers) { node->m_length = 0; } @@ -77,30 +79,31 @@ void CLR_RT_HeapBlock_MemoryStream::Reset() Rewind(); } -HRESULT CLR_RT_HeapBlock_MemoryStream::ToArray( CLR_RT_HeapBlock& ref ) +HRESULT CLR_RT_HeapBlock_MemoryStream::ToArray(CLR_RT_HeapBlock &ref) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_UINT32 tot; - CLR_RT_HeapBlock_Array* array; - CLR_UINT8* buf; + CLR_UINT32 tot; + CLR_RT_HeapBlock_Array *array; + CLR_UINT8 *buf; tot = 0; - NANOCLR_FOREACH_NODE(Buffer,node,m_buffers) + NANOCLR_FOREACH_NODE(Buffer, node, m_buffers) { tot += node->m_length; } NANOCLR_FOREACH_NODE_END(); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ref, tot, g_CLR_RT_WellKnownTypes.UInt8 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(ref, tot, g_CLR_RT_WellKnownTypes.UInt8)); array = ref.DereferenceArray(); - buf = array->GetFirstElement(); + buf = array->GetFirstElement(); - NANOCLR_FOREACH_NODE(Buffer,node,m_buffers) + NANOCLR_FOREACH_NODE(Buffer, node, m_buffers) { - memcpy( buf, node->m_payload, node->m_length ); buf += node->m_length; + memcpy(buf, node->m_payload, node->m_length); + buf += node->m_length; } NANOCLR_FOREACH_NODE_END(); @@ -109,21 +112,21 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ToArray( CLR_RT_HeapBlock& ref ) //--// -CLR_RT_HeapBlock_MemoryStream::Buffer* CLR_RT_HeapBlock_MemoryStream::NewBuffer() +CLR_RT_HeapBlock_MemoryStream::Buffer *CLR_RT_HeapBlock_MemoryStream::NewBuffer() { NATIVE_PROFILE_CLR_CORE(); - Buffer* ptr = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache,Buffer,DATATYPE_MEMORY_STREAM_DATA); + Buffer *ptr = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, Buffer, DATATYPE_MEMORY_STREAM_DATA); - if(ptr) + if (ptr) { m_current = ptr; - m_pos = -1; - m_avail = 0; + m_pos = -1; + m_avail = 0; - ptr->m_data = ptr->m_payload; - ptr->m_length = 0; + ptr->m_data = ptr->m_payload; + ptr->m_length = 0; - m_buffers.LinkAtBack( ptr ); + m_buffers.LinkAtBack(ptr); } return ptr; @@ -136,7 +139,7 @@ int CLR_RT_HeapBlock_MemoryStream::BitsAvailable() NATIVE_PROFILE_CLR_CORE(); int val = m_avail - 8 * m_pos - 8; - NANOCLR_FOREACH_NODE__DIRECT(Buffer,ptr,m_current) + NANOCLR_FOREACH_NODE__DIRECT(Buffer, ptr, m_current) { val += 8 * ptr->m_length; } @@ -150,7 +153,7 @@ int CLR_RT_HeapBlock_MemoryStream::BitsWritten() NATIVE_PROFILE_CLR_CORE(); int val = m_pos * 8 - m_avail + 8; - NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(Buffer,ptr,m_current->Prev()) + NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(Buffer, ptr, m_current->Prev()) { val += 8 * ptr->m_length; } @@ -159,22 +162,29 @@ int CLR_RT_HeapBlock_MemoryStream::BitsWritten() return val; } -HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits( CLR_UINT64& res, CLR_UINT32 bits ) +HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits(CLR_UINT64 &res, CLR_UINT32 bits) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_UINT32* ptr = (CLR_UINT32*)&res; + CLR_UINT32 *ptr = (CLR_UINT32 *)&res; - if(bits > 32) { NANOCLR_CHECK_HRESULT(ReadBits( ptr[ 1 ], bits - 32 )); bits = 32; } - else { ptr[ 1 ] = 0; } + if (bits > 32) + { + NANOCLR_CHECK_HRESULT(ReadBits(ptr[1], bits - 32)); + bits = 32; + } + else + { + ptr[1] = 0; + } - NANOCLR_SET_AND_LEAVE(ReadBits( ptr[ 0 ], bits )); + NANOCLR_SET_AND_LEAVE(ReadBits(ptr[0], bits)); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits( CLR_UINT32& res, CLR_UINT32 bits ) +HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits(CLR_UINT32 &res, CLR_UINT32 bits) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -182,18 +192,18 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits( CLR_UINT32& res, CLR_UINT32 bit CLR_UINT32 val = 0; CLR_UINT32 pos = bits; - while(bits > 0) + while (bits > 0) { - while(m_avail == 0) + while (m_avail == 0) { m_pos++; m_avail = 8; - while(m_pos >= m_current->m_length) + while (m_pos >= m_current->m_length) { - m_current = (Buffer*)m_current->Next(); + m_current = (Buffer *)m_current->Next(); - if(m_current->Next() == NULL) + if (m_current->Next() == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } @@ -203,10 +213,11 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits( CLR_UINT32& res, CLR_UINT32 bit } CLR_UINT32 insert = (bits < m_avail) ? bits : m_avail; - CLR_UINT32 mask = (1 << insert) - 1; + CLR_UINT32 mask = (1 << insert) - 1; - pos -= insert; val |= (((CLR_UINT32)m_current->m_data[ m_pos ] >> (m_avail - insert)) & mask) << pos; - bits -= insert; + pos -= insert; + val |= (((CLR_UINT32)m_current->m_data[m_pos] >> (m_avail - insert)) & mask) << pos; + bits -= insert; m_avail -= insert; } @@ -215,35 +226,39 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ReadBits( CLR_UINT32& res, CLR_UINT32 bit NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits( CLR_UINT64 res, CLR_UINT32 bits ) +HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits(CLR_UINT64 res, CLR_UINT32 bits) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if(bits > 32) { NANOCLR_CHECK_HRESULT(WriteBits( (CLR_UINT32)(res >> 32), bits - 32 )); bits = 32; } + if (bits > 32) + { + NANOCLR_CHECK_HRESULT(WriteBits((CLR_UINT32)(res >> 32), bits - 32)); + bits = 32; + } - NANOCLR_SET_AND_LEAVE(WriteBits( (CLR_UINT32)res, bits )); + NANOCLR_SET_AND_LEAVE(WriteBits((CLR_UINT32)res, bits)); NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits( CLR_UINT32 val, CLR_UINT32 bits ) +HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits(CLR_UINT32 val, CLR_UINT32 bits) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_UINT32 pos = bits; - while(bits > 0) + while (bits > 0) { - while(m_avail == 0) + while (m_avail == 0) { m_pos++; - if(m_pos < (int)sizeof(m_current->m_payload)) + if (m_pos < (int)sizeof(m_current->m_payload)) { m_current->m_length++; - m_current->m_payload[ m_pos ] = 0; + m_current->m_payload[m_pos] = 0; m_avail = 8; break; } @@ -252,12 +267,12 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits( CLR_UINT32 val, CLR_UINT32 bit } CLR_UINT32 insert = (bits < m_avail) ? bits : m_avail; - CLR_UINT32 mask = (1 << insert) - 1; + CLR_UINT32 mask = (1 << insert) - 1; - pos -= insert; m_current->m_payload[ m_pos ] |= (CLR_UINT8)(((val >> pos) & mask) << (m_avail - insert)); - bits -= insert; + pos -= insert; + m_current->m_payload[m_pos] |= (CLR_UINT8)(((val >> pos) & mask) << (m_avail - insert)); + bits -= insert; m_avail -= insert; - } NANOCLR_NOCLEANUP(); @@ -265,16 +280,16 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::WriteBits( CLR_UINT32 val, CLR_UINT32 bit //--// -HRESULT CLR_RT_HeapBlock_MemoryStream::ReadArray( CLR_UINT8* buf, CLR_UINT32 bytes ) +HRESULT CLR_RT_HeapBlock_MemoryStream::ReadArray(CLR_UINT8 *buf, CLR_UINT32 bytes) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_UINT32 data; - while(bytes-- > 0) + while (bytes-- > 0) { - NANOCLR_CHECK_HRESULT(ReadBits( data, 8 )); + NANOCLR_CHECK_HRESULT(ReadBits(data, 8)); *buf++ = (CLR_UINT8)data; } @@ -282,16 +297,15 @@ HRESULT CLR_RT_HeapBlock_MemoryStream::ReadArray( CLR_UINT8* buf, CLR_UINT32 byt NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_HeapBlock_MemoryStream::WriteArray( const CLR_UINT8* buf, CLR_UINT32 bytes ) +HRESULT CLR_RT_HeapBlock_MemoryStream::WriteArray(const CLR_UINT8 *buf, CLR_UINT32 bytes) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - while(bytes-- > 0) + while (bytes-- > 0) { - NANOCLR_CHECK_HRESULT(WriteBits( (CLR_UINT32)*buf++, 8 )); + NANOCLR_CHECK_HRESULT(WriteBits((CLR_UINT32)*buf++, 8)); } NANOCLR_NOCLEANUP(); } - diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index f48decbd57..521bfa781d 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -46,8 +46,11 @@ void CLR_RT_SubThread::DestroyInstance(CLR_RT_Thread *th, CLR_RT_SubThread *sthB while (true) { CLR_RT_SubThread *sth = th->CurrentSubThread(); - if (sth->Prev() == NULL) + + if (sth->Prev() == nullptr) + { break; + } // // Release all the frames for this subthread. @@ -55,11 +58,16 @@ void CLR_RT_SubThread::DestroyInstance(CLR_RT_Thread *th, CLR_RT_SubThread *sthB while (true) { CLR_RT_StackFrame *stack = th->CurrentFrame(); - if (stack->Prev() == NULL) + + if (stack->Prev() == nullptr) + { break; + } if (stack == sth->m_owningStackFrame) + { break; + } stack->Pop(); } @@ -76,7 +84,7 @@ void CLR_RT_SubThread::DestroyInstance(CLR_RT_Thread *th, CLR_RT_SubThread *sthB // // Release all the lock requests. // - g_CLR_RT_ExecutionEngine.DeleteLockRequests(NULL, sth); + g_CLR_RT_ExecutionEngine.DeleteLockRequests(nullptr, sth); if (sth == sthBase && (flags & CLR_RT_SubThread::MODE_IncludeSelf) == 0) break; @@ -149,7 +157,7 @@ HRESULT CLR_RT_Thread::PushThreadProcDelegate(CLR_RT_HeapBlock_Delegate *pDelega CLR_RT_AppDomain *appDomainSav = g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(pDelegate->m_appDomain); #endif - if (pDelegate == NULL || pDelegate->DataType() != DATATYPE_DELEGATE_HEAD || + if (pDelegate == nullptr || pDelegate->DataType() != DATATYPE_DELEGATE_HEAD || inst.InitializeFromIndex(pDelegate->DelegateFtn()) == false) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); @@ -208,22 +216,22 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, th->Initialize(); - th->m_pid = pid; // int m_pid; - th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; - th->m_flags = flags; // CLR_UINT32 m_flags; - th->m_executionCounter = 0; // int m_executionCounter; - th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; - // - th->m_dlg = NULL; // CLR_RT_HeapBlock_Delegate* m_dlg; - th->m_currentException.SetObjectReference(NULL); // CLR_RT_HeapBlock m_currentException; - // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; - th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; + th->m_pid = pid; // int m_pid; + th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; + th->m_flags = flags; // CLR_UINT32 m_flags; + th->m_executionCounter = 0; // int m_executionCounter; + th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; + // + th->m_dlg = nullptr; // CLR_RT_HeapBlock_Delegate* m_dlg; + th->m_currentException.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_currentException; + // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; + th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; // // //--// // - th->m_terminationCallback = NULL; // ThreadTerminationCallback m_terminationCallback; - th->m_terminationParameter = NULL; // void* m_terminationParameter; + th->m_terminationCallback = nullptr; // ThreadTerminationCallback m_terminationCallback; + th->m_terminationParameter = nullptr; // void* m_terminationParameter; // th->m_waitForEvents = 0; // CLR_UINT32 m_waitForEvents; th->m_waitForEvents_Timeout = TIMEOUT_INFINITE; // CLR_INT64 m_waitForEvents_Timeout; @@ -231,7 +239,7 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, // th->m_locks.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_locks; th->m_lockRequestsCount = 0; // CLR_UINT32 m_lockRequestsCount; - th->m_waitForObject = NULL; + th->m_waitForObject = nullptr; // th->m_stackFrames.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_stackFrames; // @@ -249,11 +257,11 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, // If debugger creates managed thread for function evaluation, then m_realThread points to the thread that has // focus in debugger th->m_realThread = th; // CLR_RT_Thread* m_realThread -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING //--// - NANOCLR_CHECK_HRESULT(CLR_RT_SubThread::CreateInstance(th, NULL, priority, sth)); + NANOCLR_CHECK_HRESULT(CLR_RT_SubThread::CreateInstance(th, nullptr, priority, sth)); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (g_CLR_RT_ExecutionEngine.m_breakpointsNum) @@ -263,7 +271,7 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, // g_CLR_RT_ExecutionEngine.Breakpoint_Thread_Created(th); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING } NANOCLR_NOCLEANUP(); @@ -318,13 +326,24 @@ bool CLR_RT_Thread::ReleaseWhenDeadEx() return false; if (this == g_CLR_RT_ExecutionEngine.m_finalizerThread) - g_CLR_RT_ExecutionEngine.m_finalizerThread = NULL; + { + g_CLR_RT_ExecutionEngine.m_finalizerThread = nullptr; + } + if (this == g_CLR_RT_ExecutionEngine.m_interruptThread) - g_CLR_RT_ExecutionEngine.m_interruptThread = NULL; + { + g_CLR_RT_ExecutionEngine.m_interruptThread = nullptr; + } + if (this == g_CLR_RT_ExecutionEngine.m_timerThread) - g_CLR_RT_ExecutionEngine.m_timerThread = NULL; + { + g_CLR_RT_ExecutionEngine.m_timerThread = nullptr; + } + if (this == g_CLR_RT_ExecutionEngine.m_cctorThread) - g_CLR_RT_ExecutionEngine.m_cctorThread = NULL; + { + g_CLR_RT_ExecutionEngine.m_cctorThread = nullptr; + } return ReleaseWhenDead(); } @@ -442,14 +461,14 @@ void CLR_RT_Thread::OnThreadTerminated() // // Release all the subthreads. // - CLR_RT_SubThread::DestroyInstance(this, NULL, 0); + CLR_RT_SubThread::DestroyInstance(this, nullptr, 0); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (g_CLR_RT_ExecutionEngine.m_breakpointsNum) { g_CLR_RT_ExecutionEngine.Breakpoint_Thread_Terminated(this); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING } void CLR_RT_Thread::Passivate() @@ -465,10 +484,10 @@ void CLR_RT_Thread::Passivate() //--// - if (m_waitForObject != NULL) + if (m_waitForObject != nullptr) { g_CLR_RT_EventCache.Append_Node(m_waitForObject); - m_waitForObject = NULL; + m_waitForObject = nullptr; } //--// @@ -483,7 +502,7 @@ void CLR_RT_Thread::Passivate() m_status = CLR_RT_Thread::TH_S_Unstarted; } - m_currentException.SetObjectReference(NULL); // Reset exception flag. + m_currentException.SetObjectReference(nullptr); // Reset exception flag. // // If the thread is associated with a timer, advance the state of the timer. @@ -491,7 +510,7 @@ void CLR_RT_Thread::Passivate() if (m_terminationCallback) { ThreadTerminationCallback terminationCallback = m_terminationCallback; - m_terminationCallback = NULL; + m_terminationCallback = nullptr; terminationCallback(m_terminationParameter); } @@ -499,7 +518,7 @@ void CLR_RT_Thread::Passivate() if (m_status == CLR_RT_Thread::TH_S_Terminated || m_status == CLR_RT_Thread::TH_S_Unstarted) { // This is used by Static constructor thread. - m_dlg = NULL; + m_dlg = nullptr; } ReleaseWhenDeadEx(); @@ -618,13 +637,13 @@ HRESULT CLR_RT_Thread::ProcessException_EndFilter() ProcessException_FilterPseudoFrameCopyVars(us.m_handlerStack, stack); // Clear the stack variable so Pop doesn't remove us from the UnwindStack. - us.m_stack = NULL; + us.m_stack = nullptr; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // We don't want to send any breakpoints until after we set the IP appropriately bool fBreakpointsDisabledSav = CLR_EE_DBG_IS(BreakpointsDisabled); CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING) stack->Pop(); @@ -633,7 +652,7 @@ HRESULT CLR_RT_Thread::ProcessException_EndFilter() { CLR_EE_DBG_CLR(BreakpointsDisabled); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING if (choice == 1) { @@ -644,7 +663,7 @@ HRESULT CLR_RT_Thread::ProcessException_EndFilter() us.m_handlerStack, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_DEPTH_EXCEPTION_HANDLER_FOUND, us.m_handlerBlockStart); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING } else { @@ -663,13 +682,13 @@ HRESULT CLR_RT_Thread::ProcessException_EndFilter() m_currentException.SetObjectReference(us.m_exception); NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING (void)ProcessException(); // Swap results around. ProcessException must return a success code in Thread::Execute and set m_currentException to // continue processing. Execute_IL must get a FAILED hr in order to break outside of the execution loop. - if (m_currentException.Dereference() == NULL) + if (m_currentException.Dereference() == nullptr) { // Return S_OK because exception handling is complete or handling is in-flight and needs to execute IL to // continue. @@ -701,7 +720,7 @@ HRESULT CLR_RT_Thread::ProcessException_EndFinally() if (FindEhBlock(stack, stack->m_IP - 1, ipLeave, eh, true)) { us.m_stack = stack; - us.m_exception = NULL; + us.m_exception = nullptr; us.m_ip = ipLeave; us.m_currentBlockStart = eh.m_handlerStart; us.m_currentBlockEnd = eh.m_handlerEnd; @@ -722,7 +741,7 @@ HRESULT CLR_RT_Thread::ProcessException_EndFinally() { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Step(stack, stack->m_IP); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING NANOCLR_SET_AND_LEAVE(S_OK); } @@ -736,7 +755,7 @@ HRESULT CLR_RT_Thread::ProcessException_EndFinally() // Similar to EndFilter, we need to swap the return codes around. Thread::Execute needs a success code or the // thread will be aborted. ExecuteIL needs a failure code or we'll continue to execute IL when we possibly // shouldn't. - if (m_currentException.Dereference() == NULL) + if (m_currentException.Dereference() == nullptr) { // Return S_OK because exception handling is complete or handling is in-flight and needs to execute IL to // continue. @@ -779,14 +798,14 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() } // Search for a willing catch handler. - while (stack->Caller() != NULL) + while (stack->Caller() != nullptr) { #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (g_CLR_RT_ExecutionEngine.m_breakpointsNum && us.GetPhase() < UnwindStack::p_1_SearchingForHandler_2_SentUsersChance && stack->m_IP) { // We have a debugger attached and we need to send some messages before we start searching. - // These messages should only get sent when the search reaches managed code. Stack::Push sets m_IP to NULL - // for native code, so therefore we need IP to be non-NULL + // These messages should only get sent when the search reaches managed code. Stack::Push sets m_IP to + // NULL for native code, so therefore we need IP to be non-NULL us.m_handlerStack = stack; @@ -795,7 +814,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() g_CLR_RT_ExecutionEngine.Breakpoint_Exception( stack, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_DEPTH_EXCEPTION_FIRST_CHANCE, - NULL); + nullptr); us.SetPhase(UnwindStack::p_1_SearchingForHandler_1_SentFirstChance); // Break out here, because of synchronization issues (false positives) with JMC checking. @@ -813,7 +832,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() g_CLR_RT_ExecutionEngine.Breakpoint_Exception( stack, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_DEPTH_EXCEPTION_USERS_CHANCE, - NULL); + nullptr); us.SetPhase(UnwindStack::p_1_SearchingForHandler_2_SentUsersChance); if (CLR_EE_DBG_IS(Stopped)) { @@ -821,15 +840,15 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() } } } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING if (stack->m_call.target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) { CLR_PMETADATA ip; if (us.m_ip) { - ip = us.m_ip; // Use the IP set by endfilter - us.m_ip = NULL; // Reset to prevent catch block & PopEH issues via 'leave' or 'endfinally' + ip = us.m_ip; // Use the IP set by endfilter + us.m_ip = nullptr; // Reset to prevent catch block & PopEH issues via 'leave' or 'endfinally' } else { @@ -838,7 +857,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() if (ip) // No IP? Either out of memory during allocation of stack frame or native method. { - if (FindEhBlock(stack, ip, NULL, eh, false)) + if (FindEhBlock(stack, ip, nullptr, eh, false)) { // There are two cases here: // 1. We found a catch block... in this case, we want to break out and go to phase 2. // 2. We found a filter... in this case, we want to duplicate the stack and execute the filter. @@ -858,7 +877,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() if (eh.IsFilter()) { - CLR_RT_StackFrame *newStack = NULL; + CLR_RT_StackFrame *newStack = nullptr; // Store the IP range that we're currently executing so leave/PopEH doesn't accidentally pop the // filter off. @@ -872,7 +891,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() // We don't want to send any breakpoints until after we set the IP appropriately bool fBreakpointsDisabledSav = CLR_EE_DBG_IS(BreakpointsDisabled); CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING hr = CLR_RT_StackFrame::Push(stack->m_owningThread, stack->m_call, ArgumentsCount); @@ -881,7 +900,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() { CLR_EE_DBG_CLR(BreakpointsDisabled); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING if (FAILED(hr)) { // We probably ran out of memory. In either case, don't run this handler. @@ -918,13 +937,13 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() newStack->m_IP = eh.m_userFilterStart; // We are willing to execute IL again so clear the m_currentException flag. - m_currentException.SetObjectReference(NULL); + m_currentException.SetObjectReference(nullptr); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Push( newStack, CLR_DBG_Commands::Debugging_Execution_BreakpointDef::c_DEPTH_STEP_INTERCEPT); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING // Return a success value to break out of ProcessException and to signal that execution of IL // can continue. @@ -947,7 +966,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() goto ContinueAndExit; } } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING // We want to continue running EH "goo" code so leave m_currentException set and return // PROCESS_EXCEPTION @@ -962,7 +981,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() // Both of these shouldn't be set at once because of the two-pass handling mechanism. if (stack->m_flags & CLR_RT_StackFrame::c_AppDomainTransition) { - us.m_handlerStack = NULL; + us.m_handlerStack = nullptr; us.SetPhase(UnwindStack::p_2_RunningFinallys_0); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -979,19 +998,19 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() goto ContinueAndExit; } } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } if (stack->m_flags & CLR_RT_StackFrame::c_PseudoStackFrameForFilter) { - us.m_handlerStack = NULL; + us.m_handlerStack = nullptr; us.SetPhase(UnwindStack::p_2_RunningFinallys_0); NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } #ifndef NANOCLR_NO_IL_INLINE - if (stack->m_inlineFrame != NULL && tmpInline.m_IP == NULL) + if (stack->m_inlineFrame != nullptr && tmpInline.m_IP == nullptr) { stack->SaveStack(tmpInline); stack->RestoreFromInlineStack(); @@ -1001,7 +1020,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() if (tmpInline.m_IP) { stack->RestoreStack(tmpInline); - tmpInline.m_IP = NULL; + tmpInline.m_IP = nullptr; } #else { @@ -1011,7 +1030,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() } } - us.m_handlerStack = NULL; + us.m_handlerStack = nullptr; us.SetPhase(UnwindStack::p_2_RunningFinallys_0); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -1023,14 +1042,14 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() goto ContinueAndExit; } } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING // We want to continue running EH "goo" code so leave m_currentException set and return PROCESS_EXCEPTION NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) ContinueAndExit: -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING // There are multiple cases where we want to break out of this function, send debug messages, and then resume // exactly where we were. All of those cases jump to here. However, there are cases where we may be stopped but we @@ -1068,7 +1087,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() CLR_RT_ExceptionHandler eh; // Unwind the stack, running finally's as we go - while (iterStack->Caller() != NULL) + while (iterStack->Caller() != nullptr) { #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (g_CLR_RT_ExecutionEngine.m_breakpointsNum && iterStack == us.m_handlerStack && @@ -1080,7 +1099,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() iterStack->ResetStack(); // We are willing to execute IL again so clear the m_currentException flag. - m_currentException.SetObjectReference(NULL); + m_currentException.SetObjectReference(nullptr); // CPDE better reset the IP, or there are going to be issues. iterStack->m_flags |= CLR_RT_StackFrame::c_InvalidIP; @@ -1092,88 +1111,91 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() NANOCLR_SET_AND_LEAVE(S_OK); } else -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING + if (iterStack->m_call.target->flags & CLR_RECORD_METHODDEF::MD_HasExceptionHandlers) - { - if (iterStack->m_IP) // No IP? Either out of memory during allocation of iterStack frame or native method. { - // handlerBlockStart is used to not execute finally's who's protected blocks contain the handler itself. - // NULL is used when we're not in the handler stack frame to make it work in the case of recursive - // functions with filtered handlers. - if (FindEhBlock( - iterStack, - iterStack->m_IP, - (us.m_handlerStack == iterStack) ? us.m_handlerBlockStart : NULL, - eh, - true)) + if (iterStack + ->m_IP) // No IP? Either out of memory during allocation of iterStack frame or native method. { - // We have a finally block to process + // handlerBlockStart is used to not execute finally's who's protected blocks contain the handler + // itself. NULL is used when we're not in the handler stack frame to make it work in the case of + // recursive functions with filtered handlers. + if (FindEhBlock( + iterStack, + iterStack->m_IP, + (us.m_handlerStack == iterStack) ? us.m_handlerBlockStart : nullptr, + eh, + true)) + { + // We have a finally block to process - us.m_stack = iterStack; - us.m_ip = NULL; - us.m_currentBlockStart = eh.m_handlerStart; - us.m_currentBlockEnd = eh.m_handlerEnd; - us.SetPhase(UnwindStack::p_2_RunningFinallys_0); + us.m_stack = iterStack; + us.m_ip = nullptr; + us.m_currentBlockStart = eh.m_handlerStart; + us.m_currentBlockEnd = eh.m_handlerEnd; + us.SetPhase(UnwindStack::p_2_RunningFinallys_0); - m_currentException.SetObjectReference(NULL); // Reset exception flag. + m_currentException.SetObjectReference(nullptr); // Reset exception flag. - iterStack->ResetStack(); - iterStack->m_IP = eh.m_handlerStart; - iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; + iterStack->ResetStack(); + iterStack->m_IP = eh.m_handlerStart; + iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == nullptr) #endif - { - g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); - } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + { + g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); + } +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING - NANOCLR_SET_AND_LEAVE(S_OK); - } + NANOCLR_SET_AND_LEAVE(S_OK); + } - if (iterStack == us.m_handlerStack) - { + if (iterStack == us.m_handlerStack) + { #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL || 0 == (us.m_flags & UnwindStack::c_MagicCatchForInline)) + if (iterStack->m_inlineFrame == nullptr || + 0 == (us.m_flags & UnwindStack::c_MagicCatchForInline)) #endif - { - // We've popped off all stack frames above the target. - // Now we should run the exception handler. + { + // We've popped off all stack frames above the target. + // Now we should run the exception handler. - // Store the range of the block and the stack frame we're executing for PopEH - us.m_currentBlockStart = us.m_handlerBlockStart; - us.m_currentBlockEnd = us.m_handlerBlockEnd; - us.m_stack = us.m_handlerStack; - us.SetPhase(UnwindStack::p_3_RunningHandler); + // Store the range of the block and the stack frame we're executing for PopEH + us.m_currentBlockStart = us.m_handlerBlockStart; + us.m_currentBlockEnd = us.m_handlerBlockEnd; + us.m_stack = us.m_handlerStack; + us.SetPhase(UnwindStack::p_3_RunningHandler); - // Set the IP and push the exception object on the stack. - iterStack->m_IP = us.m_handlerBlockStart; - iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; + // Set the IP and push the exception object on the stack. + iterStack->m_IP = us.m_handlerBlockStart; + iterStack->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; - iterStack->ResetStack(); - iterStack->PushValue().SetObjectReference(us.m_exception); + iterStack->ResetStack(); + iterStack->PushValue().SetObjectReference(us.m_exception); - // We are willing to execute IL again so clear the m_currentException flag. - m_currentException.SetObjectReference(NULL); + // We are willing to execute IL again so clear the m_currentException flag. + m_currentException.SetObjectReference(nullptr); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == nullptr) #endif - { - g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); - } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) + { + g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); + } +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING - // Return a success value to break out of ProcessException and to signal that execution of IL - // can continue. - NANOCLR_SET_AND_LEAVE(S_OK); + // Return a success value to break out of ProcessException and to signal that execution of + // IL can continue. + NANOCLR_SET_AND_LEAVE(S_OK); + } } } } - } // We didn't find a finally block at this level... // Check to see if we trickled up to a pseudoiterStack frame that we created to execute a filter handler: @@ -1195,13 +1217,13 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() // Set IP so we can resume looking for the next filter. otherUnwindStack.m_ip = otherUnwindStack.m_currentBlockStart; - otherUnwindStack.m_stack = NULL; // Prevent Pop from taking this handler off the stack. + otherUnwindStack.m_stack = nullptr; // Prevent Pop from taking this handler off the stack. #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // We don't want to send any breakpoints until after we set the IP appropriately bool fBreakpointsDisabledSav = CLR_EE_DBG_IS(BreakpointsDisabled); CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING iterStack->Pop(); // No finally's for the current ip in this method, pop to the next. @@ -1210,7 +1232,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() { CLR_EE_DBG_CLR(BreakpointsDisabled); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING m_currentException.SetObjectReference(otherUnwindStack.m_exception); // Drop current exception, use old one. @@ -1236,7 +1258,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) bool fBreakpointsDisabledSav = CLR_EE_DBG_IS(BreakpointsDisabled); CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING #ifndef NANOCLR_NO_IL_INLINE if (iterStack->m_inlineFrame) @@ -1254,7 +1276,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() { CLR_EE_DBG_CLR(BreakpointsDisabled); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING // We are not ready to execute IL yet so do NOT clear m_currentException flag. // There still remains hope for this thread so return S_OK so ProcessException can get called again via @@ -1263,13 +1285,13 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() } #endif - us.m_stack = NULL; // Don't pop off the handler when we pop this stack frame + us.m_stack = nullptr; // Don't pop off the handler when we pop this stack frame #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) // We don't want to send any breakpoints until after we set the IP appropriately bool fBreakpointsDisabledSav = CLR_EE_DBG_IS(BreakpointsDisabled); CLR_EE_DBG_SET(BreakpointsDisabled); -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING #ifndef NANOCLR_NO_IL_INLINE if (iterStack->m_inlineFrame) @@ -1288,7 +1310,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() { CLR_EE_DBG_CLR(BreakpointsDisabled); } -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING } // If we reached this point, we've unwound the entire thread and have an unhandled exception. @@ -1309,7 +1331,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() // retrieved? } #endif //! BUILD_RTM -#endif //#if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); NANOCLR_NOCLEANUP(); } @@ -1319,7 +1341,7 @@ HRESULT CLR_RT_Thread::ProcessException() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_StackFrame *stack = CurrentFrame(); - UnwindStack *us = NULL; + UnwindStack *us = nullptr; // If the exception was thrown in the middle of an IL instruction, // back up the pointer to point to the executing instruction, not the next one. @@ -1345,11 +1367,11 @@ HRESULT CLR_RT_Thread::ProcessException() else { // Signal that we need a new handler pushed on the stack. - us = NULL; + us = nullptr; } } - if (us == NULL) + if (us == nullptr) { // Push a new handler on the unwind stack that will last until its handler gets executed or // something out-of-band forces the stack frame to get popped. diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index cd59f1e66c..2cb6ac3686 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -230,7 +230,7 @@ void CLR_RT_SignatureParser::Initialize_Interfaces(CLR_RT_Assembly *assm, const else { ParamCount = 0; - Signature = NULL; + Signature = nullptr; } Type = CLR_RT_SignatureParser::c_Interfaces; @@ -550,10 +550,10 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) { CLR_RT_SignatureParser sub; sub.Initialize_TypeSpec(Assembly, Assembly->GetTypeSpec(index)); - CLR_RT_SignatureParser::Element res; + CLR_RT_SignatureParser::Element dummyElement; int extraLevels = res.Levels; - NANOCLR_CHECK_HRESULT(sub.Advance(res)); + NANOCLR_CHECK_HRESULT(sub.Advance(dummyElement)); res.Levels += extraLevels; } @@ -666,7 +666,7 @@ bool CLR_RT_Assembly_Instance::InitializeFromIndex(const CLR_RT_Assembly_Index & } data = 0; - assembly = NULL; + assembly = nullptr; return false; } @@ -676,7 +676,7 @@ void CLR_RT_Assembly_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_Assembly_Index::Clear(); - assembly = NULL; + assembly = nullptr; } ////////////////////////////// @@ -704,8 +704,8 @@ bool CLR_RT_TypeSpec_Instance::InitializeFromIndex(const CLR_RT_TypeSpec_Index & } data = 0; - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; return false; } @@ -715,8 +715,8 @@ void CLR_RT_TypeSpec_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeSpec_Index::Clear(); - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; } bool CLR_RT_TypeSpec_Instance::ResolveToken(CLR_UINT32 token, CLR_RT_Assembly *assm) @@ -745,7 +745,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromReflection(const CLR_RT_ReflectionDe { NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_Index cls; - const CLR_RT_TypeDef_Index *ptr = NULL; + const CLR_RT_TypeDef_Index *ptr = nullptr; if (levels) *levels = reflex.levels; @@ -753,7 +753,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromReflection(const CLR_RT_ReflectionDe switch (reflex.kind) { case REFLECTION_TYPE: - if (reflex.levels > 0 && levels == NULL) + if (reflex.levels > 0 && levels == nullptr) { ptr = &g_CLR_RT_WellKnownTypes.Array; } @@ -791,8 +791,8 @@ bool CLR_RT_TypeDef_Instance::InitializeFromIndex(const CLR_RT_TypeDef_Index &in } data = 0; - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; return false; } @@ -910,8 +910,8 @@ void CLR_RT_TypeDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_Index::Clear(); - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; } // if type token is not generic, we are going to resolve from the assembly else from the heapblock that may contains @@ -1026,7 +1026,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( default: //// handle generic type from provided data - // if (sampleData != NULL) + // if (sampleData != nullptr) //{ // CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(*sampleData, *this); // m_assm = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; @@ -1108,7 +1108,7 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & data = index.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetFieldDef(Field()); - genericType = NULL; + genericType = nullptr; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1117,9 +1117,9 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & } data = 0; - assembly = NULL; - target = NULL; - genericType = NULL; + assembly = nullptr; + target = nullptr; + genericType = nullptr; return false; } @@ -1129,9 +1129,9 @@ void CLR_RT_FieldDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_FieldDef_Index::Clear(); - assembly = NULL; - target = NULL; - genericType = NULL; + assembly = nullptr; + target = nullptr; + genericType = nullptr; } bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) @@ -1155,7 +1155,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm target = assembly->GetFieldDef(Field()); // invalidate generic type - genericType = NULL; + genericType = nullptr; break; @@ -1196,7 +1196,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm target = assembly->GetFieldDef(index); // invalidate generic type - genericType = NULL; + genericType = nullptr; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1224,7 +1224,7 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index data = index.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetMethodDef(Method()); - genericType = NULL; + genericType = nullptr; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1233,9 +1233,9 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index } data = 0; - assembly = NULL; - target = NULL; - genericType = NULL; + assembly = nullptr; + target = nullptr; + genericType = nullptr; return false; } @@ -1245,9 +1245,9 @@ void CLR_RT_MethodDef_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Index::Clear(); - assembly = NULL; - target = NULL; - genericType = NULL; + assembly = nullptr; + target = nullptr; + genericType = nullptr; } bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) @@ -1295,7 +1295,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass target = assembly->GetMethodDef(Method()); // invalidate GenericType - genericType = NULL; + genericType = nullptr; } #if defined(NANOCLR_INSTANCE_NAMES) @@ -1311,7 +1311,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass target = assembly->GetMethodDef(index); // invalidate generic type - genericType = NULL; + genericType = nullptr; #if defined(NANOCLR_INSTANCE_NAMES) name = assembly->GetString(target->name); @@ -1431,8 +1431,8 @@ bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam } data = 0; - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; return false; } @@ -1442,8 +1442,8 @@ void CLR_RT_GenericParam_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_GenericParam_Index::Clear(); - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1462,8 +1462,8 @@ bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Ind } data = 0; - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; return false; } @@ -1473,8 +1473,8 @@ void CLR_RT_MethodSpec_Instance::Clear() NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodSpec_Index::Clear(); - assembly = NULL; - target = NULL; + assembly = nullptr; + target = nullptr; } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1731,9 +1731,9 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) } { - const CLR_RT_TypeDef_Index *cls = NULL; - const CLR_RT_ReflectionDef_Index *reflex = NULL; - const CLR_RT_TypeSpec_Index *genericType = NULL; + const CLR_RT_TypeDef_Index *cls = nullptr; + const CLR_RT_ReflectionDef_Index *reflex = nullptr; + const CLR_RT_TypeSpec_Index *genericType = nullptr; switch (dt) { @@ -2502,7 +2502,7 @@ HRESULT CLR_RT_Assembly::CreateInstance( NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); - if (szName != NULL) + if (szName != nullptr) { CLR_RT_UnicodeHelper::ConvertToUTF8(szName, strPath); @@ -2523,11 +2523,11 @@ bool CLR_RT_Assembly::ResolveAssemblyRef(bool fOutput) { const char *szName = GetString(src->name); - if (dst->target == NULL) + if (dst->target == nullptr) { CLR_RT_Assembly *target = g_CLR_RT_TypeSystem.FindAssembly(szName, &src->version, false); - if (target == NULL || (target->flags & CLR_RT_Assembly::Resolved) == 0) + if (target == nullptr || (target->flags & CLR_RT_Assembly::Resolved) == 0) { #if !defined(BUILD_RTM) if (fOutput) @@ -2567,14 +2567,14 @@ void CLR_RT_Assembly::DestroyInstance() NATIVE_PROFILE_CLR_CORE(); if (assemblyIndex) { - g_CLR_RT_TypeSystem.m_assemblies[assemblyIndex - 1] = NULL; + g_CLR_RT_TypeSystem.m_assemblies[assemblyIndex - 1] = nullptr; } #if defined(VIRTUAL_DEVICE) - if (this->path != NULL) + if (this->path != nullptr) { delete this->path; - this->path = NULL; + this->path = nullptr; } #endif @@ -2634,7 +2634,7 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() else { CLR_RT_Assembly *assm = crossReferenceAssemblyRef[src->scope].target; - if (assm == NULL) + if (assm == nullptr) { NANOCLR_MSG_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: assm is null\n"); } @@ -2821,7 +2821,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() CLR_RT_TypeSpec_Instance typeSpecInstance; bool fGot = false; - const char *name = NULL; + const char *name = nullptr; switch (src->Owner()) { @@ -3153,7 +3153,7 @@ HRESULT CLR_RT_AppDomain::CreateInstance(const char *szName, CLR_RT_AppDomain *& NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_HeapBlock name; - name.SetObjectReference(NULL); + name.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(name); if (!szName || szName[0] == '\0') @@ -3219,10 +3219,10 @@ void CLR_RT_AppDomain::AppDomain_Initialize() m_state = CLR_RT_AppDomain::AppDomainState_Loaded; m_id = g_CLR_RT_ExecutionEngine.m_appDomainIdNext++; - m_globalLock = NULL; - m_strName = NULL; - m_outOfMemoryException = NULL; - m_appDomainAssemblyLastAccess = NULL; + m_globalLock = nullptr; + m_strName = nullptr; + m_outOfMemoryException = nullptr; + m_appDomainAssemblyLastAccess = nullptr; } void CLR_RT_AppDomain::AppDomain_Uninitialize() @@ -3251,13 +3251,13 @@ HRESULT CLR_RT_AppDomain::LoadAssembly(CLR_RT_Assembly *assm) NANOCLR_HEADER(); CLR_RT_AppDomain *appDomainSav = g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(this); - CLR_RT_AppDomainAssembly *appDomainAssembly = NULL; + CLR_RT_AppDomainAssembly *appDomainAssembly = nullptr; int i; FAULT_ON_NULL(assm); // check to make sure the assembly is not already loaded - if (FindAppDomainAssembly(assm) != NULL) + if (FindAppDomainAssembly(assm) != nullptr) NANOCLR_SET_AND_LEAVE(S_OK); #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) @@ -3274,7 +3274,7 @@ HRESULT CLR_RT_AppDomain::LoadAssembly(CLR_RT_Assembly *assm) NANOCLR_CHECK_HRESULT(CLR_RT_AppDomainAssembly::CreateInstance(this, assm, appDomainAssembly)); - if (m_outOfMemoryException == NULL) + if (m_outOfMemoryException == nullptr) { // Allocate an out of memory exception. We should never get into a case where an out of memory exception // cannot be thrown. @@ -3310,7 +3310,7 @@ HRESULT CLR_RT_AppDomain::GetManagedObject(CLR_RT_HeapBlock &res) CLR_RT_AppDomain *appDomainSav = g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(this); - res.SetObjectReference(NULL); + res.SetObjectReference(nullptr); // Check if a managed object is already present, and use it NANOCLR_FOREACH_NODE(CLR_RT_ObjectToEvent_Source, ref, m_references) @@ -3356,7 +3356,7 @@ HRESULT CLR_RT_AppDomain::GetManagedObject(CLR_RT_HeapBlock &res) CLR_RT_AppDomainAssembly *CLR_RT_AppDomain::FindAppDomainAssembly(CLR_RT_Assembly *assm) { NATIVE_PROFILE_CLR_CORE(); - if (m_appDomainAssemblyLastAccess != NULL && m_appDomainAssemblyLastAccess->m_assembly == assm) + if (m_appDomainAssemblyLastAccess != nullptr && m_appDomainAssemblyLastAccess->m_assembly == assm) { return m_appDomainAssemblyLastAccess; } @@ -3372,7 +3372,7 @@ CLR_RT_AppDomainAssembly *CLR_RT_AppDomain::FindAppDomainAssembly(CLR_RT_Assembl } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } void CLR_RT_AppDomain::Relocate() @@ -3404,11 +3404,11 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock NANOCLR_HEADER(); // This function marshals an object from appDomainSrc to 'this' AppDomain - // If appDomainSrc == NULL, this uses the current AppDomain + // If appDomainSrc == nullptr, this uses the current AppDomain CLR_RT_AppDomain *appDomainDst = this; - CLR_RT_HeapBlock *proxySrc = NULL; - CLR_RT_HeapBlock *mbroSrc = NULL; + CLR_RT_HeapBlock *proxySrc = nullptr; + CLR_RT_HeapBlock *mbroSrc = nullptr; bool fSimpleAssign = false; CLR_RT_TypeDef_Index indexVerify = g_CLR_RT_WellKnownTypes.m_Object; NanoCLRDataType dtSrc = src.DataType(); @@ -3431,7 +3431,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock // fSimpleAssign = (appDomainSrc == appDomainDst); fSimpleAssign = fSimpleAssign || (dtSrc <= DATATYPE_LAST_PRIMITIVE_TO_MARSHAL); - fSimpleAssign = fSimpleAssign || (dtSrc == DATATYPE_OBJECT && src.Dereference() == NULL); + fSimpleAssign = fSimpleAssign || (dtSrc == DATATYPE_OBJECT && src.Dereference() == nullptr); #if !defined(NANOCLR_NO_ASSEMBLY_STRINGS) fSimpleAssign = fSimpleAssign || (dtSrc == DATATYPE_STRING && !src.StringAssembly()); @@ -3487,7 +3487,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock { dst.Assign(src); } - else if (proxySrc != NULL) + else if (proxySrc != nullptr) { // src is OBJECT->TRANSPARENT_PROXY->CLASS, and we are marshalling into 'this' appDomain // dst is OBJECT->CLASS @@ -3495,7 +3495,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock dst.SetObjectReference(proxySrc->TransparentProxyDereference()); } - else if (mbroSrc != NULL) + else if (mbroSrc != nullptr) { // src is a MarshalByRefObject that we are marshalling outside of its AppDomain // src is OBJECT->CLASS @@ -3512,7 +3512,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock else { CLR_RT_HeapBlock blk; - blk.SetObjectReference(NULL); + blk.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(blk); bool fNoCompaction = CLR_EE_DBG_IS(NoCompaction); @@ -3522,10 +3522,10 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock CLR_EE_DBG_SET(NoCompaction); NANOCLR_CHECK_HRESULT( - CLR_RT_BinaryFormatter::Serialize(blk, src, NULL, CLR_RT_BinaryFormatter::c_Flags_Marshal)); + CLR_RT_BinaryFormatter::Serialize(blk, src, nullptr, CLR_RT_BinaryFormatter::c_Flags_Marshal)); (void)g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(appDomainDst); - hr = CLR_RT_BinaryFormatter::Deserialize(dst, blk, NULL, CLR_RT_BinaryFormatter::c_Flags_Marshal); + hr = CLR_RT_BinaryFormatter::Deserialize(dst, blk, nullptr, CLR_RT_BinaryFormatter::c_Flags_Marshal); CLR_EE_DBG_RESTORE(NoCompaction, fNoCompaction); } @@ -3578,7 +3578,7 @@ HRESULT CLR_RT_AppDomain::MarshalParameters( } else //! fOnReturn { - CLR_RT_HeapBlock *dstPtr = NULL; + CLR_RT_HeapBlock *dstPtr = nullptr; if (dtSrc == DATATYPE_BYREF) { @@ -3624,7 +3624,7 @@ HRESULT CLR_RT_AppDomain::GetAssemblies(CLR_RT_HeapBlock &ref) NANOCLR_HEADER(); int count = 0; - CLR_RT_HeapBlock *pArray = NULL; + CLR_RT_HeapBlock *pArray = nullptr; for (int pass = 0; pass < 2; pass++) { @@ -3892,7 +3892,7 @@ static const MethodIndexLookup c_MethodIndexLookup[] = { void CLR_RT_Assembly::ResolveTypeDef() { NATIVE_PROFILE_CLR_CORE(); - const TypeIndexLookup *tilOuterClass = NULL; + const TypeIndexLookup *tilOuterClass = nullptr; const TypeIndexLookup *til = c_TypeIndexLookup; for (size_t i = 0; i < ARRAYSIZE(c_TypeIndexLookup); i++, til++) @@ -3901,7 +3901,7 @@ void CLR_RT_Assembly::ResolveTypeDef() if (NANOCLR_INDEX_IS_INVALID(dst)) { - if (til->nameSpace == NULL) + if (til->nameSpace == nullptr) { if (tilOuterClass) { @@ -3914,7 +3914,7 @@ void CLR_RT_Assembly::ResolveTypeDef() } } - if (til->nameSpace != NULL) + if (til->nameSpace != nullptr) { tilOuterClass = til; } @@ -4045,9 +4045,9 @@ HRESULT CLR_RT_Assembly::PrepareForExecution() ITERATE_THROUGH_RECORDS(this, i, AssemblyRef, ASSEMBLYREF) { - _ASSERTE(dst->target != NULL); + _ASSERTE(dst->target != nullptr); - if (dst->target != NULL) + if (dst->target != nullptr) { NANOCLR_CHECK_HRESULT(dst->target->PrepareForExecution()); } @@ -4665,7 +4665,7 @@ void CLR_RT_TypeSystem::TypeSystem_Cleanup() { pASSM->DestroyInstance(); - *ppASSM = NULL; + *ppASSM = nullptr; } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -4715,7 +4715,7 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R if (!strcmp(pASSM->name, szName)) { // if there is no version information, anything goes - if (NULL == ver) + if (nullptr == ver) { return pASSM; } @@ -4740,7 +4740,7 @@ CLR_RT_Assembly *CLR_RT_TypeSystem::FindAssembly(const char *szName, const CLR_R } NANOCLR_FOREACH_ASSEMBLY_END(); - return NULL; + return nullptr; } bool CLR_RT_TypeSystem::FindTypeDef( @@ -4810,8 +4810,8 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, if (hal_strlen_s(szClass) < ARRAYSIZE(rgNamespace)) { const char *szPtr = szClass; - const char *szPtr_LastDot = NULL; - const char *szPtr_FirstSubType = NULL; + const char *szPtr_LastDot = nullptr; + const char *szPtr_FirstSubType = nullptr; char c; size_t len; @@ -4864,10 +4864,14 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, { c = szPtr_FirstSubType[0]; if (!c) + { break; + } if (c == '+') + { break; + } szPtr_FirstSubType++; } @@ -4909,8 +4913,8 @@ bool CLR_RT_TypeSystem::FindTypeDef(const char *szClass, CLR_RT_Assembly *assm, if (hal_strlen_s(szClass) < ARRAYSIZE(rgNamespace)) { const char *szPtr = szClass; - const char *szPtr_LastDot = NULL; - const char *szPtr_FirstSubType = NULL; + const char *szPtr_LastDot = nullptr; + const char *szPtr_FirstSubType = nullptr; char c; size_t len; bool arrayType = false; @@ -5063,7 +5067,7 @@ HRESULT CLR_RT_TypeSystem::LocateResource( const CLR_RECORD_RESOURCE *resNext; const CLR_RECORD_RESOURCE *resZero; - res = NULL; + res = nullptr; size = 0; if (indexResourceFile < 0 || indexResourceFile >= pAssm->tablesSize[TBL_ResourcesFiles]) @@ -5080,7 +5084,7 @@ HRESULT CLR_RT_TypeSystem::LocateResource( res = (const CLR_RECORD_RESOURCE *) bsearch(&resourceT, resZero, resourceFile->numberOfResources, sizeof(CLR_RECORD_RESOURCE), CompareResource); - if (res != NULL) + if (res != nullptr) { // compute size here... // assert not the last resource @@ -5353,7 +5357,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(NANOCLR_APPDOMAINS) - if (g_CLR_RT_ExecutionEngine.m_outOfMemoryException == NULL) + if (g_CLR_RT_ExecutionEngine.m_outOfMemoryException == nullptr) { CLR_RT_HeapBlock exception; @@ -5650,7 +5654,7 @@ HRESULT CLR_RT_TypeSystem::BuildMethodName( NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if (genericType == NULL) + if (genericType == nullptr) { NANOCLR_CHECK_HRESULT(BuildTypeName(instOwner, szBuffer, iBuffer)); @@ -6014,7 +6018,7 @@ void CLR_RT_AttributeEnumerator::Initialize(CLR_RT_Assembly *assm) { NATIVE_PROFILE_CLR_CORE(); m_assm = assm; // CLR_RT_Assembly* m_assm; - m_ptr = NULL; // const CLR_RECORD_ATTRIBUTE* m_ptr; + m_ptr = nullptr; // const CLR_RECORD_ATTRIBUTE* m_ptr; m_num = 0; // int m_num; // CLR_RECORD_ATTRIBUTE m_data; m_match.Clear(); // CLR_RT_MethodDef_Index m_match; @@ -6055,7 +6059,7 @@ bool CLR_RT_AttributeEnumerator::Advance() CLR_UINT32 key = m_data.Key(); bool fRes = false; - if (ptr == NULL) + if (ptr == nullptr) { ptr = m_assm->GetAttribute(0) - 1; num = m_assm->tablesSize[TBL_Attributes]; @@ -6173,7 +6177,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has no fields, no properties and only default constructor m_lastValue.m_mode = Value::c_DefaultConstructor; - m_lastValue.m_name = NULL; + m_lastValue.m_name = nullptr; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(m_lastValue.m_value, m_td)); @@ -6188,7 +6192,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has a constructor with parameter(s) m_lastValue.m_mode = Value::c_ConstructorArgument; - m_lastValue.m_name = NULL; + m_lastValue.m_name = nullptr; // get type NANOCLR_CHECK_HRESULT(m_parser.Advance(m_res)); @@ -6324,7 +6328,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) } else { - res = NULL; + res = nullptr; NANOCLR_SET_AND_LEAVE(S_OK); } diff --git a/src/CLR/Core/Various.cpp b/src/CLR/Core/Various.cpp index a99f5b71e5..9365a5f6b3 100644 --- a/src/CLR/Core/Various.cpp +++ b/src/CLR/Core/Various.cpp @@ -7,103 +7,122 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -void CLR_RT_GetVersion( unsigned short int* pMajor, unsigned short int* pMinor, unsigned short int* pBuild, unsigned short int* pRevision ) +void CLR_RT_GetVersion( + unsigned short int *pMajor, + unsigned short int *pMinor, + unsigned short int *pBuild, + unsigned short int *pRevision) { NATIVE_PROFILE_CLR_CORE(); - if (pMajor) *pMajor = VERSION_MAJOR; - if (pMinor) *pMinor = VERSION_MINOR; - if (pBuild) *pBuild = VERSION_BUILD; - if (pRevision) *pRevision = VERSION_REVISION; + if (pMajor) + *pMajor = VERSION_MAJOR; + if (pMinor) + *pMinor = VERSION_MINOR; + if (pBuild) + *pBuild = VERSION_BUILD; + if (pRevision) + *pRevision = VERSION_REVISION; } //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_ArrayListHelper::PrepareArrayList( CLR_RT_HeapBlock& thisRef, int count, int capacity ) +HRESULT CLR_RT_ArrayListHelper::PrepareArrayList(CLR_RT_HeapBlock &thisRef, int count, int capacity) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* pThis = thisRef.Dereference(); FAULT_ON_NULL(pThis); + CLR_RT_HeapBlock *pThis = thisRef.Dereference(); + FAULT_ON_NULL(pThis); - if(count > capacity || capacity < 1) + if (count > capacity || capacity < 1) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); } - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pThis[ FIELD___items ], capacity, g_CLR_RT_WellKnownTypes.Object )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(pThis[FIELD___items], capacity, g_CLR_RT_WellKnownTypes.Object)); - pThis[ FIELD___size ].NumericByRef().s4 = count; + pThis[FIELD___size].NumericByRef().s4 = count; NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_ArrayListHelper::ExtractArrayFromArrayList( CLR_RT_HeapBlock & thisRef, CLR_RT_HeapBlock_Array* & array, int& count, int& capacity ) +HRESULT CLR_RT_ArrayListHelper::ExtractArrayFromArrayList( + CLR_RT_HeapBlock &thisRef, + CLR_RT_HeapBlock_Array *&array, + int &count, + int &capacity) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock* pThis; - CLR_RT_HeapBlock* items; + CLR_RT_HeapBlock *pThis; + CLR_RT_HeapBlock *items; - pThis = thisRef.Dereference(); FAULT_ON_NULL(pThis); - items = &pThis[ FIELD___items ]; + pThis = thisRef.Dereference(); + FAULT_ON_NULL(pThis); + items = &pThis[FIELD___items]; - if(items->DataType() != DATATYPE_OBJECT) + if (items->DataType() != DATATYPE_OBJECT) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - array = items->DereferenceArray(); FAULT_ON_NULL(array); + array = items->DereferenceArray(); + FAULT_ON_NULL(array); - if(array->DataType() != DATATYPE_SZARRAY) + if (array->DataType() != DATATYPE_SZARRAY) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } capacity = array->m_numOfElements; - count = pThis[ FIELD___size ].NumericByRef().s4; + count = pThis[FIELD___size].NumericByRef().s4; NANOCLR_NOCLEANUP(); } //--// -HRESULT CLR_RT_ByteArrayReader::Init( const unsigned char* src, unsigned int srcSize ) +HRESULT CLR_RT_ByteArrayReader::Init(const unsigned char *src, unsigned int srcSize) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (src == NULL || srcSize == 0) NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + if (src == nullptr || srcSize == 0) + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - source = src; + source = src; sourceSize = srcSize; NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_ByteArrayReader::Read( void* dst, unsigned int size ) +HRESULT CLR_RT_ByteArrayReader::Read(void *dst, unsigned int size) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (size > sourceSize) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + if (size > sourceSize) + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); - memcpy( dst, source, size ); + memcpy(dst, source, size); - source += size; + source += size; sourceSize -= size; NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_ByteArrayReader::Read1Byte( void* dst ) +HRESULT CLR_RT_ByteArrayReader::Read1Byte(void *dst) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (1 > sourceSize) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + if (1 > sourceSize) + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); - *(unsigned char*)dst = *source; + *(unsigned char *)dst = *source; source++; sourceSize--; @@ -111,14 +130,15 @@ HRESULT CLR_RT_ByteArrayReader::Read1Byte( void* dst ) NANOCLR_NOCLEANUP(); } -HRESULT CLR_RT_ByteArrayReader::Skip( unsigned int size ) +HRESULT CLR_RT_ByteArrayReader::Skip(unsigned int size) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - if (size > sourceSize) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); + if (size > sourceSize) + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); - source += size; + source += size; sourceSize -= size; NANOCLR_NOCLEANUP(); diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 8392708c5e..649db0ad42 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -19,7 +19,7 @@ CLR_DBG_Debugger *g_CLR_DBG_Debugger; -BlockStorageDevice *CLR_DBG_Debugger::m_deploymentStorageDevice = NULL; +BlockStorageDevice *CLR_DBG_Debugger::m_deploymentStorageDevice = nullptr; //--// @@ -128,7 +128,7 @@ HRESULT CLR_DBG_Debugger::CreateInstance() } else { - m_deploymentStorageDevice = NULL; + m_deploymentStorageDevice = nullptr; } // UNDONE: FIXME: MFUpdate_Initialize(); @@ -167,7 +167,7 @@ HRESULT CLR_DBG_Debugger::DeleteInstance() // free debugger platform_free(g_CLR_DBG_Debugger); - g_CLR_DBG_Debugger = NULL; + g_CLR_DBG_Debugger = nullptr; NANOCLR_NOCLEANUP_NOLABEL(); } @@ -212,7 +212,7 @@ CLR_RT_AppDomain *CLR_DBG_Debugger::GetAppDomainFromID(CLR_UINT32 id) } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } #endif // NANOCLR_APPDOMAINS @@ -233,7 +233,7 @@ CLR_RT_Thread *CLR_DBG_Debugger::GetThreadFromPid(CLR_INT32 pid) } NANOCLR_FOREACH_NODE_END(); - return NULL; + return nullptr; } HRESULT CLR_DBG_Debugger::CreateListOfThreads(CLR_DBG_Commands::Debugging_Thread_List::Reply *&cmdReply, int &totLen) @@ -379,7 +379,7 @@ bool CLR_DBG_Debugger::Monitor_Ping(WP_Message *msg) Monitor_Ping_Command *cmd = (Monitor_Ping_Command *)msg->m_payload; // default is to stop the debugger (backwards compatibility) - fStopOnBoot = (cmd != NULL) && (cmd->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); + fStopOnBoot = (cmd != nullptr) && (cmd->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); cmdReply.Source = Monitor_Ping_c_Ping_Source_NanoCLR; @@ -430,10 +430,10 @@ bool CLR_DBG_Debugger::Monitor_Ping(WP_Message *msg) Monitor_Ping_Reply *pingReply = (Monitor_Ping_Reply *)msg->m_payload; // default is to stop the debugger (backwards compatibility) - fStopOnBoot = (pingReply != NULL) && (pingReply->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); + fStopOnBoot = (pingReply != nullptr) && (pingReply->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); // done, send reply - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); } if (CLR_EE_DBG_IS_MASK(StateInitialize, StateMask)) @@ -455,10 +455,10 @@ bool CLR_DBG_Debugger::Monitor_FlashSectorMap(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - BlockStorageDevice *storageDevices = NULL; - BlockStorageDevice *device = NULL; - DeviceBlockInfo *devicesBlockInfos = NULL; - Flash_BlockRegionInfo *pData = NULL; + BlockStorageDevice *storageDevices = nullptr; + BlockStorageDevice *device = nullptr; + DeviceBlockInfo *devicesBlockInfos = nullptr; + Flash_BlockRegionInfo *pData = nullptr; bool success = false; unsigned int rangeCount = 0; unsigned int rangeIndex = 0; @@ -471,14 +471,14 @@ bool CLR_DBG_Debugger::Monitor_FlashSectorMap(WP_Message *msg) // get an array of pointer to all the storage devices in the list and then request the device info storageDevices = (BlockStorageDevice *)platform_malloc(numDevices * sizeof(BlockStorageDevice)); - if (storageDevices == NULL) + if (storageDevices == nullptr) { // allocation failed goto cmd_executed; } devicesBlockInfos = (DeviceBlockInfo *)platform_malloc(numDevices * sizeof(DeviceBlockInfo)); - if (devicesBlockInfos == NULL) + if (devicesBlockInfos == nullptr) { // allocation failed goto cmd_executed; @@ -501,7 +501,7 @@ bool CLR_DBG_Debugger::Monitor_FlashSectorMap(WP_Message *msg) // sanity check device = &storageDevices[i]; - if (device == NULL) + if (device == nullptr) { // failed goto cmd_executed; @@ -518,7 +518,7 @@ bool CLR_DBG_Debugger::Monitor_FlashSectorMap(WP_Message *msg) pData = (Flash_BlockRegionInfo *)platform_malloc(size); - if (pData == NULL) + if (pData == nullptr) { goto cmd_executed; } @@ -985,7 +985,7 @@ bool CLR_DBG_Debugger::Monitor_ReadMemory(WP_Message *msg) buffer = (uint8_t *)platform_malloc(allocationSize); // sanity check - if (buffer != NULL) + if (buffer != nullptr) { // clear allocated memory memset(buffer, 0, allocationSize); @@ -1041,7 +1041,7 @@ bool CLR_DBG_Debugger::Monitor_EraseMemory(WP_Message *msg) CLR_DBG_Commands_Monitor_EraseMemory *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)msg->m_payload; CLR_DBG_Commands_Monitor_EraseMemory_Reply cmdReply; - g_CLR_DBG_Debugger->AccessMemory(cmd->address, cmd->length, NULL, AccessMemory_Erase, &cmdReply); + g_CLR_DBG_Debugger->AccessMemory(cmd->address, cmd->length, nullptr, AccessMemory_Erase, &cmdReply); WP_ReplyToCommand(msg, true, false, &cmdReply, sizeof(cmdReply)); @@ -1059,7 +1059,7 @@ bool CLR_DBG_Debugger::Monitor_Execute(WP_Message *msg) return false; #endif - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); ((void (*)())(size_t)cmd->m_address)(); @@ -1086,7 +1086,7 @@ bool CLR_DBG_Debugger::Monitor_Reboot(WP_Message *msg) success = RequestToLaunchProprietaryBootloader(); } - WP_ReplyToCommand(msg, success, false, NULL, 0); + WP_ReplyToCommand(msg, success, false, nullptr, 0); // on success, apply reboot options and set reboot pending flag if (success) @@ -1122,7 +1122,7 @@ bool CLR_DBG_Debugger::Monitor_DeploymentMap(WP_Message *msg) { (void)msg; - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -1151,7 +1151,7 @@ bool CLR_DBG_Debugger::Monitor_QueryConfiguration(WP_Message *message) (HAL_Configuration_NetworkInterface *)platform_malloc(sizeof(HAL_Configuration_NetworkInterface)); // check allocation - if (configNetworkInterface != NULL) + if (configNetworkInterface != nullptr) { memset(configNetworkInterface, 0, sizeof(HAL_Configuration_NetworkInterface)); @@ -1179,7 +1179,7 @@ bool CLR_DBG_Debugger::Monitor_QueryConfiguration(WP_Message *message) (HAL_Configuration_Wireless80211 *)platform_malloc(sizeof(HAL_Configuration_Wireless80211)); // check allocation - if (configWireless80211NetworkInterface != NULL) + if (configWireless80211NetworkInterface != nullptr) { memset(configWireless80211NetworkInterface, 0, sizeof(HAL_Configuration_Wireless80211)); @@ -1219,7 +1219,7 @@ bool CLR_DBG_Debugger::Monitor_QueryConfiguration(WP_Message *message) x509Certificate = (HAL_Configuration_X509CaRootBundle *)platform_malloc(sizeOfBlock); // check allocation - if (x509Certificate != NULL) + if (x509Certificate != nullptr) { memset(x509Certificate, 0, sizeof(sizeOfBlock)); @@ -1466,7 +1466,7 @@ static bool GetInteropNativeAssemblies(uint8_t *&data, uint32_t *size, uint32_t data = (uint8_t *)platform_malloc(*size); // check for malloc failure - if (data == NULL) + if (data == nullptr) { return false; } @@ -1515,7 +1515,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_QueryCLRCapabilities(WP_Message *msg) CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities::ReplyUnion reply; reply.u_capsFlags = 0; - CLR_UINT8 *data = NULL; + CLR_UINT8 *data = nullptr; uint32_t size = 0; bool fSuccess = true; bool freeAllocFlag = false; @@ -1713,7 +1713,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_QueryCLRCapabilities(WP_Message *msg) WP_ReplyToCommand(msg, fSuccess, false, data, size); // check if we need to free data pointer - if (freeAllocFlag && data != NULL) + if (freeAllocFlag && data != nullptr) { platform_free(data); } @@ -1787,12 +1787,12 @@ static bool FillValues( memset(dst, 0, sizeof(*dst)); - dst->m_referenceID = (reference != NULL) ? reference : ptr; + dst->m_referenceID = (reference != nullptr) ? reference : ptr; dst->m_dt = ptr->DataType(); dst->m_flags = ptr->DataFlags(); dst->m_size = ptr->DataSize(); - if (pTD != NULL) + if (pTD != nullptr) { dst->m_td = *pTD; } @@ -1831,7 +1831,7 @@ static bool FillValues( { const char *text = ptr->StringText(); - if (text != NULL) + if (text != nullptr) { dst->m_charsInString = text; dst->m_bytesInString = (CLR_UINT32)hal_strlen_s(text); @@ -1844,7 +1844,7 @@ static bool FillValues( } else { - dst->m_charsInString = NULL; + dst->m_charsInString = nullptr; dst->m_bytesInString = 0; dst->m_builtinValue[0] = 0; } @@ -1853,7 +1853,7 @@ static bool FillValues( case DATATYPE_OBJECT: case DATATYPE_BYREF: - return FillValues(ptr->Dereference(), array, num, NULL, pTD); + return FillValues(ptr->Dereference(), array, num, nullptr, pTD); case DATATYPE_CLASS: case DATATYPE_VALUETYPE: @@ -1948,7 +1948,7 @@ bool CLR_DBG_Debugger::GetValue( return true; } - WP_ReplyToCommand(msg, false, false, NULL, 0); + WP_ReplyToCommand(msg, false, false, nullptr, 0); return false; } @@ -1969,7 +1969,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_SetCurrentAppDomain(WP_Message *msg) g_CLR_RT_ExecutionEngine.SetCurrentAppDomain(appDomain); } - WP_ReplyToCommand(msg, appDomain != NULL, false, NULL, 0); + WP_ReplyToCommand(msg, appDomain != nullptr, false, nullptr, 0); return true; #else @@ -1989,7 +1989,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_Breakpoints(WP_Message *msg) cmd->m_data, (msg->m_header.m_size - sizeof(cmd->m_flags)) / sizeof(CLR_DBG_Commands::Debugging_Execution_BreakpointDef)); - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -2022,7 +2022,7 @@ CLR_RT_Assembly *CLR_DBG_Debugger::IsGoodAssembly(CLR_INDEX indexAssm) } NANOCLR_FOREACH_ASSEMBLY_END(); - return NULL; + return nullptr; } bool CLR_DBG_Debugger::CheckTypeDef(const CLR_RT_TypeDef_Index &td, CLR_RT_TypeDef_Instance &inst) @@ -2092,7 +2092,7 @@ CLR_RT_StackFrame *CLR_DBG_Debugger::CheckStackFrame(CLR_INT32 pid, CLR_UINT32 d NANOCLR_FOREACH_NODE_END(); } - return NULL; + return nullptr; } //--// @@ -2103,13 +2103,13 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT NANOCLR_HEADER(); CLR_RT_HeapBlock ref; - ref.SetObjectReference(NULL); + ref.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(ref); - CLR_RT_Thread *realThread = (pid != 0) ? CLR_DBG_Debugger::GetThreadFromPid(pid) : NULL; + CLR_RT_Thread *realThread = (pid != 0) ? CLR_DBG_Debugger::GetThreadFromPid(pid) : nullptr; - th = NULL; + th = nullptr; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate::CreateInstance(ref, md, NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Delegate::CreateInstance(ref, md, nullptr)); NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.NewThread(th, ref.DereferenceDelegate(), ThreadPriority::Highest, -1)); @@ -2133,7 +2133,7 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT if (parser.Flags & PIMAGE_CEE_CS_CALLCONV_HASTHIS) { - args->SetObjectReference(NULL); + args->SetObjectReference(nullptr); numArgs--; args++; @@ -2175,7 +2175,7 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT if (th) { th->Terminate(); - th = NULL; + th = nullptr; } } @@ -2210,7 +2210,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_List(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_List::Reply *cmdReply = NULL; + CLR_DBG_Commands::Debugging_Thread_List::Reply *cmdReply = nullptr; int len = 0; if (FAILED(g_CLR_DBG_Debugger->CreateListOfThreads(cmdReply, len))) @@ -2232,7 +2232,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Stack(WP_Message *msg) NATIVE_PROFILE_CLR_DEBUGGER(); CLR_DBG_Commands::Debugging_Thread_Stack *cmd = (CLR_DBG_Commands::Debugging_Thread_Stack *)msg->m_payload; - CLR_DBG_Commands::Debugging_Thread_Stack::Reply *cmdReply = NULL; + CLR_DBG_Commands::Debugging_Thread_Stack::Reply *cmdReply = nullptr; int len = 0; if (FAILED(g_CLR_DBG_Debugger->CreateListOfCalls(cmd->m_pid, cmdReply, len))) @@ -2285,7 +2285,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Suspend(WP_Message *msg) th->Suspend(); } - WP_ReplyToCommand(msg, th != NULL, false, NULL, 0); + WP_ReplyToCommand(msg, th != nullptr, false, nullptr, 0); return true; } @@ -2302,7 +2302,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Resume(WP_Message *msg) th->Resume(); } - WP_ReplyToCommand(msg, th != NULL, false, NULL, 0); + WP_ReplyToCommand(msg, th != nullptr, false, nullptr, 0); return true; } @@ -2316,7 +2316,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) CLR_RT_HeapBlock *pThread; bool fFound = false; - if (th == NULL) + if (th == nullptr) { return false; } @@ -2334,14 +2334,14 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) NANOCLR_FOREACH_NODE(CLR_RT_ObjectToEvent_Source, src, th->m_references) { CLR_RT_HeapBlock *pManagedThread = src->m_objectPtr; - _ASSERTE(pManagedThread != NULL); + _ASSERTE(pManagedThread != nullptr); #if defined(NANOCLR_APPDOMAINS) { CLR_RT_ObjectToEvent_Source *appDomainSrc = CLR_RT_ObjectToEvent_Source::ExtractInstance( pManagedThread[Library_corlib_native_System_Threading_Thread::FIELD___appDomain]); - if (appDomainSrc == NULL) + if (appDomainSrc == nullptr) { break; } @@ -2401,8 +2401,8 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) } // try to get value - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, pThread, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, pThread, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, pThread, nullptr, nullptr); return true; } @@ -2414,7 +2414,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) CLR_DBG_Commands::Debugging_Thread_GetException *cmd = (CLR_DBG_Commands::Debugging_Thread_GetException *)msg->m_payload; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); - CLR_RT_HeapBlock *blk = NULL; + CLR_RT_HeapBlock *blk = nullptr; if (th) { @@ -2422,8 +2422,8 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) } // try to get value - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -2437,7 +2437,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Unwind(WP_Message *msg) CLR_RT_Thread *th; bool isInline = false; - if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != NULL) + if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != nullptr) { _ASSERTE((call->m_flags & CLR_RT_StackFrame::c_MethodKind_Native) == 0); @@ -2454,7 +2454,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Unwind(WP_Message *msg) us.SetPhase(CLR_RT_Thread::UnwindStack::p_2_RunningFinallys_0); } - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -2470,7 +2470,7 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) CLR_RT_StackFrame *call; bool isInline = false; - if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != NULL) + if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != nullptr) { #ifndef NANOCLR_NO_IL_INLINE if (isInline) @@ -2507,7 +2507,7 @@ bool CLR_DBG_Debugger::Debugging_Stack_SetIP(WP_Message *msg) CLR_RT_StackFrame *call; bool isInline = false; - if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != NULL) + if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != nullptr) { #ifndef NANOCLR_NO_IL_INLINE if (isInline) @@ -2523,7 +2523,7 @@ bool CLR_DBG_Debugger::Debugging_Stack_SetIP(WP_Message *msg) call->m_flags &= ~CLR_RT_StackFrame::c_InvalidIP; - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -2571,11 +2571,11 @@ static bool SetBlockHelper(CLR_RT_HeapBlock *blk, NanoCLRDataType dt, CLR_UINT8 { if (dt == DATATYPE_REFLECTION) { - fCanAssign = (dtDst == DATATYPE_OBJECT && blk->Dereference() == NULL); + fCanAssign = (dtDst == DATATYPE_OBJECT && blk->Dereference() == nullptr); } else if (dt == DATATYPE_OBJECT) { - fCanAssign = (src.Dereference() == NULL && dtDst == DATATYPE_REFLECTION); + fCanAssign = (src.Dereference() == nullptr && dtDst == DATATYPE_REFLECTION); } else { @@ -2614,7 +2614,7 @@ static CLR_RT_HeapBlock *GetScratchPad_Helper(int index) return (CLR_RT_HeapBlock *)array->GetElement(index); } - return NULL; + return nullptr; } //--// @@ -2629,7 +2629,7 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) if (cmd->m_size == 0) { - g_CLR_RT_ExecutionEngine.m_scratchPadArray = NULL; + g_CLR_RT_ExecutionEngine.m_scratchPadArray = nullptr; } else { @@ -2649,7 +2649,7 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) g_CLR_RT_ExecutionEngine.m_scratchPadArray = pNew; // done - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); } else { @@ -2668,7 +2668,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) CLR_RT_StackFrame *call; bool isInline = false; - if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != NULL) + if ((call = g_CLR_DBG_Debugger->CheckStackFrame(cmd->m_pid, cmd->m_depth, isInline)) != nullptr) { CLR_RT_HeapBlock *array; CLR_UINT32 num; @@ -2721,9 +2721,9 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) } CLR_RT_HeapBlock *blk = &array[cmd->m_index]; - CLR_RT_HeapBlock *reference = NULL; + CLR_RT_HeapBlock *reference = nullptr; CLR_RT_HeapBlock tmp; - CLR_RT_TypeDef_Instance *pTD = NULL; + CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_TypeDef_Instance td; if (cmd->m_kind != CLR_DBG_Commands::Debugging_Value_GetStack::c_EvalStack && IsBlockEnumMaybe(blk)) @@ -2778,8 +2778,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) CLR_RT_GenericParam_Index gpIndex; assembly->FindGenericParamAtMethodDef(md, res.GenericParamPosition, gpIndex); - CLR_RT_GenericParam_CrossReference gp = - assembly->crossReferenceGenericParam[gpIndex.GenericParam()]; + CLR_RT_GenericParam_CrossReference gp = assembly->crossReferenceGenericParam[gpIndex.GenericParam()]; targetClass = gp.classTypeDef; targetDataType = gp.dataType; @@ -2828,7 +2827,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, nullptr, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); return true; @@ -2843,15 +2842,15 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_GetField *cmd = (CLR_DBG_Commands::Debugging_Value_GetField *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - CLR_RT_HeapBlock *reference = NULL; + CLR_RT_HeapBlock *reference = nullptr; CLR_RT_HeapBlock tmp; CLR_RT_TypeDescriptor desc; CLR_RT_TypeDef_Instance td; - CLR_RT_TypeDef_Instance *pTD = NULL; + CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_FieldDef_Instance inst; CLR_UINT32 offset; - if (blk != NULL && cmd->m_offset > 0) + if (blk != nullptr && cmd->m_offset > 0) { if (FAILED(desc.InitializeFromObject(*blk))) { @@ -2887,7 +2886,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) return false; } - if (blk == NULL) + if (blk == nullptr) { blk = CLR_RT_ExecutionEngine::AccessStaticField(cmd->m_fd); } @@ -2941,7 +2940,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, nullptr, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); return true; @@ -2952,11 +2951,11 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) NATIVE_PROFILE_CLR_DEBUGGER(); CLR_DBG_Commands::Debugging_Value_GetArray *cmd = (CLR_DBG_Commands::Debugging_Value_GetArray *)msg->m_payload; - CLR_RT_HeapBlock *blk = NULL; - CLR_RT_HeapBlock *reference = NULL; + CLR_RT_HeapBlock *blk = nullptr; + CLR_RT_HeapBlock *reference = nullptr; CLR_RT_HeapBlock tmp; CLR_RT_HeapBlock ref; - CLR_RT_TypeDef_Instance *pTD = NULL; + CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_TypeDef_Instance td; tmp.SetObjectReference(cmd->m_heapblock); @@ -2992,7 +2991,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, NULL, 0); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD), false, nullptr, 0); return g_CLR_DBG_Debugger->GetValue(msg, blk, reference, pTD); return true; @@ -3005,8 +3004,8 @@ bool CLR_DBG_Debugger::Debugging_Value_GetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_GetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_GetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -3019,7 +3018,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetScratchPad(WP_Message *msg) (CLR_DBG_Commands::Debugging_Value_GetScratchPad *)msg->m_payload; CLR_RT_HeapBlock *blk = GetScratchPad_Helper(cmd->m_index); - WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); + WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); return true; } @@ -3031,8 +3030,8 @@ bool CLR_DBG_Debugger::Debugging_Value_SetBlock(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_SetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_SetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; - // WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -3050,7 +3049,7 @@ bool CLR_DBG_Debugger::Debugging_Value_SetArray(WP_Message *msg) // // We can only set values in arrays of primitive types. // - if (array != NULL && !array->m_fReference) + if (array != nullptr && !array->m_fReference) { CLR_RT_HeapBlock ref; @@ -3062,7 +3061,7 @@ bool CLR_DBG_Debugger::Debugging_Value_SetArray(WP_Message *msg) { if (SUCCEEDED(tmp.StoreToReference(ref, 0))) { - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); } } } @@ -3080,7 +3079,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_AllocateObject *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateObject *)msg->m_payload; - CLR_RT_HeapBlock *blk = NULL; + CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); if (ptr) @@ -3091,8 +3090,8 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -3103,7 +3102,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_AllocateString *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateString *)msg->m_payload; - CLR_RT_HeapBlock *blk = NULL; + CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); if (ptr) @@ -3124,8 +3123,8 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -3136,7 +3135,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) CLR_DBG_Commands::Debugging_Value_AllocateArray *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateArray *)msg->m_payload; - CLR_RT_HeapBlock *blk = NULL; + CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); if (ptr) @@ -3153,8 +3152,8 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) } } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blk, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr); return true; } @@ -3172,11 +3171,11 @@ bool CLR_DBG_Debugger::Profiling_Command(WP_Message *msg) switch (command) { case CLR_DBG_Commands::Profiling_Command::c_Command_ChangeConditions: - WP_ReplyToCommand(msg, dbg->Profiling_ChangeConditions(msg), false, NULL, 0); + WP_ReplyToCommand(msg, dbg->Profiling_ChangeConditions(msg), false, nullptr, 0); break; case CLR_DBG_Commands::Profiling_Command::c_Command_FlushStream: - WP_ReplyToCommand(msg, dbg->Profiling_FlushStream(msg), false, NULL, 0); + WP_ReplyToCommand(msg, dbg->Profiling_FlushStream(msg), false, nullptr, 0); break; default: @@ -3250,7 +3249,7 @@ static HRESULT AnalyzeObject_Helper(CLR_RT_HeapBlock *ptr, AnalyzeObject &ao) ao.m_ptr = ptr; - if (ptr == NULL || (ptr->DataType() == DATATYPE_OBJECT && ptr->Dereference() == NULL)) + if (ptr == nullptr || (ptr->DataType() == DATATYPE_OBJECT && ptr->Dereference() == nullptr)) { ao.m_fNull = true; ao.m_fBoxed = false; @@ -3301,7 +3300,7 @@ static HRESULT Assign_Helper(CLR_RT_HeapBlock *blkDst, CLR_RT_HeapBlock *blkSrc) AnalyzeObject aoDst; AnalyzeObject aoSrc; CLR_RT_HeapBlock srcVal; - srcVal.SetObjectReference(NULL); + srcVal.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(srcVal); NANOCLR_CHECK_HRESULT(AnalyzeObject_Helper(blkDst, aoDst)); @@ -3363,11 +3362,11 @@ bool CLR_DBG_Debugger::Debugging_Value_Assign(WP_Message *msg) if (blkDst && FAILED(Assign_Helper(blkDst, blkSrc))) { - blkDst = NULL; + blkDst = nullptr; } - // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL), false, NULL, 0); - return g_CLR_DBG_Debugger->GetValue(msg, blkDst, NULL, NULL); + // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blkDst, nullptr, nullptr), false, nullptr, 0); + return g_CLR_DBG_Debugger->GetValue(msg, blkDst, nullptr, nullptr); return true; } @@ -3499,20 +3498,15 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Assembly(WP_Message *msg) #endif // sanity check - if (cmdReply != NULL) + if (cmdReply != nullptr) { if (assm) { #if defined(VIRTUAL_DEVICE) // append path - if (assm->path != NULL) + if (assm->path != nullptr) { - sprintf_s( - cmdReply->m_szName, - ARRAYSIZE(cmdReply->m_szName), - "%s,%s", - assm->name, - assm->path->c_str()); + sprintf_s(cmdReply->m_szName, ARRAYSIZE(cmdReply->m_szName), "%s,%s", assm->name, assm->path->c_str()); } else #endif @@ -3560,7 +3554,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Type(WP_Message *msg) #endif // sanity check - if (cmdReply != NULL) + if (cmdReply != nullptr) { if (g_CLR_DBG_Debugger->CheckTypeDef(cmd->m_td, inst)) { @@ -3603,7 +3597,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Field(WP_Message *msg) #endif // sanity check - if (cmdReply != NULL) + if (cmdReply != nullptr) { if (g_CLR_DBG_Debugger->CheckFieldDef(cmd->m_fd, inst)) @@ -3654,7 +3648,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Method(WP_Message *msg) #endif // sanity check - if (cmdReply != NULL) + if (cmdReply != nullptr) { if (g_CLR_DBG_Debugger->CheckMethodDef(cmd->m_md, inst) && instOwner.InitializeFromMethod(inst)) @@ -3719,7 +3713,7 @@ bool CLR_DBG_Debugger::Debugging_Deployment_Status(WP_Message *msg) CLR_UINT32 deployLength = 0; // find the first device in list with DEPLOYMENT blocks - if (m_deploymentStorageDevice != NULL) + if (m_deploymentStorageDevice != nullptr) { BlockStorageStream stream; @@ -3761,7 +3755,7 @@ bool CLR_DBG_Debugger::Debugging_Deployment_Status(WP_Message *msg) CLR_RT_Memory::Release(cmdReply); - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -3844,7 +3838,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) g_CLR_DBG_Debugger->Debugging_Info_SetJMC_Type(idx, fJMC); } - WP_ReplyToCommand(msg, true, false, NULL, 0); + WP_ReplyToCommand(msg, true, false, nullptr, 0); return true; } @@ -3854,7 +3848,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) msg, g_CLR_DBG_Debugger->Debugging_Info_SetJMC_Type(cmd->m_data.m_type, fJMC), false, - NULL, + nullptr, 0); return true; @@ -3863,7 +3857,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) msg, g_CLR_DBG_Debugger->Debugging_Info_SetJMC_Method(cmd->m_data.m_method, fJMC), false, - NULL, + nullptr, 0); return true; @@ -3872,4 +3866,4 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) } } -#endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) +#endif // NANOCLR_ENABLE_SOURCELEVELDEBUGGING diff --git a/src/CLR/Debugger/Debugger_stub.cpp b/src/CLR/Debugger/Debugger_stub.cpp index 2690cc9592..77b8b39b53 100644 --- a/src/CLR/Debugger/Debugger_stub.cpp +++ b/src/CLR/Debugger/Debugger_stub.cpp @@ -73,21 +73,21 @@ __nfweak void NFReleaseInfo::Init( NFReleaseInfo.PlatformName[0] = 0; // fill each one, if it was provided - if (NULL != info) + if (nullptr != info) { len = MIN(infoLen, sizeof(NFReleaseInfo.InfoString) - 1); memcpy(NFReleaseInfo.InfoString, info, len); NFReleaseInfo.InfoString[len] = 0; } - if (NULL != target) + if (nullptr != target) { len = MIN(targetLen, sizeof(NFReleaseInfo.TargetName) - 1); memcpy(NFReleaseInfo.TargetName, target, len); NFReleaseInfo.TargetName[len] = 0; } - if (NULL != platform) + if (nullptr != platform) { len = MIN(platformLen, sizeof(NFReleaseInfo.PlatformName) - 1); memcpy(NFReleaseInfo.PlatformName, platform, len); diff --git a/src/CLR/Diagnostics/Diagnostics_stub.cpp b/src/CLR/Diagnostics/Diagnostics_stub.cpp index d85a1737f2..45a0212725 100644 --- a/src/CLR/Diagnostics/Diagnostics_stub.cpp +++ b/src/CLR/Diagnostics/Diagnostics_stub.cpp @@ -235,7 +235,7 @@ __nfweak const char *CLR_RT_DUMP::GETERRORMESSAGE(HRESULT hrError) (void)hrError; NATIVE_PROFILE_CLR_DIAGNOSTICS(); - return NULL; + return nullptr; } //--// @@ -247,7 +247,7 @@ __nfweak void *CLR_PROF_CounterCallChain::Prepare(CLR_PROF_Handler *handler) (void)handler; NATIVE_PROFILE_CLR_DIAGNOSTICS(); - return NULL; + return nullptr; } __nfweak void CLR_PROF_CounterCallChain::Complete(CLR_UINT64 &t, CLR_PROF_Handler *handler) @@ -404,7 +404,7 @@ __nfweak CLR_RT_HeapBlock *CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlo (void)ref; NATIVE_PROFILE_CLR_DIAGNOSTICS(); - return NULL; + return nullptr; } __nfweak void CLR_PRF_Profiler::DumpEndOfRefsList() diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 85235c4570..3a0b5c1468 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -12,7 +12,7 @@ #include #include -static std::string *s_redirectedString = NULL; +static std::string *s_redirectedString = nullptr; void CLR_Debug::RedirectToString(std::string *str) { @@ -177,11 +177,11 @@ void CLR_Debug::Emit(const char *text, int len) { unsigned long dwWritten; - ::WriteFile(hFile, text, (unsigned long)len, &dwWritten, NULL); + ::WriteFile(hFile, text, (unsigned long)len, &dwWritten, nullptr); if (s_CLR_RT_fTrace_RedirectLinesPerFile) { - while ((text = strchr(text, '\n')) != NULL) + while ((text = strchr(text, '\n')) != nullptr) { lines++; text++; @@ -286,7 +286,7 @@ int CLR_Debug::PrintfV(const char *format, va_list arg) #endif #ifndef VIRTUAL_DEVICE - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -446,7 +446,7 @@ const CLR_UINT8 *CLR_SkipBodyOfOpcodeCompressed(const CLR_UINT8 *ip, CLR_OPCODE const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ const CLR_RT_##tblName2##_Index *s = &crossReference##tblName[idx].target; \ if (s->data == 0) \ - s = NULL + s = nullptr #define LOOKUP_ELEMENT_IDX(idx, tblName, tblNameUC) \ const CLR_RECORD_##tblNameUC *p = Get##tblName(idx); \ @@ -517,7 +517,7 @@ void CLR_RT_Assembly::DumpToken(CLR_UINT32 token) case TBL_MethodDef: { LOOKUP_ELEMENT_IDX(index, MethodDef, METHODDEF); - CLR_RT_DUMP::METHOD(s, NULL); + CLR_RT_DUMP::METHOD(s, nullptr); break; } case TBL_MethodSpec: @@ -842,7 +842,7 @@ void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) { CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; - CLR_RT_DUMP::METHOD(dlg->DelegateFtn(), NULL); + CLR_RT_DUMP::METHOD(dlg->DelegateFtn(), nullptr); } break; @@ -943,7 +943,7 @@ void CLR_RT_DUMP::EXCEPTION(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock &ref) msg = Library_corlib_native_System_Exception::GetMessage(obj); - CLR_Debug::Printf(" ++++ Message: %s\r\n", msg == NULL ? "" : msg); + CLR_Debug::Printf(" ++++ Message: %s\r\n", msg == nullptr ? "" : msg); CLR_UINT32 depth; Library_corlib_native_System_Exception::StackTrace *stackTrace = @@ -954,7 +954,7 @@ void CLR_RT_DUMP::EXCEPTION(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock &ref) while (depth-- > 0) { CLR_Debug::Printf(" ++++ "); - CLR_RT_DUMP::METHOD(stackTrace->m_md, NULL); + CLR_RT_DUMP::METHOD(stackTrace->m_md, nullptr); CLR_Debug::Printf(" [IP: %04x] ++++\r\n", stackTrace->m_IP); stackTrace++; diff --git a/src/CLR/Diagnostics/Profile.cpp b/src/CLR/Diagnostics/Profile.cpp index b1e2fa4e4c..6602e6d00a 100644 --- a/src/CLR/Diagnostics/Profile.cpp +++ b/src/CLR/Diagnostics/Profile.cpp @@ -20,7 +20,7 @@ void *CLR_PROF_CounterCallChain::Prepare(CLR_PROF_Handler *handler) handler->m_target_Mode = CLR_PROF_Handler::c_Mode_Ignore; - return NULL; + return nullptr; } else { @@ -39,8 +39,8 @@ void CLR_PROF_CounterCallChain::Complete(CLR_UINT64 &t, CLR_PROF_Handler *handle { m_time_exclusive += t; - m_owningHandler->m_target = NULL; - m_owningHandler = NULL; + m_owningHandler->m_target = nullptr; + m_owningHandler = nullptr; } } @@ -111,7 +111,7 @@ void CLR_PROF_Handler::Constructor() m_target_Mode = c_Mode_Ignore; - Init(NULL); + Init(nullptr); } #if defined(NANOCLR_PROFILE_NEW_CALLS) @@ -169,13 +169,13 @@ void CLR_PROF_Handler::Init(void *target) if (m_target) { - if (m_containing && m_containing->m_target == NULL) + if (m_containing && m_containing->m_target == nullptr) { - m_target = NULL; + m_target = nullptr; } } - if (m_target == NULL) + if (m_target == nullptr) { m_target_Mode = c_Mode_Ignore; } @@ -201,7 +201,7 @@ void CLR_PROF_Handler::Calibrate() if (s_initialized) return; - s_current = NULL; + s_current = nullptr; s_time_overhead = 0; s_time_freeze = 0; s_time_adjusted = 0; diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 2837940c76..59c6502c9b 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -15,13 +15,12 @@ HRESULT CLR_PRF_Profiler::CreateInstance() NANOCLR_HEADER(); g_CLR_PRF_Profiler.m_packetSeqId = 0; - g_CLR_PRF_Profiler.m_stream = NULL; - g_CLR_PRF_Profiler.m_lastTimestamp = (CLR_UINT32)( - (CLR_UINT64)(HAL_Time_CurrentTime() + ((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1)) >> - CLR_PRF_CMDS::Bits::TimestampShift); + g_CLR_PRF_Profiler.m_stream = nullptr; + g_CLR_PRF_Profiler.m_lastTimestamp = + (CLR_UINT32)((CLR_UINT64)(HAL_Time_CurrentTime() + ((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1)) >> CLR_PRF_CMDS::Bits::TimestampShift); g_CLR_PRF_Profiler.m_currentAssembly = 0; g_CLR_PRF_Profiler.m_currentThreadPID = 0; - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(g_CLR_PRF_Profiler.m_stream, NULL, 0)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(g_CLR_PRF_Profiler.m_stream, nullptr, 0)); NANOCLR_NOCLEANUP(); } @@ -123,7 +122,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() _ASSERTE(fin->m_object->DataType() != DATATYPE_FREEBLOCK); _ASSERTE(fin->m_object->DataType() != DATATYPE_CACHEDBLOCK); - DumpRoot(fin->m_object, CLR_PRF_CMDS::RootTypes::Root_Finalizer, 0, NULL); + DumpRoot(fin->m_object, CLR_PRF_CMDS::RootTypes::Root_Finalizer, 0, nullptr); } NANOCLR_FOREACH_NODE_END(); @@ -133,7 +132,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() _ASSERTE(fin->m_object->DataType() != DATATYPE_FREEBLOCK); _ASSERTE(fin->m_object->DataType() != DATATYPE_CACHEDBLOCK); - DumpRoot(fin->m_object, CLR_PRF_CMDS::RootTypes::Root_Finalizer, 0, NULL); + DumpRoot(fin->m_object, CLR_PRF_CMDS::RootTypes::Root_Finalizer, 0, nullptr); } NANOCLR_FOREACH_NODE_END(); @@ -141,7 +140,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() // Iterate through all the appdomains NANOCLR_FOREACH_NODE(CLR_RT_AppDomain, appDomain, g_CLR_RT_ExecutionEngine.m_appDomains) { - DumpRoot(appDomain, CLR_PRF_CMDS::RootTypes::Root_AppDomain, 0, NULL); + DumpRoot(appDomain, CLR_PRF_CMDS::RootTypes::Root_AppDomain, 0, nullptr); } NANOCLR_FOREACH_NODE_END(); #endif @@ -149,7 +148,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() // Iterate through all the assemblies. NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - DumpRoot(pASSM, CLR_PRF_CMDS::RootTypes::Root_Assembly, 0, NULL); + DumpRoot(pASSM, CLR_PRF_CMDS::RootTypes::Root_Assembly, 0, nullptr); } NANOCLR_FOREACH_ASSEMBLY_END(); @@ -161,7 +160,7 @@ HRESULT CLR_PRF_Profiler::DumpRoots() { NANOCLR_FOREACH_NODE(CLR_RT_Thread, th, *threadLists[list]) { - DumpRoot(th, CLR_PRF_CMDS::RootTypes::Root_Thread, 0, NULL); + DumpRoot(th, CLR_PRF_CMDS::RootTypes::Root_Thread, 0, nullptr); } NANOCLR_FOREACH_NODE_END(); } @@ -190,7 +189,7 @@ void CLR_PRF_Profiler::DumpRoot( } else { - _ASSERTE(source == NULL); + _ASSERTE(source == nullptr); } } @@ -469,7 +468,7 @@ CLR_RT_HeapBlock *CLR_PRF_Profiler::FindReferencedObject(CLR_RT_HeapBlock *ref) return ref; } } - return NULL; + return nullptr; } void CLR_PRF_Profiler::DumpEndOfRefsList() @@ -521,9 +520,8 @@ void CLR_PRF_Profiler::Timestamp() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); // Send Profiling Timestamp - CLR_UINT32 time = (CLR_UINT32)( - (HAL_Time_CurrentTime() + ((CLR_UINT64)((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1))) >> - CLR_PRF_CMDS::Bits::TimestampShift); + CLR_UINT32 time = + (CLR_UINT32)((HAL_Time_CurrentTime() + ((CLR_UINT64)((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1))) >> CLR_PRF_CMDS::Bits::TimestampShift); if (time > m_lastTimestamp) { m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Timestamp, CLR_PRF_CMDS::Bits::CommandHeader); @@ -903,4 +901,4 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() NANOCLR_NOCLEANUP(); } -#endif //#if defined(NANOCLR_PROFILE_NEW) +#endif // #if defined(NANOCLR_PROFILE_NEW) diff --git a/src/CLR/Include/nanoCLR_Interop.h b/src/CLR/Include/nanoCLR_Interop.h index 7c78645012..ba64aef847 100644 --- a/src/CLR/Include/nanoCLR_Interop.h +++ b/src/CLR/Include/nanoCLR_Interop.h @@ -298,7 +298,7 @@ template class CLR_RT_TypedArray public: CLR_RT_TypedArray() { - m_pData = NULL; + m_pData = nullptr; m_ElemCount = 0; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 68ab63673f..347808677a 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -90,8 +90,8 @@ class CLR_XmlUtil public: CLR_XmlUtil(/*[in]*/ const CLR_XmlUtil &xml); - CLR_XmlUtil(/*[in]*/ IXMLDOMDocument *xddDoc, /*[in]*/ const wchar_t *szRootTag = NULL); - CLR_XmlUtil(/*[in]*/ IXMLDOMNode *xdnRoot = NULL, /*[in]*/ const wchar_t *szRootTag = NULL); + CLR_XmlUtil(/*[in]*/ IXMLDOMDocument *xddDoc, /*[in]*/ const wchar_t *szRootTag = nullptr); + CLR_XmlUtil(/*[in]*/ IXMLDOMNode *xdnRoot = nullptr, /*[in]*/ const wchar_t *szRootTag = nullptr); ~CLR_XmlUtil(); @@ -106,17 +106,17 @@ class CLR_XmlUtil /*[in ]*/ const wchar_t *szFile, /*[in]*/ const wchar_t *szRootTag, /*[out]*/ bool &fLoaded, - /*[out]*/ bool *fFound = NULL); + /*[out]*/ bool *fFound = nullptr); HRESULT LoadAsStream( /*[in ]*/ IUnknown *pStream, /*[in]*/ const wchar_t *szRootTag, /*[out]*/ bool &fLoaded, - /*[out]*/ bool *fFound = NULL); + /*[out]*/ bool *fFound = nullptr); HRESULT LoadAsString( /*[in ]*/ BSTR bstrData, /*[in]*/ const wchar_t *szRootTag, /*[out]*/ bool &fLoaded, - /*[out]*/ bool *fFound = NULL); + /*[out]*/ bool *fFound = nullptr); HRESULT Save(/*[in ]*/ const wchar_t *szFile); HRESULT SaveAsStream(/*[out]*/ IUnknown **ppStream); HRESULT SaveAsString(/*[out]*/ BSTR *pbstrData); @@ -133,145 +133,145 @@ class CLR_XmlUtil HRESULT CreateNode( /*[in]*/ const wchar_t *szTag, /*[out]*/ IXMLDOMNode **pVal, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[out]*/ IXMLDOMAttribute **pValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[out]*/ _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[out]*/ std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[out]*/ signed int &lValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetValue( /*[in]*/ const wchar_t *szTag, /*[out]*/ _variant_t &vValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetValue( /*[in]*/ const wchar_t *szTag, /*[out]*/ _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT GetValue( /*[in]*/ const wchar_t *szTag, /*[out]*/ std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const wchar_t *szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ signed int lValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const _variant_t &vValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT ModifyValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ IXMLDOMAttribute **pValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ const wchar_t *szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, /*[in] */ signed int lValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const _variant_t &vValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const _bstr_t &bstrValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const std::wstring &szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT PutValue( /*[in]*/ const wchar_t *szTag, /*[in] */ const wchar_t *szValue, /*[out]*/ bool &fFound, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); HRESULT RemoveAttribute( /*[in]*/ const wchar_t *szTag, /*[in]*/ const wchar_t *szAttr, - /*[in]*/ IXMLDOMNode *pxdnNode = NULL); - HRESULT RemoveValue(/*[in]*/ const wchar_t *szTag, /*[in]*/ IXMLDOMNode *pxdnNode = NULL); - HRESULT RemoveNode(/*[in]*/ const wchar_t *szTag, /*[in]*/ IXMLDOMNode *pxdnNode = NULL); + /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); + HRESULT RemoveValue(/*[in]*/ const wchar_t *szTag, /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); + HRESULT RemoveNode(/*[in]*/ const wchar_t *szTag, /*[in]*/ IXMLDOMNode *pxdnNode = nullptr); }; //--// @@ -1250,7 +1250,7 @@ struct CLR_RT_SignatureParser CLR_INDEX index = 1; \ for (; iASSM--; ppASSM++, index++) \ { \ - if (*ppASSM == NULL) + if (*ppASSM == nullptr) #define NANOCLR_FOREACH_ASSEMBLY_NULL_END() \ } \ @@ -1627,13 +1627,13 @@ struct CLR_RT_AppDomain : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP CLR_RT_AppDomainAssembly *FindAppDomainAssembly(CLR_RT_Assembly *assm); - HRESULT MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock &dst, CLR_RT_AppDomain *appDomainSrc = NULL); + HRESULT MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock &dst, CLR_RT_AppDomain *appDomainSrc = nullptr); HRESULT MarshalParameters( CLR_RT_HeapBlock *callerArgs, CLR_RT_HeapBlock *calleeArgs, int count, bool fOnReturn, - CLR_RT_AppDomain *appDomainSrc = NULL); + CLR_RT_AppDomain *appDomainSrc = nullptr); HRESULT VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &index); HRESULT GetAssemblies(CLR_RT_HeapBlock &ref); @@ -2101,7 +2101,7 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index void Clear(); - bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller = NULL); + bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller = nullptr); //--// @@ -2677,7 +2677,7 @@ struct CLR_RT_StackFrame : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO RELOC { CLR_RT_HeapBlock &val = PushValue(); - val.SetObjectReference(NULL); + val.SetObjectReference(nullptr); return val; } @@ -3366,7 +3366,7 @@ struct CLR_RT_Thread : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP - N CLR_RT_AppDomain *CurrentAppDomain() const { CLR_RT_StackFrame *stack = CurrentFrame(); - return stack->Prev() ? stack->m_appDomain : NULL; + return stack->Prev() ? stack->m_appDomain : nullptr; } #endif @@ -3837,7 +3837,7 @@ struct CLR_RT_ExecutionEngine #define CLR_EE_REBOOT_CLR g_CLR_RT_ExecutionEngine.m_iReboot_Options = CLR_DBG_Commands::Monitor_Reboot::c_ClrOnly #define CLR_EE_DBG_EVENT_SEND(cmd, size, payload, flags) \ - ((g_CLR_DBG_Debugger->m_messaging != NULL) \ + ((g_CLR_DBG_Debugger->m_messaging != nullptr) \ ? g_CLR_DBG_Debugger->m_messaging->SendEvent(cmd, size, (unsigned char *)payload, flags) \ : false) diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 00071e91b9..52b39d4939 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -92,10 +92,10 @@ struct CLR_RT_HeapBlock #if defined(NANOCLR_EMULATED_FLOATINGPOINT) /*********************************************************/ // Keep in Sync with nanoHAL.h - //#define HAL_FLOAT_SHIFT 10 - //#define HAL_FLOAT_PRECISION 1000 - //#define HAL_DOUBLE_SHIFT 16 - //#define HAL_DOUBLE_PRECISION 10000 + // #define HAL_FLOAT_SHIFT 10 + // #define HAL_FLOAT_PRECISION 1000 + // #define HAL_DOUBLE_SHIFT 16 + // #define HAL_DOUBLE_PRECISION 10000 /*********************************************************/ static const int HB_FloatShift = 10; @@ -150,7 +150,6 @@ struct CLR_RT_HeapBlock CLR_UINT32 raw; } m_id; - union CLR_RT_HeapBlock_AtomicData { struct NodeLink { @@ -802,8 +801,8 @@ struct CLR_RT_HeapBlock void ClearData() { - m_data.nodeLink.nextBlock = NULL; - m_data.nodeLink.prevBlock = NULL; + m_data.nodeLink.nextBlock = nullptr; + m_data.nodeLink.prevBlock = nullptr; } void SetFlags(CLR_UINT8 flags) @@ -1072,7 +1071,7 @@ struct CLR_RT_HeapBlock CLR_RT_HeapBlock_Array *RecoverArrayHeader() const { - return (DataType() == DATATYPE_ARRAY_BYREF) ? m_data.arrayReference.array : NULL; + return (DataType() == DATATYPE_ARRAY_BYREF) ? m_data.arrayReference.array : nullptr; } //--// @@ -1089,7 +1088,7 @@ struct CLR_RT_HeapBlock } } - return NULL; + return nullptr; } //--// @@ -1162,18 +1161,18 @@ struct CLR_RT_HeapBlock //--// - void SetGenericType(const CLR_RT_TypeSpec_Index& genericType) + void SetGenericType(const CLR_RT_TypeSpec_Index &genericType) { m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_GENERICINST, 0, 1); m_data.genericInstance.genericType.data = genericType.data; } - const CLR_RT_TypeSpec_Index& ObjectGenericType() const + const CLR_RT_TypeSpec_Index &ObjectGenericType() const { return m_data.genericInstance.genericType; } - HRESULT SetGenericInstanceObject(const CLR_RT_TypeSpec_Index& genericType); + HRESULT SetGenericInstanceObject(const CLR_RT_TypeSpec_Index &genericType); //--// @@ -1396,7 +1395,7 @@ struct CLR_RT_HeapBlock cls *ptr; \ cls *ptr##Next; \ \ - for (ptr = (cls *)(lst).FirstNode(); (ptr##Next = (cls *)ptr->Next()) != NULL; ptr = ptr##Next) \ + for (ptr = (cls *)(lst).FirstNode(); (ptr##Next = (cls *)ptr->Next()) != nullptr; ptr = ptr##Next) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Next); @@ -1404,7 +1403,7 @@ struct CLR_RT_HeapBlock { \ cls *ptr##Next; \ \ - for (ptr = (cls *)(lst).FirstNode(); (ptr##Next = (cls *)ptr->Next()) != NULL; ptr = ptr##Next) \ + for (ptr = (cls *)(lst).FirstNode(); (ptr##Next = (cls *)ptr->Next()) != nullptr; ptr = ptr##Next) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Next); @@ -1413,7 +1412,7 @@ struct CLR_RT_HeapBlock cls *ptr; \ cls *ptr##Next; \ \ - for (ptr = (cls *)(startNode); (ptr##Next = (cls *)ptr->Next()) != NULL; ptr = ptr##Next) \ + for (ptr = (cls *)(startNode); (ptr##Next = (cls *)ptr->Next()) != nullptr; ptr = ptr##Next) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Next); @@ -1434,7 +1433,7 @@ struct CLR_RT_HeapBlock cls *ptr; \ cls *ptr##Prev; \ \ - for (ptr = (cls *)(lst).LastNode(); (ptr##Prev = (cls *)ptr->Prev()) != NULL; ptr = ptr##Prev) \ + for (ptr = (cls *)(lst).LastNode(); (ptr##Prev = (cls *)ptr->Prev()) != nullptr; ptr = ptr##Prev) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Prev); @@ -1442,7 +1441,7 @@ struct CLR_RT_HeapBlock { \ cls *ptr##Prev; \ \ - for (ptr = (cls *)(lst).LastNode(); (ptr##Prev = (cls *)ptr->Prev()) != NULL; ptr = ptr##Prev) \ + for (ptr = (cls *)(lst).LastNode(); (ptr##Prev = (cls *)ptr->Prev()) != nullptr; ptr = ptr##Prev) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Prev); @@ -1451,7 +1450,7 @@ struct CLR_RT_HeapBlock cls *ptr; \ cls *ptr##Prev; \ \ - for (ptr = (cls *)(startNode); (ptr##Prev = (cls *)ptr->Prev()) != NULL; ptr = ptr##Prev) \ + for (ptr = (cls *)(startNode); (ptr##Prev = (cls *)ptr->Prev()) != nullptr; ptr = ptr##Prev) \ { \ NANOCLR_FAULT_ON_EARLY_COLLECTION(ptr##Prev); @@ -1505,8 +1504,8 @@ struct CLR_RT_HeapBlock_Node : public CLR_RT_HeapBlock // // So we'll have to use the explicit check... // - // bool IsValidForward () const { return Next() != NULL; } - // bool IsValidBackward() const { return Prev() != NULL; } + // bool IsValidForward () const { return Next() != nullptr; } + // bool IsValidBackward() const { return Prev() != nullptr; } //--// @@ -1556,8 +1555,8 @@ struct CLR_RT_HeapBlock_Node : public CLR_RT_HeapBlock if (next) next->m_data.nodeLink.prevBlock = prev; - m_data.nodeLink.prevBlock = NULL; - m_data.nodeLink.nextBlock = NULL; + m_data.nodeLink.prevBlock = nullptr; + m_data.nodeLink.nextBlock = nullptr; } //--// @@ -1609,18 +1608,18 @@ struct CLR_RT_DblLinkedList CLR_RT_HeapBlock_Node *FirstValidNode() const { CLR_RT_HeapBlock_Node *res = m_first; - return res->Next() ? res : NULL; + return res->Next() ? res : nullptr; } CLR_RT_HeapBlock_Node *LastValidNode() const { CLR_RT_HeapBlock_Node *res = m_last; - return res->Prev() ? res : NULL; + return res->Prev() ? res : nullptr; } // Check that node pNode is not "dummy" tail or head node. static bool IsValidListNode(CLR_RT_HeapBlock_Node *pNode) { - return pNode->m_data.nodeLink.nextBlock != NULL && pNode->m_data.nodeLink.prevBlock != NULL; + return pNode->m_data.nodeLink.nextBlock != nullptr && pNode->m_data.nodeLink.prevBlock != nullptr; } CLR_RT_HeapBlock_Node *Head() const @@ -2374,7 +2373,7 @@ struct CLR_RT_HeapBlock_WeakReference : public CLR_RT_HeapBlock_Node // OBJECT H struct CLR_RT_HeapBlock_GenericInstance : public CLR_RT_HeapBlock_Node // OBJECT HEAP - DO RELOCATION - { - static HRESULT CreateInstance(CLR_RT_HeapBlock& reference, const CLR_RT_TypeSpec_Index& tsIndex); + static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, const CLR_RT_TypeSpec_Index &tsIndex); void Relocate(); }; diff --git a/src/CLR/Include/nanoCLR_Types.h b/src/CLR/Include/nanoCLR_Types.h index 8cc3c3d792..d9a2088b8e 100644 --- a/src/CLR/Include/nanoCLR_Types.h +++ b/src/CLR/Include/nanoCLR_Types.h @@ -37,7 +37,7 @@ #define NANOCLR_PARAMCHECK_POINTER(ptr) \ { \ - if (ptr == NULL) \ + if (ptr == nullptr) \ { \ hrInner = CLR_E_NULL_REFERENCE; \ } \ @@ -45,7 +45,7 @@ #define NANOCLR_PARAMCHECK_POINTER_AND_SET(ptr, val) \ { \ - if (ptr == NULL) \ + if (ptr == nullptr) \ { \ hrInner = CLR_E_NULL_REFERENCE; \ } \ @@ -57,7 +57,7 @@ #define NANOCLR_PARAMCHECK_NOTNULL(ptr) \ { \ - if (ptr == NULL) \ + if (ptr == nullptr) \ { \ hrInner = CLR_E_INVALID_PARAMETER; \ } \ @@ -65,7 +65,7 @@ #define NANOCLR_PARAMCHECK_STRING_NOT_EMPTY(ptr) \ { \ - if (ptr == NULL || ptr[0] == 0) \ + if (ptr == nullptr || ptr[0] == 0) \ { \ hrInner = CLR_E_INVALID_PARAMETER; \ } \ diff --git a/src/CLR/Messaging/Messaging.cpp b/src/CLR/Messaging/Messaging.cpp index 2e2eca81de..be03e36196 100644 --- a/src/CLR/Messaging/Messaging.cpp +++ b/src/CLR/Messaging/Messaging.cpp @@ -41,14 +41,14 @@ bool CLR_Messaging::AllocateAndQueueMessage( CLR_RT_HeapBlock_EndPoint::Message *rpc; CLR_RT_HeapBlock_EndPoint *ep; - if ((ep = CLR_RT_HeapBlock_EndPoint::FindEndPoint(port)) == NULL) + if ((ep = CLR_RT_HeapBlock_EndPoint::FindEndPoint(port)) == nullptr) return false; { CLR_RT_ProtectFromGC gc(*ep); if ((rpc = (CLR_RT_HeapBlock_EndPoint::Message *) - CLR_RT_Memory::Allocate(sizeof(*rpc) + length, CLR_RT_HeapBlock::HB_CompactOnFailure)) == NULL) + CLR_RT_Memory::Allocate(sizeof(*rpc) + length, CLR_RT_HeapBlock::HB_CompactOnFailure)) == nullptr) return false; rpc->ClearData(); @@ -77,7 +77,7 @@ bool CLR_Messaging::Messaging_Query(WP_Message *msg) CLR_Messaging_Commands::Messaging_Query::Reply res; CLR_RT_HeapBlock_EndPoint *ep = CLR_RT_HeapBlock_EndPoint::FindEndPoint(cmd->m_addr.m_to); - res.m_found = (ep != NULL); + res.m_found = (ep != nullptr); res.m_addr = cmd->m_addr; WP_ReplyToCommand(msg, true, false, &res, sizeof(res)); @@ -95,7 +95,7 @@ bool CLR_Messaging::Messaging_Query__Reply(WP_Message *msg) g_CLR_Messaging.AllocateAndQueueMessage( CLR_Messaging_Commands::c_Messaging_Query, 0, - NULL, + nullptr, cmd->m_addr.m_from, cmd->m_addr, cmd->m_found); @@ -203,7 +203,7 @@ bool CLR_Messaging::App_ProcessHeader(void *state, WP_Message *msg) { void *ptr = CLR_RT_Memory::Allocate(msg->m_header.m_size, CLR_RT_HeapBlock::HB_CompactOnFailure); - if (ptr == NULL) + if (ptr == nullptr) { TRACE0(TRACE_HEADERS, "Failed to allocate 0x%08X bytes for message payload!\n"); return false; @@ -235,11 +235,11 @@ bool CLR_Messaging::App_Release(void *state, WP_Message *msg) (void)state; NATIVE_PROFILE_CLR_MESSAGING(); - if (msg->m_payload != NULL) + if (msg->m_payload != nullptr) { CLR_RT_Memory::Release(msg->m_payload); - msg->m_payload = NULL; + msg->m_payload = nullptr; } return true; @@ -256,7 +256,7 @@ HRESULT CLR_Messaging::CreateInstance() NANOCLR_CLEAR(g_CLR_Messaging); - g_CLR_Messaging.Initialize(NULL, 0, NULL, 0); + g_CLR_Messaging.Initialize(nullptr, 0, nullptr, 0); NANOCLR_NOCLEANUP_NOLABEL(); } @@ -345,10 +345,10 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) //--// - CLR_Messaging_CommandHandlerLookups *tables = NULL; + CLR_Messaging_CommandHandlerLookups *tables = nullptr; int tableCount = CMD_HANDLER_LOOKUP_TABLE_SIZE; size_t num; - const CLR_Messaging_CommandHandlerLookup *cmd = NULL; + const CLR_Messaging_CommandHandlerLookup *cmd = nullptr; // developer note: load lookup tables, starting with the upper one // until there is use for RPC Messaging, useful replies and request are in the second table @@ -361,7 +361,7 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) tables = &m_Lookup_Requests[CMD_HANDLER_LOOKUP_TABLE_SIZE - 1]; } - _ASSERTE(tables != NULL); + _ASSERTE(tables != nullptr); // go over lookup tables while (tableCount-- > 0) @@ -369,7 +369,7 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) num = tables->size; cmd = tables->table; - while (num-- > 0 && cmd != NULL) + while (num-- > 0 && cmd != nullptr) { if (cmd->cmd == msg->m_header.m_cmd) { @@ -382,7 +382,7 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) if (!(*(cmd->hnd))(msg)) { // only need to reply if outcome is false - WP_ReplyToCommand(msg, false, false, NULL, 0); + WP_ReplyToCommand(msg, false, false, nullptr, 0); } // done here @@ -399,7 +399,7 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) } // getting here means failure, as no command handler was found for this request - WP_ReplyToCommand(msg, false, false, NULL, 0); + WP_ReplyToCommand(msg, false, false, nullptr, 0); return true; } @@ -408,7 +408,7 @@ bool CLR_Messaging::ProcessPayload(WP_Message *msg) // has to mirror declaration of the function with the same name for platforms that implement nanoBooter extern "C" uint8_t Messaging_ProcessPayload(WP_Message *msg) { - if (g_CLR_DBG_Debugger == NULL) + if (g_CLR_DBG_Debugger == nullptr) { return false; } diff --git a/src/CLR/Startup/CLRStartup.cpp b/src/CLR/Startup/CLRStartup.cpp index 119eba66ff..b130f16e6f 100644 --- a/src/CLR/Startup/CLRStartup.cpp +++ b/src/CLR/Startup/CLRStartup.cpp @@ -75,9 +75,9 @@ struct Settings // Get handlers for native functions in assembly pNativeAssmData = GetAssemblyNativeData(assm->name); - // If pNativeAssmData not NULL- means this assembly has native calls and there is pointer to table with native + // If pNativeAssmData not NULL - means this assembly has native calls and there is pointer to table with native // calls. - if (pNativeAssmData != NULL) + if (pNativeAssmData != nullptr) { // First verify that check sum in assembly object matches hardcoded check sum. if (assm->header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) @@ -190,7 +190,7 @@ struct Settings const CLR_RECORD_ASSEMBLY *header; unsigned char *assembliesBuffer; uint32_t headerInBytes = sizeof(CLR_RECORD_ASSEMBLY); - unsigned char *headerBuffer = NULL; + unsigned char *headerBuffer = nullptr; // for the context it's being used (read the assemblies) // XIP and memory mapped block regions are equivalent so they can be ORed @@ -201,7 +201,7 @@ struct Settings { headerBuffer = (unsigned char *)platform_malloc(headerInBytes); - if (headerBuffer == NULL) + if (headerBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -245,7 +245,7 @@ struct Settings ///////////////////////////////////////////////////////////////////////////////////// assembliesBuffer = (unsigned char *)platform_malloc(assemblySizeInByte); - if (assembliesBuffer == NULL) + if (assembliesBuffer == nullptr) { // release the headerBuffer which has being used and leave platform_free(headerBuffer); @@ -402,7 +402,7 @@ void ClrStartup(CLR_SETTINGS params) CLR_Debug::Printf("Ready.\r\n"); #endif - (void)g_CLR_RT_ExecutionEngine.Execute(NULL, params.MaxContextSwitches); + (void)g_CLR_RT_ExecutionEngine.Execute(nullptr, params.MaxContextSwitches); #if !defined(BUILD_RTM) CLR_Debug::Printf("Done.\r\n"); @@ -421,7 +421,7 @@ void ClrStartup(CLR_SETTINGS params) { #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_EE_DBG_SET_MASK(StateProgramExited, StateMask); - CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands_c_Monitor_ProgramExit, 0, NULL, WP_Flags_c_NonCritical); + CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands_c_Monitor_ProgramExit, 0, nullptr, WP_Flags_c_NonCritical); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) #if !defined(BUILD_RTM) diff --git a/src/CLR/System.Math/nf_native_system_math.cpp b/src/CLR/System.Math/nf_native_system_math.cpp index 1f5a80b1ec..fa9ffc618a 100644 --- a/src/CLR/System.Math/nf_native_system_math.cpp +++ b/src/CLR/System.Math/nf_native_system_math.cpp @@ -9,7 +9,7 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, + nullptr, Library_nf_native_system_math_System_Math::Abs___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Abs___STATIC__R4__R4, Library_nf_native_system_math_System_Math::Acos___STATIC__R8__R8, @@ -18,10 +18,10 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_nf_native_system_math_System_Math::Atan2___STATIC__R8__R8__R8, Library_nf_native_system_math_System_Math::Cbrt___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Ceiling___STATIC__R8__R8, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_native_system_math_System_Math::Cos___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Cosh___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Exp___STATIC__R8__R8, @@ -29,16 +29,16 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_nf_native_system_math_System_Math::IEEERemainder___STATIC__R8__R8__R8, Library_nf_native_system_math_System_Math::Log___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Log10___STATIC__R8__R8, - NULL, + nullptr, Library_nf_native_system_math_System_Math::Max___STATIC__R8__R8__R8, - NULL, - NULL, + nullptr, + nullptr, Library_nf_native_system_math_System_Math::Min___STATIC__R8__R8__R8, - NULL, + nullptr, Library_nf_native_system_math_System_Math::Pow___STATIC__R8__R8__R8, Library_nf_native_system_math_System_Math::Round___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Sign___STATIC__I4__R8, - NULL, + nullptr, Library_nf_native_system_math_System_Math::Sin___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Sinh___STATIC__R8__R8, Library_nf_native_system_math_System_Math::Sqrt___STATIC__R8__R8, diff --git a/src/DeviceInterfaces/Network/Enc28j60/enc28j60_lwip_driver.cpp b/src/DeviceInterfaces/Network/Enc28j60/enc28j60_lwip_driver.cpp index f133d400c2..2b2b3af00e 100644 --- a/src/DeviceInterfaces/Network/Enc28j60/enc28j60_lwip_driver.cpp +++ b/src/DeviceInterfaces/Network/Enc28j60/enc28j60_lwip_driver.cpp @@ -5,7 +5,7 @@ // #include -//#include "net_decl_lwip.h" +// #include "net_decl_lwip.h" #include "enc28j60_lwip.h" extern "C" @@ -221,15 +221,21 @@ int ENC28J60_LWIP_Driver::Open(ENC28J60_LWIP_DRIVER_CONFIG *config, int index) int len; HAL_Configuration_NetworkInterface *iface; - if (config == NULL) + if (config == nullptr) + { return -1; + } + iface = g_TargetConfiguration.NetworkInterfaceConfigs->Configs[index]; ; // Open SPI device HRESULT hr = nanoSPI_OpenDevice(config->SPI_Config, config->spiHandle); + if (hr < 0) + { return -1; + } if (0 == (iface->StartupAddressMode & AddressMode_DHCP)) { @@ -263,7 +269,7 @@ int ENC28J60_LWIP_Driver::Open(ENC28J60_LWIP_DRIVER_CONFIG *config, int index) (const ip4_addr_t *)&ipaddr, &netmask, &gw, - NULL, + nullptr, enc28j60_ethhw_init, ethernet_input); @@ -293,8 +299,10 @@ bool ENC28J60_LWIP_Driver::Close(ENC28J60_LWIP_DRIVER_CONFIG *config, int index) NATIVE_PROFILE_HAL_DRIVERS_ETHERNET(); - if (config == NULL) + if (config == nullptr) + { return false; + } LwipUpTimeCompletion.Abort(); @@ -306,7 +314,7 @@ bool ENC28J60_LWIP_Driver::Close(ENC28J60_LWIP_DRIVER_CONFIG *config, int index) CPU_GPIO_EnableInputPin( config->INT_Pin, 0, /* Glitch filter enable */ - NULL, /* ISR */ + nullptr, /* ISR */ 0, /* minor number */ GPIO_INT_NONE, /* Interrupt edge */ PinMode_InputPullUp); /* Resistor State / mode*/ diff --git a/src/DeviceInterfaces/Networking.Sntp/nf_networking_sntp.cpp b/src/DeviceInterfaces/Networking.Sntp/nf_networking_sntp.cpp index c10c221474..42d00ed56c 100644 --- a/src/DeviceInterfaces/Networking.Sntp/nf_networking_sntp.cpp +++ b/src/DeviceInterfaces/Networking.Sntp/nf_networking_sntp.cpp @@ -9,7 +9,7 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, + nullptr, Library_nf_networking_sntp_nanoFramework_Networking_Sntp::Start___STATIC__VOID, Library_nf_networking_sntp_nanoFramework_Networking_Sntp::Stop___STATIC__VOID, Library_nf_networking_sntp_nanoFramework_Networking_Sntp::UpdateNow___STATIC__VOID, diff --git a/src/DeviceInterfaces/System.Net/sys_net_native.cpp b/src/DeviceInterfaces/System.Net/sys_net_native.cpp index a398e956c3..e20e88d7e4 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native.cpp @@ -10,178 +10,178 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::InitializeNetworkInterfaceSettings___VOID, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::UpdateConfiguration___VOID__I4, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::GetIsNetworkAvailable___STATIC__BOOLEAN, - NULL, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::GetNetworkInterfaceCount___STATIC__I4, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::GetNetworkInterface___STATIC__SystemNetNetworkInformationNetworkInterface__U4, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::IPAddressFromString___STATIC__I8__STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_IPAddress::IPv4ToString___STATIC__STRING__U4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_IPGlobalProperties::GetIPAddress___STATIC__SystemNetIPAddress, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::GetWireless82011ConfigurationCount___STATIC__I4, Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::GetWireless82011Configuration___STATIC__SystemNetNetworkInformationWireless80211Configuration__I4, Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration::UpdateConfiguration___STATIC__VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::GetWirelessAPConfigurationCount___STATIC__I4, Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::GetWirelessAPConfiguration___STATIC__SystemNetNetworkInformationWirelessAPConfiguration__I4, Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::UpdateConfiguration___STATIC__VOID, Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::NativeGetConnectedClients___STATIC__SZARRAY_SystemNetNetworkInformationWirelessAPStation__I4, Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration::NativeDeauthStation___STATIC__STRING__I4, - NULL, - NULL, + nullptr, + nullptr, Library_sys_net_native_System_Net_Security_CertificateManager::AddCaCertificateBundle___STATIC__BOOLEAN__SZARRAY_U1, Library_sys_net_native_System_Net_Security_SslNative::SecureServerInit___STATIC__I4__I4__I4__SystemSecurityCryptographyX509CertificatesX509Certificate__SystemSecurityCryptographyX509CertificatesX509Certificate__BOOLEAN, Library_sys_net_native_System_Net_Security_SslNative::SecureClientInit___STATIC__I4__I4__I4__SystemSecurityCryptographyX509CertificatesX509Certificate__SystemSecurityCryptographyX509CertificatesX509Certificate__BOOLEAN, @@ -192,87 +192,87 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_sys_net_native_System_Net_Security_SslNative::SecureCloseSocket___STATIC__I4__OBJECT, Library_sys_net_native_System_Net_Security_SslNative::ExitSecureContext___STATIC__I4__I4, Library_sys_net_native_System_Net_Security_SslNative::DataAvailable___STATIC__I4__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate::ParseCertificate___STATIC__VOID__SZARRAY_U1__BYREF_STRING__BYREF_STRING__BYREF_SystemDateTime__BYREF_SystemDateTime, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_Sockets_NativeSocket::socket___STATIC__I4__I4__I4__I4, Library_sys_net_native_System_Net_Sockets_NativeSocket::bind___STATIC__VOID__OBJECT__SystemNetEndPoint, Library_sys_net_native_System_Net_Sockets_NativeSocket::connect___STATIC__VOID__OBJECT__SystemNetEndPoint__BOOLEAN, @@ -291,42 +291,42 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_sys_net_native_System_Net_Sockets_NativeSocket::setsockopt___STATIC__VOID__OBJECT__I4__I4__SZARRAY_U1, Library_sys_net_native_System_Net_Sockets_NativeSocket::poll___STATIC__BOOLEAN__OBJECT__I4__I4, Library_sys_net_native_System_Net_Sockets_NativeSocket::ioctl___STATIC__VOID__OBJECT__U4__BYREF_U4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2::DecodePrivateKeyNative___STATIC__VOID__SZARRAY_U1__STRING, }; diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp index bfe3487437..2d29bb69dc 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp @@ -182,7 +182,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::U config.SpecificConfigId = (CLR_UINT32)pConfig[FIELD___specificConfigId].NumericByRef().u4; config.StartupAddressMode = (AddressMode)pConfig[FIELD___startupAddressMode].NumericByRef().u4; - if (pMACAddress != NULL) + if (pMACAddress != nullptr) { memcpy(&config.MacAddress, pMACAddress->GetFirstElement(), NETIF_MAX_HWADDR_LEN); } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp index 18c9106d58..b2c1892459 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp @@ -75,12 +75,12 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config HAL_Configuration_Wireless80211 config; CLR_RT_HeapBlock *pConfig = stack.Arg0().Dereference(); - _ASSERTE(pConfig != NULL); + _ASSERTE(pConfig != nullptr); CLR_UINT32 configurationIndex = pConfig[FIELD___configurationIndex].NumericByRefConst().u4; - CLR_RT_HeapBlock_String *hbPassword = NULL; - CLR_RT_HeapBlock_String *hbSsid = NULL; + CLR_RT_HeapBlock_String *hbPassword = nullptr; + CLR_RT_HeapBlock_String *hbSsid = nullptr; CLR_UINT32 ssidLength; CLR_UINT32 passwordLength; @@ -89,6 +89,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config config.Id = (CLR_UINT32)pConfig[FIELD___id].NumericByRef().u4; config.Authentication = (AuthenticationType)pConfig[FIELD___authentication].NumericByRef().u4; config.Encryption = (EncryptionType)pConfig[FIELD___encryption].NumericByRef().u4; + config.Radio = (RadioType)pConfig[FIELD___radio].NumericByRef().u4; config.Options = (Wireless80211Configuration_ConfigurationOptions)pConfig[FIELD___options].NumericByRef().u1; @@ -96,9 +97,14 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config // make sure the terminators are there hbPassword = pConfig[FIELD___password].DereferenceString(); FAULT_ON_NULL(hbPassword); + passwordLength = hal_strlen_s(hbPassword->StringText()); + if (passwordLength >= sizeof(config.Password)) + { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + } + hal_strncpy_s( (char *)config.Password, WIRELESS82011_CONFIG_MAX_PASSWORD_LEN, @@ -107,9 +113,14 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config hbSsid = pConfig[FIELD___ssid].DereferenceString(); FAULT_ON_NULL(hbSsid); + ssidLength = hal_strlen_s(hbSsid->StringText()); + if (ssidLength >= sizeof(config.Ssid)) + { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + } + hal_strncpy_s((char *)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); // store configuration diff --git a/src/PAL/AsyncProcCall/AsyncCompletions.cpp b/src/PAL/AsyncProcCall/AsyncCompletions.cpp index 2bbd434590..cec6ab0bca 100644 --- a/src/PAL/AsyncProcCall/AsyncCompletions.cpp +++ b/src/PAL/AsyncProcCall/AsyncCompletions.cpp @@ -14,157 +14,157 @@ HAL_DblLinkedList g_HAL_Completion_List; void HAL_COMPLETION::Execute() { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); #if defined(_DEBUG) - this->Start_RTC_Ticks = 0; + this->Start_RTC_Ticks = 0; #endif - if (this->ExecuteInISR) - { - HAL_CONTINUATION* cont = this; + if (this->ExecuteInISR) + { + HAL_CONTINUATION *cont = this; - cont->Execute(); - } - else - { - this->Enqueue(); - } + cont->Execute(); + } + else + { + this->Enqueue(); + } } //--// void HAL_COMPLETION::InitializeList() { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - g_HAL_Completion_List.Initialize(); + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + g_HAL_Completion_List.Initialize(); } //--// void HAL_COMPLETION::DequeueAndExec() { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - GLOBAL_LOCK(); + GLOBAL_LOCK(); - HAL_COMPLETION* ptr = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); + HAL_COMPLETION *ptr = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); - // waitforevents does not have an associated completion, therefore we need to verify - // than their is a next completion and that the current one has expired. - if (ptr->Next()) - { - // Current one expired ? - if (HAL_Time_CurrentTime() >= ptr->EventTimeTicks) - { - Events_Set(SYSTEM_EVENT_FLAG_SYSTEM_TIMER); + // waitforevents does not have an associated completion, therefore we need to verify + // than their is a next completion and that the current one has expired. + if (ptr->Next()) + { + // Current one expired ? + if (HAL_Time_CurrentTime() >= ptr->EventTimeTicks) + { + Events_Set(SYSTEM_EVENT_FLAG_SYSTEM_TIMER); - ptr->Unlink(); + ptr->Unlink(); #if defined(_DEBUG) - ptr->EventTimeTicks = 0; -#endif // defined(_DEBUG) + ptr->EventTimeTicks = 0; +#endif // defined(_DEBUG) - //// let the ISR turn on interrupts, if it needs to - ptr->Execute(); - } + //// let the ISR turn on interrupts, if it needs to + ptr->Execute(); + } - // - // Set the next timer to run otherwise set the next interrupt to be 356 years since last powerup (@25kHz). - Time_SetCompare(ptr->Next() ? ptr->EventTimeTicks : HAL_COMPLETION_IDLE_VALUE); - } + // + // Set the next timer to run otherwise set the next interrupt to be 356 years since last powerup (@25kHz). + Time_SetCompare(ptr->Next() ? ptr->EventTimeTicks : HAL_COMPLETION_IDLE_VALUE); + } - GLOBAL_UNLOCK(); + GLOBAL_UNLOCK(); } //--// void HAL_COMPLETION::EnqueueTicks(uint64_t eventTimeTicks) { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - ASSERT(eventTimeTicks != 0); + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + ASSERT(eventTimeTicks != 0); - this->EventTimeTicks = eventTimeTicks; + this->EventTimeTicks = eventTimeTicks; #if defined(_DEBUG) - this->Start_RTC_Ticks = HAL_Time_CurrentSysTicks(); + this->Start_RTC_Ticks = HAL_Time_CurrentSysTicks(); #endif - GLOBAL_LOCK(); + GLOBAL_LOCK(); - HAL_COMPLETION* ptr = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); - HAL_COMPLETION* ptrNext; + HAL_COMPLETION *ptr = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); + HAL_COMPLETION *ptrNext; - // If not empty list the find position in Completion list based on time - // If empty just add at head. - if (!g_HAL_Completion_List.IsEmpty()) - { - do - { - ptrNext = (HAL_COMPLETION *)ptr->Next(); + // If not empty list the find position in Completion list based on time + // If empty just add at head. + if (!g_HAL_Completion_List.IsEmpty()) + { + do + { + ptrNext = (HAL_COMPLETION *)ptr->Next(); - if (eventTimeTicks < ptr->EventTimeTicks) - { - break; - } + if (eventTimeTicks < ptr->EventTimeTicks) + { + break; + } - ptr = ptrNext; - } while (ptr); - } + ptr = ptrNext; + } while (ptr); + } - g_HAL_Completion_List.InsertBeforeNode(ptr, this); + g_HAL_Completion_List.InsertBeforeNode(ptr, this); - if (this == g_HAL_Completion_List.FirstNode()) - { - Time_SetCompare(eventTimeTicks); - } + if (this == g_HAL_Completion_List.FirstNode()) + { + Time_SetCompare(eventTimeTicks); + } - GLOBAL_UNLOCK(); + GLOBAL_UNLOCK(); } //--// void HAL_COMPLETION::Abort() { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - GLOBAL_LOCK(); + GLOBAL_LOCK(); - HAL_COMPLETION* firstNode = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); + HAL_COMPLETION *firstNode = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); - this->Unlink(); + this->Unlink(); #if defined(_DEBUG) - this->Start_RTC_Ticks = 0; + this->Start_RTC_Ticks = 0; #endif - if (firstNode == this) - { - uint64_t nextTicks; - - if (g_HAL_Completion_List.IsEmpty()) - { - // - // In case there's no other request to serve, set the next interrupt to be 356 years since last powerup (@25kHz). - // - nextTicks = HAL_COMPLETION_IDLE_VALUE; - } - else - { - firstNode = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); - - nextTicks = firstNode->EventTimeTicks; - } - - Time_SetCompare(nextTicks); - } - - GLOBAL_UNLOCK(); + if (firstNode == this) + { + uint64_t nextTicks; + + if (g_HAL_Completion_List.IsEmpty()) + { + // + // In case there's no other request to serve, set the next interrupt to be 356 years since last powerup + // (@25kHz). + // + nextTicks = HAL_COMPLETION_IDLE_VALUE; + } + else + { + firstNode = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); + + nextTicks = firstNode->EventTimeTicks; + } + + Time_SetCompare(nextTicks); + } + + GLOBAL_UNLOCK(); } //--// - // // WaitForInterrupts for expireTimeInTicks time // @@ -172,68 +172,67 @@ void HAL_COMPLETION::Abort() // void HAL_COMPLETION::WaitForInterrupts(uint64_t expireTimeInTicks, uint32_t sleepLevel, uint64_t wakeEvents) { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - - const int setCompare = 1; - const int resetCompare = 2; - const int nilCompare = 4; - - HAL_COMPLETION* ptr = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); - int state; - - // Any Completion events been Queued ? - if (ptr->Next() == NULL) - { - // No - state = setCompare | nilCompare; - } - // Is Queued event later than passed expire timeout - else if (ptr->EventTimeTicks > expireTimeInTicks) - { - // Yes - state = setCompare | resetCompare; - } - else - { - state = 0; - } - - if (state & setCompare) - { - // Set timer for expireTimeInTicks time - Time_SetCompare(expireTimeInTicks); - } - - // Wait for next interrupt ( timer etc) - CPU_Sleep((SLEEP_LEVEL_type)sleepLevel, wakeEvents); - - if (state & (resetCompare | nilCompare)) - { - // let's get the first node again - // it could have changed since CPU_Sleep re-enabled interrupts - ptr = (HAL_COMPLETION*)g_HAL_Completion_List.FirstNode(); - Time_SetCompare((state & resetCompare) ? ptr->EventTimeTicks : HAL_COMPLETION_IDLE_VALUE); - } + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); + + const int setCompare = 1; + const int resetCompare = 2; + const int nilCompare = 4; + + HAL_COMPLETION *ptr = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); + int state; + + // Any Completion events been Queued ? + if (ptr->Next() == nullptr) + { + // No + state = setCompare | nilCompare; + } + // Is Queued event later than passed expire timeout + else if (ptr->EventTimeTicks > expireTimeInTicks) + { + // Yes + state = setCompare | resetCompare; + } + else + { + state = 0; + } + + if (state & setCompare) + { + // Set timer for expireTimeInTicks time + Time_SetCompare(expireTimeInTicks); + } + + // Wait for next interrupt ( timer etc) + CPU_Sleep((SLEEP_LEVEL_type)sleepLevel, wakeEvents); + + if (state & (resetCompare | nilCompare)) + { + // let's get the first node again + // it could have changed since CPU_Sleep re-enabled interrupts + ptr = (HAL_COMPLETION *)g_HAL_Completion_List.FirstNode(); + Time_SetCompare((state & resetCompare) ? ptr->EventTimeTicks : HAL_COMPLETION_IDLE_VALUE); + } } void HAL_COMPLETION::Uninitialize() { - NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - - HAL_COMPLETION* ptr; + NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - GLOBAL_LOCK(); + HAL_COMPLETION *ptr; - while (TRUE) - { - ptr = (HAL_COMPLETION*)g_HAL_Completion_List.ExtractFirstNode(); + GLOBAL_LOCK(); - if (!ptr) - { - break; - } + while (TRUE) + { + ptr = (HAL_COMPLETION *)g_HAL_Completion_List.ExtractFirstNode(); - } + if (!ptr) + { + break; + } + } - GLOBAL_UNLOCK(); + GLOBAL_UNLOCK(); } diff --git a/src/PAL/AsyncProcCall/AsyncContinuations.cpp b/src/PAL/AsyncProcCall/AsyncContinuations.cpp index e81e8a0838..599b787095 100644 --- a/src/PAL/AsyncProcCall/AsyncContinuations.cpp +++ b/src/PAL/AsyncProcCall/AsyncContinuations.cpp @@ -14,7 +14,7 @@ extern HAL_DblLinkedList g_HAL_Completion_List; bool HAL_CONTINUATION::IsLinked() { - return ((HAL_DblLinkedNode*)this)->IsLinked(); + return ((HAL_DblLinkedNode *)this)->IsLinked(); } void HAL_CONTINUATION::InitializeList() @@ -26,11 +26,11 @@ void HAL_CONTINUATION::InitializeList() void HAL_CONTINUATION::Enqueue() { NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); - if(this->GetEntryPoint() != NULL) + if (this->GetEntryPoint() != nullptr) { GLOBAL_LOCK(); - g_HAL_Continuation_List.LinkAtBack( this ); + g_HAL_Continuation_List.LinkAtBack(this); GLOBAL_UNLOCK(); } @@ -51,27 +51,27 @@ bool HAL_CONTINUATION::Dequeue_And_Execute() NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); // use this as the return value - // helpfull to make the call to release the global mutext happens + // helpfull to make the call to release the global mutext happens bool result; - HAL_CONTINUATION* ptr = NULL; + HAL_CONTINUATION *ptr = nullptr; GLOBAL_LOCK(); ptr = g_HAL_Continuation_List.ExtractFirstNode(); GLOBAL_UNLOCK(); - if(ptr == NULL ) + if (ptr == nullptr) { result = false; } else { - //SystemState_SetNoLock( SYSTEM_STATE_NO_CONTINUATIONS ); + // SystemState_SetNoLock( SYSTEM_STATE_NO_CONTINUATIONS ); HAL_CALLBACK call = ptr->Callback; call.Execute(); - //SystemState_ClearNoLock( SYSTEM_STATE_NO_CONTINUATIONS ); // nestable + // SystemState_ClearNoLock( SYSTEM_STATE_NO_CONTINUATIONS ); // nestable result = true; } @@ -79,30 +79,30 @@ bool HAL_CONTINUATION::Dequeue_And_Execute() return result; } -void HAL_CONTINUATION::InitializeCallback( HAL_CALLBACK_FPN entryPoint, void* argument ) +void HAL_CONTINUATION::InitializeCallback(HAL_CALLBACK_FPN entryPoint, void *argument) { NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); Initialize(); - - Callback.Initialize( entryPoint, argument ); + + Callback.Initialize(entryPoint, argument); } void HAL_CONTINUATION::Uninitialize() { NATIVE_PROFILE_PAL_ASYNC_PROC_CALL(); GLOBAL_LOCK(); - - HAL_CONTINUATION* ptr; - while(TRUE) + HAL_CONTINUATION *ptr; + + while (TRUE) { - ptr = (HAL_CONTINUATION*)g_HAL_Continuation_List.ExtractFirstNode(); - - if(!ptr) + ptr = (HAL_CONTINUATION *)g_HAL_Continuation_List.ExtractFirstNode(); + + if (!ptr) { break; } } - + GLOBAL_UNLOCK(); } diff --git a/src/System.Device.Gpio/sys_dev_gpio_native.cpp b/src/System.Device.Gpio/sys_dev_gpio_native.cpp index d97797f001..38b5122f57 100644 --- a/src/System.Device.Gpio/sys_dev_gpio_native.cpp +++ b/src/System.Device.Gpio/sys_dev_gpio_native.cpp @@ -9,41 +9,41 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::Read___SystemDeviceGpioPinValue, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::Toggle___VOID, - NULL, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::DisposeNative___VOID, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::NativeIsPinModeSupported___BOOLEAN__SystemDeviceGpioPinMode, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::NativeSetPinMode___VOID__SystemDeviceGpioPinMode, @@ -51,53 +51,53 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::NativeSetDebounceTimeout___VOID, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::WriteNative___VOID__SystemDeviceGpioPinValue, Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::NativeSetAlternateFunction___VOID__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::get_PinCount___I4, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::DisposeNative___VOID, - NULL, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::IsPinModeSupported___BOOLEAN__I4__SystemDeviceGpioPinMode, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::IsPinOpen___BOOLEAN__I4, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::SetPinMode___VOID__I4__SystemDeviceGpioPinMode, - NULL, - NULL, + nullptr, + nullptr, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeRead___U1__I4, Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeWrite___VOID__I4__U1, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_Gpio = diff --git a/src/System.IO.Ports/sys_io_ser_native.cpp b/src/System.IO.Ports/sys_io_ser_native.cpp index e4960421a8..b75aec3e16 100644 --- a/src/System.IO.Ports/sys_io_ser_native.cpp +++ b/src/System.IO.Ports/sys_io_ser_native.cpp @@ -10,94 +10,94 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___I4, Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_InvertSignalLevels___BOOLEAN, Library_sys_io_ser_native_System_IO_Ports_SerialPort::set_InvertSignalLevels___VOID__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY_U1__I4__I4, - NULL, + nullptr, Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STRING, Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING, Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZARRAY_U1__I4__I4, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VOID, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOID, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar___VOID, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString___VOID__STRING__BOOLEAN, Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedBytesThreshold___VOID__I4, - NULL, - NULL, + nullptr, + nullptr, Library_sys_io_ser_native_System_IO_Ports_SerialPort::GetDeviceSelector___STATIC__STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_IO_Ports = diff --git a/src/System.Runtime.Serialization/nf_system_runtime_serialization.cpp b/src/System.Runtime.Serialization/nf_system_runtime_serialization.cpp index 7cdf49f660..499dd3ccbe 100644 --- a/src/System.Runtime.Serialization/nf_system_runtime_serialization.cpp +++ b/src/System.Runtime.Serialization/nf_system_runtime_serialization.cpp @@ -11,8 +11,8 @@ static const CLR_RT_MethodHandler method_lookup[] = { Library_nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter::Serialize___STATIC__SZARRAY_U1__OBJECT, Library_nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter::Deserialize___STATIC__OBJECT__SZARRAY_U1, - NULL, - NULL, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Runtime_Serialization = diff --git a/src/Windows.Storage/win_storage_native.cpp b/src/Windows.Storage/win_storage_native.cpp index 277db4526b..b495a39532 100644 --- a/src/Windows.Storage/win_storage_native.cpp +++ b/src/Windows.Storage/win_storage_native.cpp @@ -9,85 +9,85 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_win_storage_native_Windows_Storage_Devices_SDCard::MountMMCNative___STATIC__VOID__BOOLEAN, Library_win_storage_native_Windows_Storage_Devices_SDCard::MountSpiNative___STATIC__VOID__I4__I4, Library_win_storage_native_Windows_Storage_Devices_SDCard::UnmountNative___STATIC__VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_win_storage_native_Windows_Storage_FileIO::WriteBytes___STATIC__VOID__WindowsStorageIStorageFile__SZARRAY_U1, Library_win_storage_native_Windows_Storage_FileIO::WriteText___STATIC__VOID__WindowsStorageIStorageFile__STRING, Library_win_storage_native_Windows_Storage_FileIO::ReadBufferNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_SZARRAY_U1, Library_win_storage_native_Windows_Storage_FileIO::ReadTextNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_win_storage_native_Windows_Storage_StorageFile::DeleteFileNative___VOID, Library_win_storage_native_Windows_Storage_StorageFile::RenameFileNative___VOID__STRING, - NULL, - NULL, + nullptr, + nullptr, Library_win_storage_native_Windows_Storage_StorageFile::GetFileFromPathNative___STATIC__WindowsStorageStorageFile__STRING__STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_win_storage_native_Windows_Storage_StorageFolder::GetRemovableStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, Library_win_storage_native_Windows_Storage_StorageFolder::GetInternalStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, Library_win_storage_native_Windows_Storage_StorageFolder::GetStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, @@ -97,9 +97,9 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_win_storage_native_Windows_Storage_StorageFolder::DeleteFolderNative___VOID, Library_win_storage_native_Windows_Storage_StorageFolder::RenameFolderNative___VOID__STRING, Library_win_storage_native_Windows_Storage_StorageFolder::GetFolderNative___WindowsStorageStorageFolder__STRING, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Storage = diff --git a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp index 8f8e311ea3..a1e9b7bb26 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp @@ -239,7 +239,7 @@ HRESULT CLR_GFX_Bitmap::CreateInstanceBmp(CLR_RT_HeapBlock &ref, const CLR_UINT8 { NANOCLR_HEADER(); - CLR_GFX_Bitmap *bitmap = NULL; + CLR_GFX_Bitmap *bitmap = nullptr; CLR_GFX_BitmapDescription bm; BmpDecoder decoder; diff --git a/src/nanoFramework.ResourceManager/nf_system_resourcemanager.cpp b/src/nanoFramework.ResourceManager/nf_system_resourcemanager.cpp index da132248d3..7e98fdcb5e 100644 --- a/src/nanoFramework.ResourceManager/nf_system_resourcemanager.cpp +++ b/src/nanoFramework.ResourceManager/nf_system_resourcemanager.cpp @@ -11,21 +11,21 @@ static const CLR_RT_MethodHandler method_lookup[] = { Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetObjectInternal___OBJECT__I2, Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetObjectInternal___OBJECT__I2__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_resourcemanager_System_Resources_ResourceManager::FindResource___STATIC__I4__STRING__SystemReflectionAssembly, Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetObject___STATIC__OBJECT__SystemResourcesResourceManager__SystemEnum, Library_nf_system_resourcemanager_nanoFramework_Runtime_Native_ResourceUtility::GetObject___STATIC__OBJECT__SystemResourcesResourceManager__SystemEnum, Library_nf_system_resourcemanager_nanoFramework_Runtime_Native_ResourceUtility::GetObject___STATIC__OBJECT__SystemResourcesResourceManager__SystemEnum__I4__I4, - NULL, - NULL, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_ResourceManager = diff --git a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp index 3a8d96258b..d7c10e1626 100644 --- a/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp +++ b/src/nanoFramework.ResourceManager/nf_system_resourcemanager_System_Resources_ResourceManager.cpp @@ -43,7 +43,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO NANOCLR_CHECK_HRESULT( g_CLR_RT_TypeSystem.LocateResource(assm, resourceFileId, pArgs[0].NumericByRefConst().s2, resource, size)); - if (resource != NULL) // otherwise NULL is returned + if (resource != nullptr) // otherwise nullptr is returned { pAssm = assm.assembly; buf = pAssm->GetResourceData(resource->offset); @@ -135,7 +135,7 @@ HRESULT Library_nf_system_resourcemanager_System_Resources_ResourceManager::GetO NANOCLR_CHECK_HRESULT( g_CLR_RT_TypeSystem.LocateResource(assm, resourceFileId, pArgs[0].NumericByRefConst().s2, resource, size)); - if (resource != NULL) // otherwise NULL is returned + if (resource != nullptr) // otherwise nullptr is returned { pAssm = assm.assembly; buf = pAssm->GetResourceData(resource->offset); diff --git a/src/nanoFramework.Runtime.Events/nf_rt_events_native.cpp b/src/nanoFramework.Runtime.Events/nf_rt_events_native.cpp index 37bd23c4b1..00e843402d 100644 --- a/src/nanoFramework.Runtime.Events/nf_rt_events_native.cpp +++ b/src/nanoFramework.Runtime.Events/nf_rt_events_native.cpp @@ -13,56 +13,56 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_rt_events_native_nanoFramework_Runtime_Events_EventSink::EventConfig___VOID, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::EnableInterrupt___VOID, Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::DisableInterrupt___VOID, Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::Dispose___VOID__BOOLEAN, - NULL, - NULL, + nullptr, + nullptr, Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::_ctor___VOID__STRING__U8, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, Library_nf_rt_events_native_nanoFramework_Runtime_Events_WeakDelegate::Combine___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, Library_nf_rt_events_native_nanoFramework_Runtime_Events_WeakDelegate::Remove___STATIC__SystemDelegate__SystemDelegate__SystemDelegate, }; diff --git a/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_EventSink.cpp b/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_EventSink.cpp index be809450e4..d9360c5101 100644 --- a/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_EventSink.cpp +++ b/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_EventSink.cpp @@ -9,11 +9,11 @@ #include "nf_rt_events_native.h" -static CLR_RT_HeapBlock_NativeEventDispatcher *g_Context = NULL; +static CLR_RT_HeapBlock_NativeEventDispatcher *g_Context = nullptr; void PostManagedEvent(uint8_t category, uint8_t subCategory, uint16_t data1, uint32_t data2) { - if(g_Context != NULL) + if(g_Context != nullptr) { uint32_t d = ((uint32_t)data1 << 16) | (category << 8) | subCategory; @@ -42,7 +42,7 @@ static HRESULT CleanupEventSink( CLR_RT_HeapBlock_NativeEventDispatcher *pContex { (void)pContext; - g_Context = NULL; + g_Context = nullptr; CleanupNativeEventsFromHALQueue( pContext ); diff --git a/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher.cpp b/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher.cpp index 5d908c37d8..b39bddabf4 100644 --- a/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher.cpp +++ b/src/nanoFramework.Runtime.Events/nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher.cpp @@ -9,164 +9,176 @@ #include "nf_rt_events_native.h" -HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::EnableInterrupt___VOID( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::EnableInterrupt___VOID( + CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = NULL; - - CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); + CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = nullptr; - if(pThis[ FIELD__disposed ].NumericByRef().s1 != 0) + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + if (pThis[FIELD__disposed].NumericByRef().s1 != 0) { NANOCLR_SET_AND_LEAVE(CLR_E_OBJECT_DISPOSED); } - NANOCLR_CHECK_HRESULT(GetEventDispatcher( stack, pNativeDisp )); + NANOCLR_CHECK_HRESULT(GetEventDispatcher(stack, pNativeDisp)); - // Calls driver to enable interrupts. Consider that there could be no driver - // associated to this object so check that the driver methods are set - if(pNativeDisp->driverMethods == NULL) + // Calls driver to enable interrupts. Consider that there could be no driver + // associated to this object so check that the driver methods are set + if (pNativeDisp->driverMethods == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } - - NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->enableProcessor( pNativeDisp, true )); - + + NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->enableProcessor(pNativeDisp, true)); + NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::DisableInterrupt___VOID( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::DisableInterrupt___VOID( + CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - - CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = NULL; - - CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); - if(pThis[ FIELD__disposed ].NumericByRef().s1 != 0) + CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = nullptr; + + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + if (pThis[FIELD__disposed].NumericByRef().s1 != 0) { NANOCLR_SET_AND_LEAVE(CLR_E_OBJECT_DISPOSED); } - NANOCLR_CHECK_HRESULT(GetEventDispatcher( stack, pNativeDisp )); - - // Calls driver to enable interrupts. Consider that there could be no driver - // associated to this object so check that the driver methods are set + NANOCLR_CHECK_HRESULT(GetEventDispatcher(stack, pNativeDisp)); + + // Calls driver to enable interrupts. Consider that there could be no driver + // associated to this object so check that the driver methods are set // we will be tolerant in this case and not throw any exception - if(pNativeDisp->driverMethods != NULL) + if (pNativeDisp->driverMethods != nullptr) { - NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->enableProcessor( pNativeDisp, false )); + NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->enableProcessor(pNativeDisp, false)); } - + NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::Dispose___VOID__BOOLEAN( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::Dispose___VOID__BOOLEAN( + CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - - CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = NULL; - - CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); - - NANOCLR_CHECK_HRESULT(GetEventDispatcher( stack, pNativeDisp )); - - // Cleanup the HAL queue from the instance of associated CLR_RT_HeapBlock_NativeEventDispatcher + + CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = nullptr; + + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + NANOCLR_CHECK_HRESULT(GetEventDispatcher(stack, pNativeDisp)); + + // Cleanup the HAL queue from the instance of associated CLR_RT_HeapBlock_NativeEventDispatcher pNativeDisp->RemoveFromHALQueue(); - - // Calls driver to enable interrupts. Consider that there could be no driver - // associated to this object so check that the driver methods are set + + // Calls driver to enable interrupts. Consider that there could be no driver + // associated to this object so check that the driver methods are set // we will be tolerant in this case and not throw any exception - if(pNativeDisp->driverMethods != NULL) + if (pNativeDisp->driverMethods != nullptr) { - NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->cleanupProcessor( pNativeDisp )); + NANOCLR_CHECK_HRESULT(pNativeDisp->driverMethods->cleanupProcessor(pNativeDisp)); } - + NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::_ctor___VOID__STRING__U8( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::_ctor___VOID__STRING__U8( + CLR_RT_StackFrame &stack) { - NANOCLR_HEADER(); - - CLR_RT_DriverInterruptMethods* pDriverMethods; - const CLR_RT_NativeAssemblyData* pNativeDriverData; - CLR_RT_HeapBlock_NativeEventDispatcher* pNativeDisp = NULL; - - const char * driverName; - uint64_t driverData; - - CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); - - // Retrieve paramenters; - if (stack.Arg1().DataType() != DATATYPE_OBJECT) - { - NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + NANOCLR_HEADER(); + + CLR_RT_DriverInterruptMethods *pDriverMethods; + const CLR_RT_NativeAssemblyData *pNativeDriverData; + CLR_RT_HeapBlock_NativeEventDispatcher *pNativeDisp = nullptr; + + const char *driverName; + uint64_t driverData; + + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + // Retrieve paramenters; + if (stack.Arg1().DataType() != DATATYPE_OBJECT) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - driverName = stack.Arg1().RecoverString(); FAULT_ON_NULL(driverName); + driverName = stack.Arg1().RecoverString(); + FAULT_ON_NULL(driverName); driverData = stack.Arg2().NumericByRef().u8; - // Throw NULL exception if string is empty. - if(hal_strlen_s( driverName ) == 0) - { + // Throw nullptr exception if string is empty. + if (hal_strlen_s(driverName) == 0) + { NANOCLR_CHECK_HRESULT(CLR_E_ARGUMENT_NULL); } - + // Retrives pointers to driver implemented functions. - pNativeDriverData = GetAssemblyNativeData( driverName ); - + pNativeDriverData = GetAssemblyNativeData(driverName); + // Validates check sum and presence of the structure. - if(pNativeDriverData == NULL || pNativeDriverData->m_checkSum != DRIVER_INTERRUPT_METHODS_CHECKSUM) + if (pNativeDriverData == nullptr || pNativeDriverData->m_checkSum != DRIVER_INTERRUPT_METHODS_CHECKSUM) { - NANOCLR_CHECK_HRESULT(CLR_E_DRIVER_NOT_REGISTERED); + NANOCLR_CHECK_HRESULT(CLR_E_DRIVER_NOT_REGISTERED); } // Get pointer to CLR_RT_DriverInterruptMethods pDriverMethods = (CLR_RT_DriverInterruptMethods *)pNativeDriverData->m_pNativeMethods; - + // Check that all methods are present: - if( pDriverMethods->initProcessor == NULL || - pDriverMethods->enableProcessor == NULL || - pDriverMethods->cleanupProcessor == NULL) + if (pDriverMethods->initProcessor == nullptr || pDriverMethods->enableProcessor == nullptr || + pDriverMethods->cleanupProcessor == nullptr) { - NANOCLR_CHECK_HRESULT(CLR_E_DRIVER_NOT_REGISTERED); + NANOCLR_CHECK_HRESULT(CLR_E_DRIVER_NOT_REGISTERED); } // So we found driver by name and now we create instance of CLR_RT_HeapBlock_NativeEventDispatcher - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance( *pThis, pThis[ FIELD___NativeEventDispatcher ] )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance(*pThis, pThis[FIELD___NativeEventDispatcher])); - // Initialize the driver with and provide the instance of CLR_RT_HeapBlock_NativeEventDispatcher - NANOCLR_CHECK_HRESULT(GetEventDispatcher( stack, pNativeDisp )); + // Initialize the driver with and provide the instance of CLR_RT_HeapBlock_NativeEventDispatcher + NANOCLR_CHECK_HRESULT(GetEventDispatcher(stack, pNativeDisp)); // Now call the driver. First save pointer to driver data. pNativeDisp->driverMethods = pDriverMethods; - NANOCLR_CHECK_HRESULT(pDriverMethods->initProcessor( pNativeDisp, driverData )); - + NANOCLR_CHECK_HRESULT(pDriverMethods->initProcessor(pNativeDisp, driverData)); + NANOCLR_NOCLEANUP(); } //--// -CLR_RT_ObjectToEvent_Source* Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::GetEventDispReference( CLR_RT_StackFrame& stack ) +CLR_RT_ObjectToEvent_Source *Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher:: + GetEventDispReference(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_HARDWARE(); - CLR_RT_HeapBlock* pThis = stack.This(); + CLR_RT_HeapBlock *pThis = stack.This(); - return CLR_RT_ObjectToEvent_Source::ExtractInstance( pThis[ FIELD___NativeEventDispatcher ] ); + return CLR_RT_ObjectToEvent_Source::ExtractInstance(pThis[FIELD___NativeEventDispatcher]); } -HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::GetEventDispatcher( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock_NativeEventDispatcher*& event ) +HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::GetEventDispatcher( + CLR_RT_StackFrame &stack, + CLR_RT_HeapBlock_NativeEventDispatcher *&event) { NATIVE_PROFILE_CLR_HARDWARE(); NANOCLR_HEADER(); - event = GetEventDispatcher( stack ); - if(event == NULL) + event = GetEventDispatcher(stack); + if (event == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } @@ -174,11 +186,12 @@ HRESULT Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDisp NANOCLR_NOCLEANUP(); } -CLR_RT_HeapBlock_NativeEventDispatcher* Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher::GetEventDispatcher( CLR_RT_StackFrame& stack ) +CLR_RT_HeapBlock_NativeEventDispatcher *Library_nf_rt_events_native_nanoFramework_Runtime_Events_NativeEventDispatcher:: + GetEventDispatcher(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_HARDWARE(); - CLR_RT_ObjectToEvent_Source* src = GetEventDispReference( stack ); + CLR_RT_ObjectToEvent_Source *src = GetEventDispReference(stack); - return (src == NULL) ? NULL : (CLR_RT_HeapBlock_NativeEventDispatcher*)src->m_eventPtr; + return (src == nullptr) ? nullptr : (CLR_RT_HeapBlock_NativeEventDispatcher *)src->m_eventPtr; } diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp index aa77cd5ef2..c0eb2edd6e 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp @@ -10,31 +10,31 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, + nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint::Install___STATIC__VOID__I4__I4, Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN, Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_Power::NativeReboot___STATIC__VOID, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_Rtc::Native_RTC_SetSystemTime___STATIC__BOOLEAN__I4__U1__U1__U1__U1__U1__U1, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::GetSystemVersion___STATIC__VOID__BYREF_I4__BYREF_I4__BYREF_I4__BYREF_I4, - NULL, + nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_OEMString___STATIC__STRING, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_OEM___STATIC__U1, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_Model___STATIC__U1, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_SKU___STATIC__U2, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_TargetName___STATIC__STRING, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::get_Platform___STATIC__STRING, - NULL, + nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo::GetNativeFloatingPointSupport___STATIC__U1, Library_nf_rt_native_System_Environment::get_TickCount64___STATIC__I8, }; diff --git a/src/nanoFramework.System.Collections/nf_system_collections.cpp b/src/nanoFramework.System.Collections/nf_system_collections.cpp index 21adf61197..c21c4fa6d5 100644 --- a/src/nanoFramework.System.Collections/nf_system_collections.cpp +++ b/src/nanoFramework.System.Collections/nf_system_collections.cpp @@ -9,92 +9,92 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Hashtable::Clear___VOID, Library_nf_system_collections_System_Collections_Hashtable::Contains___BOOLEAN__OBJECT, Library_nf_system_collections_System_Collections_Hashtable::Remove___VOID__OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Hashtable::InsertNative___VOID__OBJECT__OBJECT__BOOLEAN, Library_nf_system_collections_System_Collections_Hashtable::GetNative___OBJECT__OBJECT, Library_nf_system_collections_System_Collections_Hashtable::GetPrimeNative___STATIC__I4__I4, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Hashtable__HashtableEnumerator::MoveNext___BOOLEAN, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Queue::Clear___VOID, Library_nf_system_collections_System_Collections_Queue::CopyTo___VOID__SystemArray__I4, Library_nf_system_collections_System_Collections_Queue::Enqueue___VOID__OBJECT, - NULL, + nullptr, Library_nf_system_collections_System_Collections_Queue::Dequeue___OBJECT, Library_nf_system_collections_System_Collections_Queue::Peek___OBJECT, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Stack::Clear___VOID, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_collections_System_Collections_Stack::Peek___OBJECT, Library_nf_system_collections_System_Collections_Stack::Pop___OBJECT, Library_nf_system_collections_System_Collections_Stack::Push___VOID__OBJECT, - NULL, - NULL, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_System_Collections = diff --git a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp index 9664a96e25..a859445caf 100644 --- a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp +++ b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp @@ -45,11 +45,11 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Clear___VOID bucket = bucketElement->Dereference(); // sanity check: can only clear buckets that already have objects - if (bucket != NULL) + if (bucket != nullptr) { bucket[BucketType::FIELD___hash].NumericByRef().u4 = 0; - bucket[BucketType::FIELD___value].SetObjectReference(NULL); - bucket[BucketType::FIELD___key].SetObjectReference(NULL); + bucket[BucketType::FIELD___value].SetObjectReference(nullptr); + bucket[BucketType::FIELD___key].SetObjectReference(nullptr); } } @@ -97,7 +97,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Contains___B bucketElement = ((CLR_RT_HeapBlock *)buckets->GetElement(bucketNumber)); bucket = bucketElement->Dereference(); - if (bucket != NULL && bucket[BucketType::FIELD___key].Dereference() != NULL && + if (bucket != nullptr && bucket[BucketType::FIELD___key].Dereference() != nullptr && (bucket[BucketType::FIELD___hash].NumericByRef().u4 == hashcode) && (CLR_RT_HeapBlock::ObjectsEqual(*bucket[BucketType::FIELD___key].Dereference(), *key, true))) { @@ -152,15 +152,15 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Remove___VOI bucketElement = ((CLR_RT_HeapBlock *)buckets->GetElement(bucketNumber)); bucket = bucketElement->Dereference(); - if (bucket != NULL && bucket[BucketType::FIELD___key].Dereference() != NULL && + if (bucket != nullptr && bucket[BucketType::FIELD___key].Dereference() != nullptr && (bucket[BucketType::FIELD___hash].NumericByRef().u4 == hashcode) && (CLR_RT_HeapBlock::ObjectsEqual(*bucket[BucketType::FIELD___key].Dereference(), *key, true))) { // Clear hash field, then key, then value bucket[BucketType::FIELD___hash].NumericByRef().u4 = 0; - bucket[BucketType::FIELD___value].SetObjectReference(NULL); - bucket[BucketType::FIELD___key].SetObjectReference(NULL); + bucket[BucketType::FIELD___value].SetObjectReference(nullptr); + bucket[BucketType::FIELD___key].SetObjectReference(nullptr); // subtract count field pThis[FIELD___count].NumericByRef().s4--; @@ -226,7 +226,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::InsertNative bucket = bucketElement->Dereference(); // Insert the key/value pair into this bucket if this bucket is empty - if (bucket == NULL || (bucket != NULL && bucket[BucketType::FIELD___key].Dereference() == NULL)) + if (bucket == nullptr || (bucket != nullptr && bucket[BucketType::FIELD___key].Dereference() == nullptr)) { // We pretty much have to insert in this order. Don't set hash // code until the value & key are set appropriately. @@ -234,7 +234,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::InsertNative CLR_RT_TypeDef_Index bucketTypeDef; CLR_RT_HeapBlock newBucket; - if (bucket == NULL) + if (bucket == nullptr) { // find type, don't bother checking the result as it exists for sure g_CLR_RT_TypeSystem.FindTypeDef("Bucket", "System.Collections", bucketTypeDef); @@ -257,7 +257,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::InsertNative NANOCLR_SET_AND_LEAVE(S_OK) } - if (bucket != NULL && + if (bucket != nullptr && (CLR_RT_HeapBlock::ObjectsEqual(*bucket[BucketType::FIELD___key].Dereference(), *key, true))) { if (add) @@ -319,7 +319,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::GetNative___ bucketElement = ((CLR_RT_HeapBlock *)buckets->GetElement(bucketNumber)); bucket = bucketElement->Dereference(); - if (bucket != NULL && (bucket[BucketType::FIELD___hash].NumericByRef().u4 == hashcode) && + if (bucket != nullptr && (bucket[BucketType::FIELD___hash].NumericByRef().u4 == hashcode) && (CLR_RT_HeapBlock::ObjectsEqual(*bucket[BucketType::FIELD___key].Dereference(), *key, true))) { stack.SetResult_Object(bucket[BucketType::FIELD___value].Dereference()); @@ -330,7 +330,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::GetNative___ } while (++entry < bucketsLength); // no key found - stack.SetResult_Object(NULL); + stack.SetResult_Object(nullptr); NANOCLR_NOCLEANUP(); } @@ -432,7 +432,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Expand(CLR_R oldBucket = oldBucketElement->Dereference(); // sanity check: can only clear buckets that already have objects - if (oldBucket != NULL && oldBucket[BucketType::FIELD___key].Dereference() != NULL) + if (oldBucket != nullptr && oldBucket[BucketType::FIELD___key].Dereference() != nullptr) { seed = oldBucket[BucketType::FIELD___hash].NumericByRef().u4; incr = 1 + ((seed * HashPrime) % ((uint32_t)newSize - 1)); @@ -444,7 +444,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Expand(CLR_R newBucketElement = ((CLR_RT_HeapBlock *)newBuckets->GetElement(newBucketNumber)); bucket = newBucketElement->Dereference(); - if (bucket == NULL || bucket[BucketType::FIELD___key].Dereference() == NULL) + if (bucket == nullptr || bucket[BucketType::FIELD___key].Dereference() == nullptr) { // create a new CLR_RT_HeapBlock newBucket; diff --git a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable__HashtableEnumerator.cpp b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable__HashtableEnumerator.cpp index 7c8c0b629b..afe3ea49af 100644 --- a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable__HashtableEnumerator.cpp +++ b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable__HashtableEnumerator.cpp @@ -43,11 +43,11 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable__HashtableEnu bucketElement = ((CLR_RT_HeapBlock *)buckets->GetElement(bucket)); currentBucket = bucketElement->Dereference(); - if (currentBucket != NULL) + if (currentBucket != nullptr) { keyv = currentBucket[BucketType::FIELD___key].Dereference(); - if (keyv != NULL) + if (keyv != nullptr) { pThis[FIELD___currentKey].SetObjectReference(keyv); pThis[FIELD___currentValue].SetObjectReference(currentBucket[BucketType::FIELD___value].Dereference()); diff --git a/src/nanoFramework.System.Text/nf_system_text.cpp b/src/nanoFramework.System.Text/nf_system_text.cpp index c490786f3f..44a699978a 100644 --- a/src/nanoFramework.System.Text/nf_system_text.cpp +++ b/src/nanoFramework.System.Text/nf_system_text.cpp @@ -8,80 +8,80 @@ static const CLR_RT_MethodHandler method_lookup[] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_nf_system_text_System_Text_UTF8Decoder::Convert___VOID__SZARRAY_U1__I4__I4__SZARRAY_CHAR__I4__I4__BOOLEAN__BYREF_I4__BYREF_I4__BYREF_BOOLEAN, - NULL, + nullptr, Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___SZARRAY_U1__STRING, Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___I4__STRING__I4__I4__SZARRAY_U1__I4, Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1, Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1__I4__I4, - NULL, - NULL, + nullptr, + nullptr, }; const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_System_Text = diff --git a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp index f13cdd1953..861867b5b1 100644 --- a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp +++ b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp @@ -6,54 +6,56 @@ #include "nf_system_text.h" - -HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___SZARRAY_U1__STRING( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___SZARRAY_U1__STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - size_t cBytes; - CLR_RT_HeapBlock_Array* arr; - const char* str; - CLR_RT_HeapBlock& ret = stack.PushValueAndClear(); + size_t cBytes; + CLR_RT_HeapBlock_Array *arr; + const char *str; + CLR_RT_HeapBlock &ret = stack.PushValueAndClear(); - str = stack.Arg1().RecoverString(); FAULT_ON_NULL(str); - cBytes = hal_strlen_s(str); + str = stack.Arg1().RecoverString(); + FAULT_ON_NULL(str); + cBytes = hal_strlen_s(str); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( ret, (CLR_UINT32)cBytes, g_CLR_RT_WellKnownTypes.UInt8 )); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(ret, (CLR_UINT32)cBytes, g_CLR_RT_WellKnownTypes.UInt8)); arr = ret.DereferenceArray(); - memcpy( arr->GetFirstElement(), str, cBytes ); + memcpy(arr->GetFirstElement(), str, cBytes); NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___I4__STRING__I4__I4__SZARRAY_U1__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___I4__STRING__I4__I4__SZARRAY_U1__I4( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const char* str = stack.Arg1().RecoverString(); - CLR_INT32 strIdx = stack.Arg2().NumericByRef().s4; - CLR_INT32 strCnt = stack.Arg3().NumericByRef().s4; - CLR_RT_HeapBlock_Array* pArrayBytes = stack.Arg4().DereferenceArray(); - CLR_INT32 byteIdx = stack.Arg5().NumericByRef().s4; + const char *str = stack.Arg1().RecoverString(); + CLR_INT32 strIdx = stack.Arg2().NumericByRef().s4; + CLR_INT32 strCnt = stack.Arg3().NumericByRef().s4; + CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg4().DereferenceArray(); + CLR_INT32 byteIdx = stack.Arg5().NumericByRef().s4; - const CLR_UINT8* i; - const CLR_UINT8* j; - CLR_RT_UnicodeHelper uh; - int strLength; + const CLR_UINT8 *i; + const CLR_UINT8 *j; + CLR_RT_UnicodeHelper uh; + int strLength; FAULT_ON_NULL(str); FAULT_ON_NULL(pArrayBytes); uh.SetInputUTF8(str); strLength = uh.CountNumberOfCharacters(); - if (strLength < 0) - NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + if (strLength < 0) + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); - if ((strIdx + strCnt) > (CLR_INT32)strLength) + if ((strIdx + strCnt) > (CLR_INT32)strLength) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); uh.ConvertFromUTF8(strIdx, true); @@ -61,7 +63,7 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___I4__STRING__ uh.ConvertFromUTF8(strCnt, true); j = uh.m_inputUTF8; - if ((byteIdx + j - i) > (CLR_INT32)pArrayBytes->m_numOfElements) + if ((byteIdx + j - i) > (CLR_INT32)pArrayBytes->m_numOfElements) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); memcpy(pArrayBytes->GetElement(byteIdx), i, j - i); @@ -71,58 +73,62 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetBytes___I4__STRING__ NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(Helper__GetChars( stack, false )); + NANOCLR_CHECK_HRESULT(Helper__GetChars(stack, false)); NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1__I4__I4( CLR_RT_StackFrame& stack ) +HRESULT Library_nf_system_text_System_Text_UTF8Encoding::GetChars___SZARRAY_CHAR__SZARRAY_U1__I4__I4( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - NANOCLR_CHECK_HRESULT(Helper__GetChars( stack, true )); + NANOCLR_CHECK_HRESULT(Helper__GetChars(stack, true)); NANOCLR_NOCLEANUP(); } -HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT_StackFrame& stack, bool fIndexed) +HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT_StackFrame &stack, bool fIndexed) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - const char* szText; - CLR_RT_HeapBlock ref; ref.SetObjectReference( NULL ); - CLR_RT_ProtectFromGC gc( ref ); - CLR_RT_HeapBlock_Array* pArrayBytes = stack.Arg1().DereferenceArray(); - CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; - CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; - CLR_RT_HeapBlock_Array* pArrayBytesCopy; - CLR_RT_HeapBlock_Array* arrTmp; + const char *szText; + CLR_RT_HeapBlock ref; + ref.SetObjectReference(nullptr); + CLR_RT_ProtectFromGC gc(ref); + CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg1().DereferenceArray(); + CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; + CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; + CLR_RT_HeapBlock_Array *pArrayBytesCopy; + CLR_RT_HeapBlock_Array *arrTmp; int cBytesCopy; FAULT_ON_NULL(pArrayBytes); _ASSERTE(pArrayBytes->m_typeOfElement == DATATYPE_U1); - if((byteIdx + byteCnt) > (CLR_INT32)pArrayBytes->m_numOfElements) NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + if ((byteIdx + byteCnt) > (CLR_INT32)pArrayBytes->m_numOfElements) + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + + cBytesCopy = byteCnt + 1; - cBytesCopy = byteCnt+1; - /* Copy the array to a temporary buffer to create a zero-terminated string */ - NANOCLR_CHECK_HRESULT( CLR_RT_HeapBlock_Array::CreateInstance( ref, cBytesCopy, g_CLR_RT_WellKnownTypes.UInt8 )); - + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(ref, cBytesCopy, g_CLR_RT_WellKnownTypes.UInt8)); + pArrayBytesCopy = ref.DereferenceArray(); - szText = (const char*)pArrayBytesCopy->GetFirstElement(); + szText = (const char *)pArrayBytesCopy->GetFirstElement(); - hal_strncpy_s( (char*) szText, cBytesCopy, (const char*)pArrayBytes->GetElement(byteIdx), byteCnt ); + hal_strncpy_s((char *)szText, cBytesCopy, (const char *)pArrayBytes->GetElement(byteIdx), byteCnt); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_String::ConvertToCharArray( szText, stack.PushValueAndClear(), arrTmp, 0, -1 )); + NANOCLR_CHECK_HRESULT( + Library_corlib_native_System_String::ConvertToCharArray(szText, stack.PushValueAndClear(), arrTmp, 0, -1)); NANOCLR_NOCLEANUP(); } diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index 485a520b6f..d679ab0d89 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -85,9 +85,9 @@ struct Settings // Get handlers for native functions in assembly pNativeAssmData = GetAssemblyNativeData(assm->name); - // If pNativeAssmData not NULL- means this assembly has native calls and there is pointer to table with native - // calls. - if (pNativeAssmData != NULL) + // If pNativeAssmData not nullptr- means this assembly has native calls and there is pointer to table with + // native calls. + if (pNativeAssmData != nullptr) { // First verify that check sum in assembly object matches hardcoded check sum. if (assm->header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) @@ -193,7 +193,7 @@ struct Settings unsigned int datSize = ROUNDTOMULTIPLE((unsigned int)(*end) - (unsigned int)(*start), CLR_UINT32); if (BlockStorageList_FindDeviceForPhysicalAddress(&device, (unsigned int)(*start), &datByteAddress) && - device != NULL) + device != nullptr) { const DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); @@ -223,7 +223,7 @@ struct Settings const CLR_RECORD_ASSEMBLY *header; unsigned char *assembliesBuffer; signed int headerInBytes = sizeof(CLR_RECORD_ASSEMBLY); - unsigned char *headerBuffer = NULL; + unsigned char *headerBuffer = nullptr; if (!isXIP) { @@ -348,7 +348,7 @@ struct Settings { m_fInitialized = false; #if defined(VIRTUAL_DEVICE) - m_configureRuntimeCallback = NULL; + m_configureRuntimeCallback = nullptr; m_configured = false; #endif } @@ -508,7 +508,7 @@ struct Settings { const char *szName = pASSM->GetString(src->name); - if (g_CLR_RT_TypeSystem.FindAssembly(szName, &src->version, true) == NULL) + if (g_CLR_RT_TypeSystem.FindAssembly(szName, &src->version, true) == nullptr) { printf( "Missing assembly: %s (%d.%d.%d.%d)\n", @@ -591,7 +591,7 @@ void ClrStartup(CLR_SETTINGS params) CLR_Debug::Printf("Ready.\r\n"); #endif - (void)g_CLR_RT_ExecutionEngine.Execute(NULL, params.MaxContextSwitches); + (void)g_CLR_RT_ExecutionEngine.Execute(nullptr, params.MaxContextSwitches); #if !defined(BUILD_RTM) CLR_Debug::Printf("Done.\r\n"); @@ -610,7 +610,7 @@ void ClrStartup(CLR_SETTINGS params) { #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) CLR_EE_DBG_SET_MASK(StateProgramExited, StateMask); - CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands::c_Monitor_ProgramExit, 0, NULL, WP_Flags_c_NonCritical); + CLR_EE_DBG_EVENT_BROADCAST(CLR_DBG_Commands::c_Monitor_ProgramExit, 0, nullptr, WP_Flags_c_NonCritical); #endif // #if defined(NANOCLR_ENABLE_SOURCELEVELDEBUGGING) if (params.EnterDebuggerLoopAfterExit) diff --git a/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage.cpp b/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage.cpp index c9a7cd1b62..d9790b2ddf 100644 --- a/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage.cpp @@ -146,7 +146,7 @@ bool BlockStorageStream_SetReadModifyWrite(BlockStorageStream *stream) bool BlockStorageStream_Initialize(BlockStorageStream *stream, unsigned int blockUsage) { - return BlockStorageStream_InitializeWithBlockStorageDevice(stream, blockUsage, NULL); + return BlockStorageStream_InitializeWithBlockStorageDevice(stream, blockUsage, nullptr); } bool BlockStorageStream_InitializeWithBlockStorageDevice( @@ -154,14 +154,14 @@ bool BlockStorageStream_InitializeWithBlockStorageDevice( unsigned int blockUsage, BlockStorageDevice *pDevice) { - DeviceBlockInfo *deviceInfo = NULL; + DeviceBlockInfo *deviceInfo = nullptr; BlockStorageStream backupStream; - BlockStorageDevice *device = NULL; + BlockStorageDevice *device = nullptr; // backup original stream, in case this gets messed up memcpy(&backupStream, stream, sizeof(BlockStorageStream)); - if (pDevice != NULL) + if (pDevice != nullptr) { device = pDevice; @@ -188,13 +188,13 @@ bool BlockStorageStream_InitializeWithBlockStorageDevice( else { // couldn't find a block matching the request usage - // need to NULL the device info that's going to be used to fill in the stream details - deviceInfo = NULL; + // need to nullptr the device info that's going to be used to fill in the stream details + deviceInfo = nullptr; } } } - if (deviceInfo != NULL) + if (deviceInfo != nullptr) { BlockRegionInfo *pRegion = &deviceInfo->Regions[stream->RegionIndex]; @@ -241,7 +241,7 @@ bool BlockStorageStream_InitializeWithBlockStorageDevice( bool BlockStorageStream_NextStream(BlockStorageStream *stream) { - if (stream->Device == NULL || BlockStorageDevice_Prev(stream->Device) == NULL) + if (stream->Device == nullptr || BlockStorageDevice_Prev(stream->Device) == nullptr) return false; const BlockRegionInfo *pRegion; @@ -261,7 +261,7 @@ bool BlockStorageStream_NextStream(BlockStorageStream *stream) { stream->Device = BlockStorageDevice_Prev(stream->Device); - if (stream->Device == NULL || BlockStorageDevice_Prev(stream->Device) == NULL) + if (stream->Device == nullptr || BlockStorageDevice_Prev(stream->Device) == nullptr) { memcpy(stream, &orig, sizeof(orig)); return false; @@ -311,7 +311,7 @@ bool BlockStorageStream_NextStream(BlockStorageStream *stream) bool BlockStorageStream_PrevStream(BlockStorageStream *stream) { - if (stream->Device == NULL || BlockStorageDevice_Prev(stream->Device) == NULL) + if (stream->Device == nullptr || BlockStorageDevice_Prev(stream->Device) == nullptr) return false; const BlockRegionInfo *pRegion; @@ -331,7 +331,7 @@ bool BlockStorageStream_PrevStream(BlockStorageStream *stream) { stream->Device = BlockStorageDevice_Prev(stream->Device); - if (stream->Device == NULL || BlockStorageDevice_Prev(stream->Device) == NULL) + if (stream->Device == nullptr || BlockStorageDevice_Prev(stream->Device) == nullptr) { memcpy(stream, &orig, sizeof(orig)); return false; @@ -449,7 +449,7 @@ bool BlockStorageStream_ReadIntoBuffer(BlockStorageStream *stream, unsigned char bool BlockStorageStream_Read(BlockStorageStream *stream, unsigned char **buffer, unsigned int length) { - if (stream == NULL || stream->Device == NULL || buffer == 0) + if (stream == nullptr || stream->Device == nullptr || buffer == 0) { return false; } @@ -532,14 +532,14 @@ BlockStorageDevice *BlockStorageDevice_Next(BlockStorageDevice *device) { (void)device; - return NULL; + return nullptr; } BlockStorageDevice *BlockStorageDevice_Prev(BlockStorageDevice *device) { (void)device; - return NULL; + return nullptr; } ///////////////////////////////////////////////////////// @@ -555,8 +555,8 @@ BlockStorageDevice *BlockStorageDevice_Prev(BlockStorageDevice *device) // bool BlockStorageDevice_InitializeDevice(BlockStorageDevice *device) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->InitializeDevice(device->m_context); } @@ -573,8 +573,8 @@ bool BlockStorageDevice_InitializeDevice(BlockStorageDevice *device) // bool BlockStorageDevice_UninitializeDevice(BlockStorageDevice *device) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->UninitializeDevice(device->m_context); } @@ -585,8 +585,8 @@ bool BlockStorageDevice_UninitializeDevice(BlockStorageDevice *device) // DeviceBlockInfo *BlockStorageDevice_GetDeviceInfo(BlockStorageDevice *device) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->GetDeviceInfo(device->m_context); } @@ -611,13 +611,13 @@ DeviceBlockInfo *BlockStorageDevice_GetDeviceInfo(BlockStorageDevice *device) // Remarks: // This function reads the number of sectors specified from the device. // -// pSectorBuff may be NULL. This is to allow for reading just the metadata. +// pSectorBuff may be nullptr. This is to allow for reading just the metadata. // -// pSectorMetadata can be set to NULL if the caller does not need the extra +// pSectorMetadata can be set to nullptr if the caller does not need the extra // data. // // If the device does not support sector Metadata it should fail if the -// pSectorMetadata parameter is not NULL. +// pSectorMetadata parameter is not nullptr. // bool BlockStorageDevice_Read( BlockStorageDevice *device, @@ -625,8 +625,8 @@ bool BlockStorageDevice_Read( unsigned int numBytes, unsigned char *buffer) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->Read(device->m_context, startAddress, numBytes, buffer); } @@ -657,10 +657,10 @@ bool BlockStorageDevice_Read( // on a sector. // // If the device does not support sector Metadata it should fail if the -// pSectorMetadata parameter is not NULL. +// pSectorMetadata parameter is not nullptr. // -// pSectorMetadata can be set to NULL if the caller does not need the extra -// data. Implementations must not attempt to write data through a NULL pointer! +// pSectorMetadata can be set to nullptr if the caller does not need the extra +// data. Implementations must not attempt to write data through a nullptr pointer! // bool BlockStorageDevice_Write( BlockStorageDevice *device, @@ -669,8 +669,8 @@ bool BlockStorageDevice_Write( unsigned char *buffer, bool readModifyWrite) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->Write(device->m_context, startAddress, numBytes, buffer, readModifyWrite); } @@ -681,8 +681,8 @@ bool BlockStorageDevice_Memset( unsigned char buffer, unsigned int numBytes) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->Memset(device->m_context, startAddress, buffer, numBytes); } @@ -706,8 +706,8 @@ bool BlockStorageDevice_Memset( // bool BlockStorageDevice_IsBlockErased(BlockStorageDevice *device, unsigned int blockStartAddress, unsigned int length) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->IsBlockErased(device->m_context, blockStartAddress, length); } @@ -727,8 +727,8 @@ bool BlockStorageDevice_IsBlockErased(BlockStorageDevice *device, unsigned int b // bool BlockStorageDevice_EraseBlock(BlockStorageDevice *device, unsigned int address) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->EraseBlock(device->m_context, address); } @@ -747,8 +747,8 @@ bool BlockStorageDevice_EraseBlock(BlockStorageDevice *device, unsigned int addr // void BlockStorageDevice_SetPowerState(BlockStorageDevice *device, unsigned int state) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); device->m_BSD->SetPowerState(device->m_context, state); } @@ -759,7 +759,7 @@ bool BlockStorageDevice_FindRegionFromAddress( unsigned int *blockRegionIndex, unsigned int *blockRangeIndex) { - ASSERT(device != NULL); + ASSERT(device != nullptr); DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); @@ -773,7 +773,7 @@ bool BlockStorageDevice_FindForBlockUsage( unsigned int *blockRegionIndex, unsigned int *blockRangeIndex) { - ASSERT(device != NULL); + ASSERT(device != nullptr); DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); @@ -787,7 +787,7 @@ bool BlockStorageDevice_FindNextUsageBlock( unsigned int *blockRegionIndex, unsigned int *blockRangeIndex) { - ASSERT(device != NULL); + ASSERT(device != nullptr); DeviceBlockInfo *deviceInfo = BlockStorageDevice_GetDeviceInfo(device); @@ -800,8 +800,8 @@ bool BlockStorageDevice_GetMemoryMappedAddress( unsigned int blockRangeIndex, unsigned int *address) { - ASSERT(device != NULL); - ASSERT(device->m_context != NULL); + ASSERT(device != nullptr); + ASSERT(device->m_context != nullptr); return device->m_BSD->GetMemoryMappedAddress(device->m_context, blockRegionIndex, blockRangeIndex, address); } @@ -814,7 +814,7 @@ void BlockStorageList_Initialize() { for (int i = 0; i < TARGET_BLOCKSTORAGE_COUNT; i++) { - g_BlockStorage.DeviceList[i] = NULL; + g_BlockStorage.DeviceList[i] = nullptr; } g_BlockStorage.DeviceCount = 0; @@ -841,7 +841,7 @@ bool BlockStorageList_AddDevice(BlockStorageDevice *pBSD, IBlockStorageDevice *v // find next empty device slot for (int i = 0; i < TARGET_BLOCKSTORAGE_COUNT; i++) { - if (g_BlockStorage.DeviceList[i] == NULL) + if (g_BlockStorage.DeviceList[i] == nullptr) { // found an empty slot @@ -888,7 +888,7 @@ bool BlockStorageList_RemoveDevice(BlockStorageDevice *pBSD, bool unInit) } // remove device - g_BlockStorage.DeviceList[i] = NULL; + g_BlockStorage.DeviceList[i] = nullptr; // done here return true; @@ -903,7 +903,7 @@ bool BlockStorageList_FindDeviceForPhysicalAddress( unsigned int physicalAddress, ByteAddress *blockAddress) { - *pBSD = NULL; + *pBSD = nullptr; BlockStorageDevice *block = BlockStorageList_GetFirstDevice(); @@ -938,13 +938,13 @@ BlockStorageDevice *BlockStorageList_GetFirstDevice() { for (int i = 0; i < TARGET_BLOCKSTORAGE_COUNT; i++) { - if (g_BlockStorage.DeviceList[i] != NULL) + if (g_BlockStorage.DeviceList[i] != nullptr) { return g_BlockStorage.DeviceList[i]; } } - return NULL; + return nullptr; } // returns the next device in BlockStorageList @@ -960,7 +960,7 @@ BlockStorageDevice *BlockStorageList_GetNextDevice(BlockStorageDevice *device) } } } - return NULL; + return nullptr; } // // returns number of devices has been declared in the system diff --git a/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage_TransientFlashDriver.cpp b/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage_TransientFlashDriver.cpp index 1a83b45e91..58491c3629 100644 --- a/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage_TransientFlashDriver.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/Target_BlockStorage_TransientFlashDriver.cpp @@ -7,7 +7,7 @@ #include -CLR_RT_Buffer *storage = NULL; +CLR_RT_Buffer *storage = nullptr; bool TransientFlashDriver_InitializeDevice(void *context) { @@ -52,9 +52,9 @@ bool TransientFlashDriver_Write( auto *config = (MEMORY_MAPPED_NOR_BLOCK_CONFIG *)context; auto offset = startAddress - config->Memory.BaseAddress; - + std::memcpy(&(*storage)[offset], buffer, numBytes); - + return true; } diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp index d049d43025..cb7e9ead85 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp @@ -46,10 +46,10 @@ #endif -DebugPrintCallback gDebugPrintCallback = NULL; +DebugPrintCallback gDebugPrintCallback = nullptr; -WireTransmitCallback WireProtocolTransmitCallback = NULL; -WireReceiveCallback WireProtocolReceiveCallback = NULL; +WireTransmitCallback WireProtocolTransmitCallback = nullptr; +WireReceiveCallback WireProtocolReceiveCallback = nullptr; // flag requesting stopping of WP processing bool _wireProtocolStopProcess; diff --git a/targets/netcore/nanoFramework.nanoCLR/platform_BlockStorage.cpp b/targets/netcore/nanoFramework.nanoCLR/platform_BlockStorage.cpp index c6061a4e91..3e01866461 100644 --- a/targets/netcore/nanoFramework.nanoCLR/platform_BlockStorage.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/platform_BlockStorage.cpp @@ -16,8 +16,8 @@ IBlockStorageDevice TransientFlash_BlockStorageInterface = { &TransientFlashDriver_GetDeviceInfo, &TransientFlashDriver_Read, &TransientFlashDriver_Write, - NULL, + nullptr, &TransientFlashDriver_IsBlockErased, &TransientFlashDriver_EraseBlock, - NULL, - NULL}; + nullptr, + nullptr}; diff --git a/targets/win32/nanoCLR/FileStore_Win32.cpp b/targets/win32/nanoCLR/FileStore_Win32.cpp index 5c3736ed91..c1464478ec 100644 --- a/targets/win32/nanoCLR/FileStore_Win32.cpp +++ b/targets/win32/nanoCLR/FileStore_Win32.cpp @@ -45,7 +45,7 @@ HRESULT CLR_RT_FileStore::SaveFile(const wchar_t *szFile, const CLR_RT_Buffer &v { NANOCLR_HEADER(); - const CLR_UINT8 *buf = NULL; + const CLR_UINT8 *buf = nullptr; size_t size = vec.size(); if (size > 0) @@ -69,7 +69,7 @@ HRESULT CLR_RT_FileStore::SaveFile(const wchar_t *szFile, const CLR_UINT8 *buf, NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - if (buf != NULL && size != 0) + if (buf != nullptr && size != 0) { if (fwrite(buf, size, 1, stream) != 1) { @@ -113,8 +113,8 @@ void CLR_RT_FileStore::ExtractTokens( bool fNoComments) { std::wstring tmp; - char *szBufA = NULL; - wchar_t *szBufW = NULL; + char *szBufA = nullptr; + wchar_t *szBufW = nullptr; const wchar_t *src; size_t len; diff --git a/targets/win32/nanoCLR/Memory.cpp b/targets/win32/nanoCLR/Memory.cpp index a0b8f9faa1..c718ec21f1 100644 --- a/targets/win32/nanoCLR/Memory.cpp +++ b/targets/win32/nanoCLR/Memory.cpp @@ -8,7 +8,7 @@ // using namespace Microsoft::SPOT::Emulator; // From minheap.cpp -static unsigned char *s_Memory_Start = NULL; +static unsigned char *s_Memory_Start = nullptr; static unsigned int s_Memory_Length = 1024 * 1024 * 10; void HeapLocation(unsigned char *&BaseAddress, unsigned int &SizeInBytes) @@ -16,7 +16,7 @@ void HeapLocation(unsigned char *&BaseAddress, unsigned int &SizeInBytes) if (!s_Memory_Start) { s_Memory_Start = - (unsigned char *)::VirtualAlloc(NULL, s_Memory_Length, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); + (unsigned char *)::VirtualAlloc(nullptr, s_Memory_Length, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if (s_Memory_Start) { @@ -31,14 +31,14 @@ void HeapLocation(unsigned char *&BaseAddress, unsigned int &SizeInBytes) SizeInBytes = s_Memory_Length; } -static unsigned char *s_CustomHeap_Start = NULL; +static unsigned char *s_CustomHeap_Start = nullptr; void CustomHeapLocation(unsigned char *&BaseAddress, unsigned int &SizeInBytes) { if (!s_CustomHeap_Start) { s_CustomHeap_Start = - (unsigned char *)::VirtualAlloc(NULL, s_Memory_Length, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); + (unsigned char *)::VirtualAlloc(nullptr, s_Memory_Length, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if (s_CustomHeap_Start) { diff --git a/targets/win32/nanoCLR/PAL/ConfigHelper_stubs.cpp b/targets/win32/nanoCLR/PAL/ConfigHelper_stubs.cpp index 55c74a90d5..c9b6a77fd4 100644 --- a/targets/win32/nanoCLR/PAL/ConfigHelper_stubs.cpp +++ b/targets/win32/nanoCLR/PAL/ConfigHelper_stubs.cpp @@ -24,12 +24,12 @@ // // const HAL_CONFIG_BLOCK* HAL_CONFIG_BLOCK::Next() const //{ -// return NULL; +// return nullptr; //} // // const void* HAL_CONFIG_BLOCK::Data() const //{ -// return NULL; +// return nullptr; //} // ////--// @@ -43,7 +43,7 @@ // // const HAL_CONFIG_BLOCK* HAL_CONFIG_BLOCK::Find( const char* Name, bool fSkipCurrent, bool fAppend ) const //{ -// return NULL; +// return nullptr; //} // ////--// diff --git a/targets/win32/nanoCLR/PAL/blockstorageList_stubs.cpp b/targets/win32/nanoCLR/PAL/blockstorageList_stubs.cpp index c3d38cbbde..30d56fa278 100644 --- a/targets/win32/nanoCLR/PAL/blockstorageList_stubs.cpp +++ b/targets/win32/nanoCLR/PAL/blockstorageList_stubs.cpp @@ -9,7 +9,7 @@ // HAL_DblLinkedList BlockStorageList::s_deviceList; // BlockStorageDevice* BlockStorageList::s_primaryDevice = NULL; -static BlockStorageDevice *s_primaryDevice = NULL; +static BlockStorageDevice *s_primaryDevice = nullptr; //--// @@ -71,7 +71,7 @@ unsigned int BlockStorageList_GetNumDevices() // bool BlockStorageList::FindDeviceForPhysicalAddress( BlockStorageDevice** pBSD, unsigned int PhysicalAddress, // ByteAddress &SectAddress) //{ -// *pBSD = NULL; +// *pBSD = nullptr; // return FALSE; //} bool BlockStorageList_FindDeviceForPhysicalAddress( diff --git a/targets/win32/nanoCLR/Various.cpp b/targets/win32/nanoCLR/Various.cpp index 3532bbb379..6c88133b21 100644 --- a/targets/win32/nanoCLR/Various.cpp +++ b/targets/win32/nanoCLR/Various.cpp @@ -102,21 +102,21 @@ void NFReleaseInfo::Init( NFReleaseInfo.PlatformName[0] = 0; // fill each one, if it was provided - if (NULL != info) + if (nullptr != info) { len = MIN(infoLen, sizeof(NFReleaseInfo.InfoString) - 1); memcpy(NFReleaseInfo.InfoString, info, len); NFReleaseInfo.InfoString[len] = 0; } - if (NULL != target) + if (nullptr != target) { len = MIN(targetLen, sizeof(NFReleaseInfo.TargetName) - 1); memcpy(NFReleaseInfo.TargetName, target, len); NFReleaseInfo.TargetName[len] = 0; } - if (NULL != platform) + if (nullptr != platform) { len = MIN(platformLen, sizeof(NFReleaseInfo.PlatformName) - 1); memcpy(NFReleaseInfo.PlatformName, platform, len); @@ -126,13 +126,13 @@ void NFReleaseInfo::Init( //////////////////////////////////////////////////////////////////////////////////////////////////// -static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[5] = {NULL, NULL, NULL, NULL, NULL}; +static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[5] = {nullptr, nullptr, nullptr, nullptr, nullptr}; void __cdecl HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { for (int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] == NULL) + if (s_rebootHandlers[i] == nullptr) { s_rebootHandlers[i] = handler; return; @@ -164,7 +164,7 @@ void __cdecl nanoHAL_Uninitialize(bool isPoweringDown) for (i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] != NULL) + if (s_rebootHandlers[i] != nullptr) { s_rebootHandlers[i](); return; diff --git a/targets/win32/nanoCLR/base64.cpp b/targets/win32/nanoCLR/base64.cpp index 06a7d25680..877feeab19 100644 --- a/targets/win32/nanoCLR/base64.cpp +++ b/targets/win32/nanoCLR/base64.cpp @@ -123,7 +123,7 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen n *= 4; - if ((dlen < n + 1) || (NULL == dst)) + if ((dlen < n + 1) || (nullptr == dst)) { *olen = n + 1; return (MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL); @@ -251,7 +251,7 @@ __nfweak int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen n = (6 * (n >> 3)) + ((6 * (n & 0x7) + 7) >> 3); n -= j; - if (dst == NULL || dlen < n) + if (dst == nullptr || dlen < n) { *olen = n; return (MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL); diff --git a/targets/win32/nanoCLR/targetPAL_Events.cpp b/targets/win32/nanoCLR/targetPAL_Events.cpp index c177697a3a..74bd1487f1 100644 --- a/targets/win32/nanoCLR/targetPAL_Events.cpp +++ b/targets/win32/nanoCLR/targetPAL_Events.cpp @@ -19,7 +19,7 @@ void local_Events_SetBoolTimer_Callback() bool Events_Initialize_Platform() { - boolEventsTimer = NULL; + boolEventsTimer = nullptr; return true; } @@ -29,7 +29,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) NATIVE_PROFILE_PAL_EVENTS(); // we assume only 1 can be active, abort previous just in case - if (boolEventsTimer != NULL) + if (boolEventsTimer != nullptr) { delete boolEventsTimer.release(); } From a4ea6bec32d9a2b8022bb4e5efcf805c0468cbef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 02:39:09 +0100 Subject: [PATCH 049/168] Fixing compiler warnings --- src/CLR/Core/TypeSystem.cpp | 100 ++++++++++++++++-------------- src/CLR/Debugger/Debugger.cpp | 2 +- src/CLR/Include/nanoCLR_Runtime.h | 20 +++--- 3 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 2cb6ac3686..978e3c2570 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -671,7 +671,7 @@ bool CLR_RT_Assembly_Instance::InitializeFromIndex(const CLR_RT_Assembly_Index & return false; } -void CLR_RT_Assembly_Instance::Clear() +void CLR_RT_Assembly_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_Assembly_Index::Clear(); @@ -710,7 +710,7 @@ bool CLR_RT_TypeSpec_Instance::InitializeFromIndex(const CLR_RT_TypeSpec_Index & return false; } -void CLR_RT_TypeSpec_Instance::Clear() +void CLR_RT_TypeSpec_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeSpec_Index::Clear(); @@ -734,7 +734,7 @@ bool CLR_RT_TypeSpec_Instance::ResolveToken(CLR_UINT32 token, CLR_RT_Assembly *a return true; } - Clear(); + ClearInstance(); return false; } @@ -816,7 +816,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodDef_Instan return true; } - Clear(); + ClearInstance(); return false; } @@ -840,7 +840,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromMethod(const CLR_RT_MethodSpec_Insta return true; } - Clear(); + ClearInstance(); return false; } @@ -894,7 +894,7 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance } } - Clear(); + ClearInstance(); return false; } @@ -905,7 +905,7 @@ bool CLR_RT_TypeDef_Instance::IsATypeHandler() return (data == g_CLR_RT_WellKnownTypes.Type.data || data == g_CLR_RT_WellKnownTypes.TypeStatic.data); } -void CLR_RT_TypeDef_Instance::Clear() +void CLR_RT_TypeDef_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_TypeDef_Index::Clear(); @@ -994,9 +994,9 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( data = typeDef.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[typeDef.Assembly() - 1]; target = assembly->GetTypeDef(typeDef.Type()); - - break; } + break; + case DATATYPE_MVAR: { CLR_RT_GenericParam_Index gpIndex; @@ -1010,9 +1010,9 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( data = gp.classTypeDef.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[gp.classTypeDef.Assembly() - 1]; target = assembly->GetTypeDef(gp.classTypeDef.Type()); - - break; } + break; + default: return false; } @@ -1049,7 +1049,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( } } - Clear(); + ClearInstance(); return false; } @@ -1086,7 +1086,7 @@ bool CLR_RT_TypeDef_Instance::SwitchToParent() } } - Clear(); + ClearInstance(); return false; } @@ -1124,7 +1124,7 @@ bool CLR_RT_FieldDef_Instance::InitializeFromIndex(const CLR_RT_FieldDef_Index & return false; } -void CLR_RT_FieldDef_Instance::Clear() +void CLR_RT_FieldDef_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_FieldDef_Index::Clear(); @@ -1209,7 +1209,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm } } - Clear(); + ClearInstance(); return false; } @@ -1240,7 +1240,7 @@ bool CLR_RT_MethodDef_Instance::InitializeFromIndex(const CLR_RT_MethodDef_Index return false; } -void CLR_RT_MethodDef_Instance::Clear() +void CLR_RT_MethodDef_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodDef_Index::Clear(); @@ -1406,7 +1406,7 @@ bool CLR_RT_MethodDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *ass } } - Clear(); + ClearInstance(); return false; } @@ -1437,7 +1437,7 @@ bool CLR_RT_GenericParam_Instance::InitializeFromIndex(const CLR_RT_GenericParam return false; } -void CLR_RT_GenericParam_Instance::Clear() +void CLR_RT_GenericParam_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_GenericParam_Index::Clear(); @@ -1468,7 +1468,7 @@ bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Ind return false; } -void CLR_RT_MethodSpec_Instance::Clear() +void CLR_RT_MethodSpec_Instance::ClearInstance() { NATIVE_PROFILE_CLR_CORE(); CLR_RT_MethodSpec_Index::Clear(); @@ -1483,8 +1483,8 @@ void CLR_RT_TypeDescriptor::TypeDescriptor_Initialize() { NATIVE_PROFILE_CLR_CORE(); m_flags = 0; - m_handlerCls.Clear(); - m_handlerGenericType.Clear(); + m_handlerCls.ClearInstance(); + m_handlerGenericType.ClearInstance(); m_reflex.Clear(); } @@ -1520,7 +1520,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromDataType(NanoCLRDataType dt) } } - m_handlerGenericType.Clear(); + m_handlerGenericType.ClearInstance(); NANOCLR_NOCLEANUP(); } @@ -1627,7 +1627,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromType(const CLR_RT_TypeDef_Index &cl } } - m_handlerGenericType.Clear(); + m_handlerGenericType.ClearInstance(); NANOCLR_NOCLEANUP(); } @@ -1649,7 +1649,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromGenericType(const CLR_RT_TypeSpec_I m_reflex.data.genericType = m_handlerGenericType; } - m_handlerCls.Clear(); + m_handlerCls.ClearInstance(); NANOCLR_NOCLEANUP(); } @@ -2039,7 +2039,7 @@ bool CLR_RECORD_ASSEMBLY::GoodAssembly() const void CLR_RECORD_ASSEMBLY::ComputeCRC() { NATIVE_PROFILE_CLR_CORE(); - memcpy(marker, c_MARKER_ASSEMBLY_V2, sizeof(marker)); + memcpy(marker, c_MARKER_ASSEMBLY_V2, sizeof(c_MARKER_ASSEMBLY_V2)); headerCRC = 0; assemblyCRC = SUPPORT_ComputeCRC(&this[1], this->TotalSize() - sizeof(*this), 0); @@ -2821,7 +2821,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() CLR_RT_TypeSpec_Instance typeSpecInstance; bool fGot = false; - const char *name = nullptr; + const char *methodName = nullptr; switch (src->Owner()) { @@ -2862,7 +2862,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() #endif } - name = GetString(src->name); + methodName = GetString(src->name); if (NANOCLR_INDEX_IS_VALID(typeSpec)) { @@ -2886,7 +2886,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() } if (typeSpecInstance.assembly - ->FindMethodDef(typeSpecInstance.target, name, this, src->signature, dst->target)) + ->FindMethodDef(typeSpecInstance.target, methodName, this, src->signature, dst->target)) { fGot = true; @@ -2897,13 +2897,13 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() if (fGot == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); + CLR_Debug::Printf("Unknown MethodRef: %s.%s.%s\r\n", "???", "???", methodName); #endif #if defined(VIRTUAL_DEVICE) - NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); + NANOCLR_CHARMSG_SET_AND_LEAVE(CLR_E_FAIL, "Unknown MethodRef: %s.%s.%s\r\n", "???", "???", methodName); #else - NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", name); + NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", methodName); #endif } } @@ -2936,13 +2936,13 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() "Unknown scope when resolving MethodRef: %s.%s.%s\r\n", qASSM->GetString(qTD->NameSpace), qASSM->GetString(qTD->Name), - name); + methodName); #endif while (NANOCLR_INDEX_IS_VALID(typeDefInstance)) { if (typeDefInstance.assembly - ->FindMethodDef(typeDefInstance.target, name, this, src->signature, dst->target)) + ->FindMethodDef(typeDefInstance.target, methodName, this, src->signature, dst->target)) { fGot = true; @@ -2965,7 +2965,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() "Unknown MethodRef: %s.%s.%s\r\n", qASSM->GetString(qTD->nameSpace), qASSM->GetString(qTD->name), - name); + methodName); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( @@ -2973,14 +2973,14 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() "Unknown MethodRef: %s.%s.%s\r\n", qASSM->GetString(qTD->nameSpace), qASSM->GetString(qTD->name), - name); + methodName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", qASSM->GetString(qTD->NameSpace), qASSM->GetString(qTD->Name), - name); + methodName); #endif } } @@ -4087,7 +4087,7 @@ CLR_UINT32 CLR_RT_Assembly::ComputeAssemblyHash(const CLR_RECORD_ASSEMBLYREF *ar //--// -bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_RT_TypeDef_Index &index) +bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); @@ -4100,7 +4100,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_R const char *szNameSpace = GetString(target->nameSpace); const char *szName = GetString(target->name); - if (!strcmp(szName, name) && !strcmp(szNameSpace, nameSpace)) + if (!strcmp(szName, typeName) && !strcmp(szNameSpace, nameSpace)) { index.Set(assemblyIndex, i); @@ -4114,7 +4114,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, const char *nameSpace, CLR_R return false; } -bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_TypeDef_Index &index) +bool CLR_RT_Assembly::FindTypeDef(const char *typeName, CLR_INDEX scope, CLR_RT_TypeDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); @@ -4126,7 +4126,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *name, CLR_INDEX scope, CLR_RT_Type { const char *szName = GetString(target->name); - if (!strcmp(szName, name)) + if (!strcmp(szName, typeName)) { index.Set(assemblyIndex, i); @@ -4316,16 +4316,22 @@ static bool local_FindFieldDef( bool CLR_RT_Assembly::FindFieldDef( const CLR_RECORD_TYPEDEF *td, - const char *name, + const char *fieldName, CLR_RT_Assembly *base, CLR_INDEX sig, CLR_RT_FieldDef_Index &index) { NATIVE_PROFILE_CLR_CORE(); - if (local_FindFieldDef(this, td->firstInstanceField, td->instanceFieldsCount, name, base, sig, index)) + + if (local_FindFieldDef(this, td->firstInstanceField, td->instanceFieldsCount, fieldName, base, sig, index)) + { return true; - if (local_FindFieldDef(this, td->firstStaticField, td->staticFieldsCount, name, base, sig, index)) + } + + if (local_FindFieldDef(this, td->firstStaticField, td->staticFieldsCount, fieldName, base, sig, index)) + { return true; + } index.Clear(); @@ -4334,7 +4340,7 @@ bool CLR_RT_Assembly::FindFieldDef( bool CLR_RT_Assembly::FindFieldDef( const CLR_RECORD_TYPESPEC *ts, - const char *name, + const char *fieldName, CLR_RT_Assembly *base, CLR_SIG sig, CLR_RT_FieldDef_Index &index) @@ -4349,7 +4355,7 @@ bool CLR_RT_Assembly::FindFieldDef( { const char *fieldName = GetString(fd->name); - if (!strcmp(fieldName, name)) + if (!strcmp(fieldName, fieldName)) { if (base) { @@ -4422,7 +4428,7 @@ bool CLR_RT_Assembly::FindMethodDef( bool CLR_RT_Assembly::FindMethodDef( const CLR_RECORD_TYPESPEC *ts, - const char *name, + const char *methodName, CLR_RT_Assembly *base, CLR_SIG sig, CLR_RT_MethodDef_Index &index) @@ -4438,7 +4444,7 @@ bool CLR_RT_Assembly::FindMethodDef( const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)base->GetTable(TBL_TypeDef); td += tsInstance.typeDefIndex; - return CLR_RT_Assembly::FindMethodDef(td, name, base, sig, index); + return CLR_RT_Assembly::FindMethodDef(td, methodName, base, sig, index); } bool CLR_RT_Assembly::FindTypeSpec(CLR_PMETADATA sig, CLR_RT_TypeSpec_Index &index) diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 649db0ad42..d5d46f15ba 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1475,7 +1475,7 @@ static bool GetInteropNativeAssemblies(uint8_t *&data, uint32_t *size, uint32_t interopNativeAssemblies = (CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities::NativeAssemblyDetails *)data; // clear buffer memory - memset(interopNativeAssemblies, 0, (uint32_t)*size); + memset(interopNativeAssemblies, 0, *size); // fill the array for (uint32_t i = 0; i < g_CLR_InteropAssembliesCount; i++) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 347808677a..a36603da0f 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -2062,7 +2062,7 @@ struct CLR_RT_Assembly_Instance : public CLR_RT_Assembly_Index //--// bool InitializeFromIndex(const CLR_RT_Assembly_Index &index); - void Clear(); + void ClearInstance(); }; struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index @@ -2075,7 +2075,7 @@ struct CLR_RT_TypeSpec_Instance : public CLR_RT_TypeSpec_Index //--// bool InitializeFromIndex(const CLR_RT_TypeSpec_Index &index); - void Clear(); + void ClearInstance(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); }; @@ -2099,7 +2099,7 @@ struct CLR_RT_TypeDef_Instance : public CLR_RT_TypeDef_Index bool InitializeFromField(const CLR_RT_FieldDef_Instance &fd); bool InitializeFromMethod(const CLR_RT_MethodSpec_Instance &ms); - void Clear(); + void ClearInstance(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm, const CLR_RT_MethodDef_Instance *caller = nullptr); @@ -2132,7 +2132,7 @@ struct CLR_RT_FieldDef_Instance : public CLR_RT_FieldDef_Index //--// bool InitializeFromIndex(const CLR_RT_FieldDef_Index &index); - void Clear(); + void ClearInstance(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); @@ -2160,7 +2160,7 @@ struct CLR_RT_MethodDef_Instance : public CLR_RT_MethodDef_Index //--// bool InitializeFromIndex(const CLR_RT_MethodDef_Index &index); - void Clear(); + void ClearInstance(); bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); @@ -2196,9 +2196,7 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index bool InitializeFromIndex(const CLR_RT_GenericParam_Index &index); - void Clear(); - - CLR_INDEX OwnerType(); + void ClearInstance(); //--// @@ -2217,17 +2215,13 @@ struct CLR_RT_MethodSpec_Instance : public CLR_RT_MethodSpec_Index bool InitializeFromIndex(const CLR_RT_MethodSpec_Index &index); - void Clear(); + void ClearInstance(); CLR_RT_MethodSpec_CrossReference &CrossReference() const { return assembly->crossReferenceMethodSpec[Method()]; } - CLR_INDEX Container(); - - CLR_INDEX Instantiation(); - CLR_EncodedMethodDefOrRef InstanceOfMethod; }; From 68f86b3d41107aecf1df45ac184c686442ef779f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 03:24:47 +0100 Subject: [PATCH 050/168] Replace var declaration and fix more compiler warnings --- .../CorLib/corlib_native_System_DateTime.cpp | 2 +- ...rlib_native_System_Reflection_Assembly.cpp | 4 +- .../Core/Serialization/BinaryFormatter.cpp | 22 ++--- src/CLR/Core/TypeSystem.cpp | 70 +++++++-------- src/CLR/Debugger/Debugger.cpp | 90 +++++++++---------- src/CLR/Diagnostics/Info.cpp | 6 +- src/CLR/Diagnostics/Profiler.cpp | 34 +++---- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 20 ++--- src/CLR/Messaging/Messaging.cpp | 12 +-- .../nf_native_system_math_System_Math.cpp | 60 ++++++------- .../nanoFramework.nanoCLR/CLRStartup.cpp | 10 +-- 11 files changed, 165 insertions(+), 165 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 014aa9b9ed..cb6dbec246 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -73,7 +73,7 @@ HRESULT Library_corlib_native_System_DateTime::GetDateTimePart___I4__SystemDateT signed int days; SYSTEMTIME st; - DateTimePart dateTimePart = (DateTimePart)stack.Arg1().NumericByRef().s4; + auto dateTimePart = (DateTimePart)stack.Arg1().NumericByRef().s4; if (Expand(stack, st)) { diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index fff5a3bce0..d1889614c0 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -92,7 +92,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys if (num) { - CLR_RT_HeapBlock *pArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); + auto *pArray = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); for (CLR_UINT32 i = 0; i < num; i++, pArray++) { @@ -161,7 +161,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam g_CLR_RT_WellKnownTypes.String)); { - CLR_RT_HeapBlock *pArray = (CLR_RT_HeapBlock *)result.Array()->GetFirstElement(); + auto *pArray = (CLR_RT_HeapBlock *)result.Array()->GetFirstElement(); for (int indexResourceFile = 0; indexResourceFile < pAssm->tablesSize[TBL_ResourcesFiles]; indexResourceFile++) diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 340d1ada1e..3cbf90bfea 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -957,7 +957,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) if (fSigned) { - CLR_INT64 valS = (CLR_INT64)val; + auto valS = (CLR_INT64)val; if (m_hints._scale != 0) valS /= (CLR_INT64)m_hints._scale; @@ -976,7 +976,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::EmitValue(int &res) } else { - CLR_UINT64 valU = (CLR_UINT64)val; + auto valU = (CLR_UINT64)val; if (m_hints._scale != 0) valU /= (CLR_UINT64)m_hints._scale; @@ -1048,9 +1048,9 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) { CLR_RT_HeapBlock_String *str = CLR_RT_HeapBlock_String::CreateInstance(*m_value, len); CHECK_ALLOCATION(str); - char *dst = (char *)str->StringText(); + auto dstString = (char *)str->StringText(); - NANOCLR_CHECK_HRESULT(m_bf->ReadArray((CLR_UINT8 *)dst, len)); + NANOCLR_CHECK_HRESULT(m_bf->ReadArray((CLR_UINT8 *)dstString, len)); dst[len] = 0; } @@ -1180,7 +1180,7 @@ HRESULT CLR_RT_BinaryFormatter::State::CreateInstance( NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - State *ptr = EVENTCACHE_EXTRACT_NODE_INITTOZERO(g_CLR_RT_EventCache, State, DATATYPE_SERIALIZER_STATE); + auto *ptr = EVENTCACHE_EXTRACT_NODE_INITTOZERO(g_CLR_RT_EventCache, State, DATATYPE_SERIALIZER_STATE); CHECK_ALLOCATION(ptr); @@ -1422,7 +1422,7 @@ HRESULT CLR_RT_BinaryFormatter::State::GetValue() NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - State *prev = (State *)Prev(); + auto *prev = (State *)Prev(); if (prev->Prev() == nullptr) { NANOCLR_SET_AND_LEAVE(m_value.SetValue(&m_parent->m_value)); @@ -1454,7 +1454,7 @@ HRESULT CLR_RT_BinaryFormatter::State::SetValueAndDestroyInstance() if (m_parent->m_fDeserialize) { - State *prev = (State *)Prev(); + auto *prev = (State *)Prev(); if (prev->Prev() == nullptr) { @@ -1778,7 +1778,7 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - CLR_RT_BinaryFormatter *ptr = + auto *ptr = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_BinaryFormatter, DATATYPE_SERIALIZER_HEAD); res = ptr; @@ -1820,7 +1820,7 @@ HRESULT CLR_RT_BinaryFormatter::Advance() while (true) { - State *top = (State *)m_states.LastNode(); + auto *top = (State *)m_states.LastNode(); if (top->Prev() == nullptr) { @@ -1840,7 +1840,7 @@ void CLR_RT_BinaryFormatter::PrepareForGC(void *data) NATIVE_PROFILE_CLR_SERIALIZATION(); if (data != nullptr) { - CLR_RT_BinaryFormatter *bf = (CLR_RT_BinaryFormatter *)data; + auto *bf = (CLR_RT_BinaryFormatter *)data; g_CLR_RT_GarbageCollector.CheckSingleBlock_Force(&bf->m_value); @@ -1997,7 +1997,7 @@ HRESULT CLR_RT_BinaryFormatter::TrackDuplicate(CLR_RT_HeapBlock *object) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - DuplicateTracker *ptr = + auto *ptr = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, DuplicateTracker, DATATYPE_SERIALIZER_DUPLICATE); CHECK_ALLOCATION(ptr); diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 978e3c2570..3ed8892367 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -118,20 +118,20 @@ void CLR_RT_ReflectionDef_Index::InitializeFromHash(CLR_UINT32 hash) CLR_UINT64 CLR_RT_ReflectionDef_Index::GetRawData() const { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT64 data; - _ASSERTE(sizeof(data) == sizeof(*this)); + CLR_UINT64 dataRaw; + _ASSERTE(sizeof(dataRaw) == sizeof(*this)); - memcpy(&data, this, sizeof(data)); + memcpy(&dataRaw, this, sizeof(dataRaw)); - return data; + return dataRaw; } -void CLR_RT_ReflectionDef_Index::SetRawData(CLR_UINT64 data) +void CLR_RT_ReflectionDef_Index::SetRawData(CLR_UINT64 dataRaw) { NATIVE_PROFILE_CLR_CORE(); - _ASSERTE(sizeof(data) == sizeof(*this)); + _ASSERTE(sizeof(dataRaw) == sizeof(*this)); - memcpy(this, &data, sizeof(data)); + memcpy(this, &dataRaw, sizeof(dataRaw)); } bool CLR_RT_ReflectionDef_Index::Convert(CLR_RT_HeapBlock &ref, CLR_RT_Assembly_Instance &inst) @@ -606,7 +606,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) IsGenericInst = true; // get data type - NanoCLRDataType dt = (NanoCLRDataType)*Signature++; + auto dt = (NanoCLRDataType)*Signature++; // sanity check if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) @@ -850,8 +850,8 @@ bool CLR_RT_TypeDef_Instance::InitializeFromField(const CLR_RT_FieldDef_Instance NATIVE_PROFILE_CLR_CORE(); if (NANOCLR_INDEX_IS_VALID(fd)) { - CLR_RT_Assembly *assm = fd.assembly; - const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)assm->GetTable(TBL_TypeDef); + CLR_RT_Assembly const *assm = fd.assembly; + auto *td = (const CLR_RECORD_TYPEDEF *)assm->GetTable(TBL_TypeDef); CLR_INDEX indexField = fd.Field(); int i = assm->tablesSize[TBL_TypeDef]; @@ -980,7 +980,7 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( parser.Advance(element); // store parameter position - CLR_INT8 genericParamPosition = (CLR_INT8)element.GenericParamPosition; + auto genericParamPosition = (CLR_INT8)element.GenericParamPosition; switch (element.DataType) { @@ -1749,7 +1749,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) case DATATYPE_DELEGATE_HEAD: { - CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)obj; + auto *dlg = (const CLR_RT_HeapBlock_Delegate *)obj; cls = NANOCLR_INDEX_IS_VALID(dlg->m_cls) ? &dlg->m_cls : &g_CLR_RT_WellKnownTypes.Delegate; } @@ -1757,7 +1757,7 @@ HRESULT CLR_RT_TypeDescriptor::InitializeFromObject(const CLR_RT_HeapBlock &ref) case DATATYPE_DELEGATELIST_HEAD: { - CLR_RT_HeapBlock_Delegate_List *dlgLst = (CLR_RT_HeapBlock_Delegate_List *)obj; + auto *dlgLst = (const CLR_RT_HeapBlock_Delegate_List *)obj; cls = NANOCLR_INDEX_IS_VALID(dlgLst->m_cls) ? &dlgLst->m_cls : &g_CLR_RT_WellKnownTypes.MulticastDelegate; @@ -1940,7 +1940,7 @@ HRESULT CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(const CLR_RT_HeapBlock NANOCLR_HEADER(); - CLR_RT_HeapBlock *obj = (CLR_RT_HeapBlock *)&ref; + auto *obj = (CLR_RT_HeapBlock *)&ref; NanoCLRDataType dt; NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractObjectAndDataType(obj, dt)); @@ -2151,7 +2151,7 @@ bool CLR_RT_Assembly::IsSameAssembly(const CLR_RT_Assembly &assm) const void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8 *buffer = (CLR_UINT8 *)this; + auto *buffer = (CLR_UINT8 *)this; int i; name = GetString(header->assemblyName); @@ -2189,7 +2189,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) //--// { - const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)this->GetTable(TBL_TypeDef); + const auto *src = (const CLR_RECORD_TYPEDEF *)this->GetTable(TBL_TypeDef); CLR_RT_TypeDef_CrossReference *dst = this->crossReferenceTypeDef; for (i = 0; i < this->tablesSize[TBL_TypeDef]; i++, src++, dst++) { @@ -2200,7 +2200,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_FIELDDEF *src = (const CLR_RECORD_FIELDDEF *)this->GetTable(TBL_FieldDef); + auto *src = (const CLR_RECORD_FIELDDEF *)this->GetTable(TBL_FieldDef); CLR_RT_FieldDef_CrossReference *dst = this->crossReferenceFieldDef; for (i = 0; i < this->tablesSize[TBL_FieldDef]; i++, src++, dst++) { @@ -2209,7 +2209,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_METHODDEF *src = (const CLR_RECORD_METHODDEF *)this->GetTable(TBL_MethodDef); + auto *src = (const CLR_RECORD_METHODDEF *)this->GetTable(TBL_MethodDef); CLR_RT_MethodDef_CrossReference *dst = this->crossReferenceMethodDef; for (i = 0; i < this->tablesSize[TBL_MethodDef]; i++, src++, dst++) { @@ -2218,7 +2218,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_GENERICPARAM *src = (const CLR_RECORD_GENERICPARAM *)this->GetTable(TBL_GenericParam); + auto *src = (const CLR_RECORD_GENERICPARAM *)this->GetTable(TBL_GenericParam); CLR_RT_GenericParam_CrossReference *dst = this->crossReferenceGenericParam; for (i = 0; i < this->tablesSize[TBL_GenericParam]; i++, src++, dst++) { @@ -2227,7 +2227,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_METHODSPEC *src = (const CLR_RECORD_METHODSPEC *)this->GetTable(TBL_MethodSpec); + auto *src = (const CLR_RECORD_METHODSPEC *)this->GetTable(TBL_MethodSpec); CLR_RT_MethodSpec_CrossReference *dst = this->crossReferenceMethodSpec; for (i = 0; i < this->tablesSize[TBL_MethodSpec]; i++, src++, dst++) { @@ -2236,7 +2236,7 @@ void CLR_RT_Assembly::AssemblyInitialize(CLR_RT_Assembly::Offsets &offsets) } { - const CLR_RECORD_TYPESPEC *src = (const CLR_RECORD_TYPESPEC *)this->GetTable(TBL_TypeSpec); + auto *src = (const CLR_RECORD_TYPESPEC *)this->GetTable(TBL_TypeSpec); CLR_RT_TypeSpec_CrossReference *dst = this->crossReferenceTypeSpec; for (i = 0; i < this->tablesSize[TBL_TypeSpec]; i++, src++, dst++) { @@ -2263,7 +2263,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R NANOCLR_HEADER(); CLR_UINT8 buf[sizeof(CLR_RT_Assembly)]; - CLR_RT_Assembly *skeleton = (CLR_RT_Assembly *)buf; + auto *skeleton = (CLR_RT_Assembly *)buf; NANOCLR_CLEAR(*skeleton); @@ -2300,7 +2300,7 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R // Count static fields. { - const CLR_RECORD_TYPEDEF *src = (const CLR_RECORD_TYPEDEF *)skeleton->GetTable(TBL_TypeDef); + auto *src = (const CLR_RECORD_TYPEDEF *)skeleton->GetTable(TBL_TypeDef); for (int i = 0; i < skeleton->tablesSize[TBL_TypeDef]; i++, src++) { @@ -3105,10 +3105,10 @@ void CLR_RT_Assembly::ResolveLink() CLR_RT_GenericParam_CrossReference *gp = &crossReferenceGenericParam[src->firstGenericParam]; // get generic parameter count for stop condition - int num = src->genericParamCount; + int count = src->genericParamCount; CLR_UINT16 indexGenericParam = src->firstGenericParam; - for (; num; num--, gp++, indexGenericParam++) + for (; count; count--, gp++, indexGenericParam++) { CLR_RT_GenericParam_Index gpIndex; gpIndex.Set(assemblyIndex, indexGenericParam); @@ -4353,9 +4353,9 @@ bool CLR_RT_Assembly::FindFieldDef( for (int i = 0; i < tablesSize[TBL_FieldDef]; i++, fd++) { - const char *fieldName = GetString(fd->name); + const char *tempFieldName = GetString(fd->name); - if (!strcmp(fieldName, fieldName)) + if (!strcmp(fieldName, tempFieldName)) { if (base) { @@ -4384,7 +4384,7 @@ bool CLR_RT_Assembly::FindFieldDef( bool CLR_RT_Assembly::FindMethodDef( const CLR_RECORD_TYPEDEF *td, - const char *name, + const char *methodName, CLR_RT_Assembly *base, CLR_SIG sig, CLR_RT_MethodDef_Index &index) @@ -4396,9 +4396,9 @@ bool CLR_RT_Assembly::FindMethodDef( for (i = 0; i < num; i++, md++) { - const char *methodName = GetString(md->name); + const char *tempMethodName = GetString(md->name); - if (!strcmp(methodName, name)) + if (!strcmp(methodName, tempMethodName)) { bool fMatch = true; @@ -4441,7 +4441,7 @@ bool CLR_RT_Assembly::FindMethodDef( CLR_RT_TypeSpec_Instance tsInstance; tsInstance.InitializeFromIndex(tsIndex); - const CLR_RECORD_TYPEDEF *td = (const CLR_RECORD_TYPEDEF *)base->GetTable(TBL_TypeDef); + auto *td = (const CLR_RECORD_TYPEDEF *)base->GetTable(TBL_TypeDef); td += tsInstance.typeDefIndex; return CLR_RT_Assembly::FindMethodDef(td, methodName, base, sig, index); @@ -4611,7 +4611,7 @@ CLR_UINT32 CLR_RT_Assembly::ComputeHashForName(const CLR_RT_TypeDef_Index &td, C CLR_UINT32 CLR_RT_Assembly::ComputeHashForType(NanoCLRDataType et, CLR_UINT32 hash) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT8 val = (CLR_UINT8)CLR_RT_TypeSystem::MapDataTypeToElementType(et); + auto val = (CLR_UINT8)CLR_RT_TypeSystem::MapDataTypeToElementType(et); CLR_UINT32 hashPost = SUPPORT_ComputeCRC(&val, sizeof(val), hash); @@ -5026,8 +5026,8 @@ int CompareResource(const void *p1, const void *p2) { NATIVE_PROFILE_CLR_CORE(); - const CLR_RECORD_RESOURCE *resource1 = (const CLR_RECORD_RESOURCE *)p1; - const CLR_RECORD_RESOURCE *resource2 = (const CLR_RECORD_RESOURCE *)p2; + auto *resource1 = (const CLR_RECORD_RESOURCE *)p1; + auto *resource2 = (const CLR_RECORD_RESOURCE *)p2; return (int)resource1->id - (int)resource2->id; } @@ -6232,7 +6232,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) g_CLR_RT_WellKnownTypes.Object)); // get a pointer to the first element - CLR_RT_HeapBlock *currentParam = + auto *currentParam = (CLR_RT_HeapBlock *)m_lastValue.m_value.DereferenceArray()->GetFirstElement(); do diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index d5d46f15ba..8d75f49640 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -376,7 +376,7 @@ bool CLR_DBG_Debugger::Monitor_Ping(WP_Message *msg) if ((msg->m_header.m_flags & WP_Flags_c_Reply) == 0) { Monitor_Ping_Reply cmdReply; - Monitor_Ping_Command *cmd = (Monitor_Ping_Command *)msg->m_payload; + auto *cmd = (Monitor_Ping_Command *)msg->m_payload; // default is to stop the debugger (backwards compatibility) fStopOnBoot = (cmd != nullptr) && (cmd->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); @@ -427,7 +427,7 @@ bool CLR_DBG_Debugger::Monitor_Ping(WP_Message *msg) } else { - Monitor_Ping_Reply *pingReply = (Monitor_Ping_Reply *)msg->m_payload; + auto *pingReply = (Monitor_Ping_Reply *)msg->m_payload; // default is to stop the debugger (backwards compatibility) fStopOnBoot = (pingReply != nullptr) && (pingReply->Flags & Monitor_Ping_c_Ping_DbgFlag_Stop); @@ -896,7 +896,7 @@ void CLR_DBG_Debugger::AccessMemory( #if defined(VIRTUAL_DEVICE) - bool proceed = false; + proceed = false; void *temp; temp = (void *)sectAddr; @@ -963,7 +963,7 @@ bool CLR_DBG_Debugger::Monitor_ReadMemory(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands_Monitor_ReadMemory *cmd = (CLR_DBG_Commands_Monitor_ReadMemory *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands_Monitor_ReadMemory *)msg->m_payload; uint8_t *buffer; uint32_t errorCode; @@ -1008,7 +1008,7 @@ bool CLR_DBG_Debugger::Monitor_WriteMemory(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands_Monitor_WriteMemory *cmd = (CLR_DBG_Commands_Monitor_WriteMemory *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands_Monitor_WriteMemory *)msg->m_payload; CLR_DBG_Commands_Monitor_WriteMemory_Reply cmdReply; g_CLR_DBG_Debugger->AccessMemory(cmd->address, cmd->length, cmd->data, AccessMemory_Write, &cmdReply); @@ -1022,7 +1022,7 @@ bool CLR_DBG_Debugger::Monitor_CheckMemory(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands_Monitor_CheckMemory *cmd = (CLR_DBG_Commands_Monitor_CheckMemory *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands_Monitor_CheckMemory *)msg->m_payload; CLR_DBG_Commands_Monitor_CheckMemory_Reply cmdReply; uint32_t errorCode; @@ -1038,7 +1038,7 @@ bool CLR_DBG_Debugger::Monitor_EraseMemory(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands_Monitor_EraseMemory *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands_Monitor_EraseMemory *)msg->m_payload; CLR_DBG_Commands_Monitor_EraseMemory_Reply cmdReply; g_CLR_DBG_Debugger->AccessMemory(cmd->address, cmd->length, nullptr, AccessMemory_Erase, &cmdReply); @@ -1052,7 +1052,7 @@ bool CLR_DBG_Debugger::Monitor_Execute(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Monitor_Execute *cmd = (CLR_DBG_Commands::Monitor_Execute *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Monitor_Execute *)msg->m_payload; #if defined(BUILD_RTM) if (!DebuggerPort_IsUsingSsl(HalSystemConfig.DebuggerPort)) @@ -1072,7 +1072,7 @@ bool CLR_DBG_Debugger::Monitor_Reboot(WP_Message *msg) bool success = true; - CLR_DBG_Commands::Monitor_Reboot *cmd = (CLR_DBG_Commands::Monitor_Reboot *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Monitor_Reboot *)msg->m_payload; if (CLR_DBG_Commands::Monitor_Reboot::c_EnterNanoBooter == (cmd->m_flags & CLR_DBG_Commands::Monitor_Reboot::c_EnterNanoBooter)) @@ -1365,7 +1365,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_ChangeConditions(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Execution_ChangeConditions *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_ChangeConditions *)msg->m_payload; // save current value @@ -1509,7 +1509,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_QueryCLRCapabilities(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities *)msg->m_payload; CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities::ReplyUnion reply; @@ -1744,7 +1744,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_Allocate(WP_Message *msg) bool CLR_DBG_Debugger::Debugging_UpgradeToSsl(WP_Message *msg) { - CLR_DBG_Commands::Debugging_UpgradeToSsl *cmd = (CLR_DBG_Commands::Debugging_UpgradeToSsl *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_UpgradeToSsl *)msg->m_payload; CLR_DBG_Commands::Debugging_UpgradeToSsl::Reply reply; if (!DebuggerPort_IsSslSupported(HalSystemConfig.DebuggerPort)) @@ -1866,7 +1866,7 @@ static bool FillValues( case DATATYPE_SZARRAY: { - CLR_RT_HeapBlock_Array *ptr2 = (CLR_RT_HeapBlock_Array *)ptr; + CLR_RT_HeapBlock_Array const *ptr2 = (CLR_RT_HeapBlock_Array *)ptr; dst->m_array_numOfElements = ptr2->m_numOfElements; dst->m_array_depth = ptr2->ReflectionDataConst().levels; @@ -1982,7 +1982,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_Breakpoints(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Execution_Breakpoints *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_Breakpoints *)msg->m_payload; g_CLR_RT_ExecutionEngine.InstallBreakpoints( @@ -2231,7 +2231,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Stack(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_Stack *cmd = (CLR_DBG_Commands::Debugging_Thread_Stack *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Stack *)msg->m_payload; CLR_DBG_Commands::Debugging_Thread_Stack::Reply *cmdReply = nullptr; int len = 0; @@ -2253,7 +2253,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Kill(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_Kill *cmd = (CLR_DBG_Commands::Debugging_Thread_Kill *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Kill *)msg->m_payload; CLR_DBG_Commands::Debugging_Thread_Kill::Reply cmdReply; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); @@ -2277,7 +2277,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Suspend(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_Suspend *cmd = (CLR_DBG_Commands::Debugging_Thread_Suspend *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Suspend *)msg->m_payload; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); if (th) @@ -2294,7 +2294,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Resume(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_Resume *cmd = (CLR_DBG_Commands::Debugging_Thread_Resume *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Resume *)msg->m_payload; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); if (th) @@ -2311,7 +2311,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Get(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); CLR_DBG_Debugger *dbg = g_CLR_DBG_Debugger; - CLR_DBG_Commands::Debugging_Thread_Get *cmd = (CLR_DBG_Commands::Debugging_Thread_Get *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Get *)msg->m_payload; CLR_RT_Thread *th = dbg->GetThreadFromPid(cmd->m_pid); CLR_RT_HeapBlock *pThread; bool fFound = false; @@ -2411,7 +2411,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_GetException *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_GetException *)msg->m_payload; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); CLR_RT_HeapBlock *blk = nullptr; @@ -2432,7 +2432,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_Unwind(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Thread_Unwind *cmd = (CLR_DBG_Commands::Debugging_Thread_Unwind *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_Unwind *)msg->m_payload; CLR_RT_StackFrame *call; CLR_RT_Thread *th; bool isInline = false; @@ -2465,7 +2465,7 @@ bool CLR_DBG_Debugger::Debugging_Stack_Info(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Stack_Info *cmd = (CLR_DBG_Commands::Debugging_Stack_Info *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Stack_Info *)msg->m_payload; CLR_DBG_Commands::Debugging_Stack_Info::Reply cmdReply; CLR_RT_StackFrame *call; bool isInline = false; @@ -2503,7 +2503,7 @@ bool CLR_DBG_Debugger::Debugging_Stack_SetIP(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Stack_SetIP *cmd = (CLR_DBG_Commands::Debugging_Stack_SetIP *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Stack_SetIP *)msg->m_payload; CLR_RT_StackFrame *call; bool isInline = false; @@ -2623,7 +2623,7 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_ResizeScratchPad *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Value_ResizeScratchPad *)msg->m_payload; CLR_RT_HeapBlock ref; @@ -2664,7 +2664,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_GetStack *cmd = (CLR_DBG_Commands::Debugging_Value_GetStack *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetStack *)msg->m_payload; CLR_RT_StackFrame *call; bool isInline = false; @@ -2840,7 +2840,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_GetField *cmd = (CLR_DBG_Commands::Debugging_Value_GetField *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetField *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; CLR_RT_HeapBlock *reference = nullptr; CLR_RT_HeapBlock tmp; @@ -2950,7 +2950,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_GetArray *cmd = (CLR_DBG_Commands::Debugging_Value_GetArray *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetArray *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *reference = nullptr; CLR_RT_HeapBlock tmp; @@ -3001,7 +3001,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetBlock(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_GetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_GetBlock *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; // WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); @@ -3014,7 +3014,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetScratchPad(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_GetScratchPad *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetScratchPad *)msg->m_payload; CLR_RT_HeapBlock *blk = GetScratchPad_Helper(cmd->m_index); @@ -3027,7 +3027,7 @@ bool CLR_DBG_Debugger::Debugging_Value_SetBlock(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_SetBlock *cmd = (CLR_DBG_Commands::Debugging_Value_SetBlock *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_SetBlock *)msg->m_payload; CLR_RT_HeapBlock *blk = cmd->m_heapblock; // WP_ReplyToCommand(msg, SetBlockHelper(blk, (NanoCLRDataType)cmd->m_dt, cmd->m_builtinValue), false, nullptr, 0); @@ -3040,7 +3040,7 @@ bool CLR_DBG_Debugger::Debugging_Value_SetArray(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_SetArray *cmd = (CLR_DBG_Commands::Debugging_Value_SetArray *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_SetArray *)msg->m_payload; CLR_RT_HeapBlock_Array *array = cmd->m_heapblock; CLR_RT_HeapBlock tmp; @@ -3077,7 +3077,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_AllocateObject *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateObject *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3100,7 +3100,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_AllocateString *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateString *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3111,7 +3111,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) if (str) { - char *dst = (char *)str->StringText(); + auto *dst = (char *)str->StringText(); // // Fill the string with spaces, it will be set at a later stage. @@ -3133,7 +3133,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_AllocateArray *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateArray *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3165,7 +3165,7 @@ bool CLR_DBG_Debugger::Profiling_Command(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); CLR_DBG_Debugger *dbg = g_CLR_DBG_Debugger; - CLR_DBG_Commands::Profiling_Command *cmd = (CLR_DBG_Commands::Profiling_Command *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Profiling_Command *)msg->m_payload; CLR_UINT8 command = cmd->m_command; switch (command) @@ -3186,8 +3186,8 @@ bool CLR_DBG_Debugger::Profiling_Command(WP_Message *msg) bool CLR_DBG_Debugger::Profiling_ChangeConditions(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Profiling_Command *parent_cmd = (CLR_DBG_Commands::Profiling_Command *)msg->m_payload; - CLR_DBG_Commands::Profiling_ChangeConditions *cmd = (CLR_DBG_Commands::Profiling_ChangeConditions *)&parent_cmd[1]; + auto *parent_cmd = (CLR_DBG_Commands::Profiling_Command *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Profiling_ChangeConditions *)&parent_cmd[1]; g_CLR_RT_ExecutionEngine.m_iProfiling_Conditions |= cmd->m_set; g_CLR_RT_ExecutionEngine.m_iProfiling_Conditions &= ~cmd->m_reset; @@ -3356,7 +3356,7 @@ bool CLR_DBG_Debugger::Debugging_Value_Assign(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Value_Assign *cmd = (CLR_DBG_Commands::Debugging_Value_Assign *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_Assign *)msg->m_payload; CLR_RT_HeapBlock *blkDst = cmd->m_heapblockDst; CLR_RT_HeapBlock *blkSrc = cmd->m_heapblockSrc; @@ -3485,7 +3485,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Assembly(WP_Message *msg) CLR_DBG_Commands::Debugging_Resolve_Assembly::Reply *cmdReply; - CLR_DBG_Commands::Debugging_Resolve_Assembly *cmd = (CLR_DBG_Commands::Debugging_Resolve_Assembly *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_Assembly *)msg->m_payload; CLR_RT_Assembly *assm = g_CLR_DBG_Debugger->IsGoodAssembly(cmd->m_index.Assembly()); #ifdef TARGET_RAM_CONSTRAINED @@ -3542,7 +3542,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Type(WP_Message *msg) CLR_RT_TypeDef_Instance inst; CLR_DBG_Commands::Debugging_Resolve_Type::Reply *cmdReply; - CLR_DBG_Commands::Debugging_Resolve_Type *cmd = (CLR_DBG_Commands::Debugging_Resolve_Type *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_Type *)msg->m_payload; #ifdef TARGET_RAM_CONSTRAINED // try allocating memory for reply struct @@ -3585,7 +3585,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Field(WP_Message *msg) CLR_DBG_Commands::Debugging_Resolve_Field::Reply *cmdReply; CLR_RT_FieldDef_Instance inst; - CLR_DBG_Commands::Debugging_Resolve_Field *cmd = (CLR_DBG_Commands::Debugging_Resolve_Field *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_Field *)msg->m_payload; #ifdef TARGET_RAM_CONSTRAINED // try allocating memory for reply struct @@ -3636,7 +3636,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_Method(WP_Message *msg) CLR_RT_MethodDef_Instance inst; CLR_RT_TypeDef_Instance instOwner; - CLR_DBG_Commands::Debugging_Resolve_Method *cmd = (CLR_DBG_Commands::Debugging_Resolve_Method *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_Method *)msg->m_payload; #ifdef TARGET_RAM_CONSTRAINED // try allocating memory for reply struct @@ -3677,7 +3677,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_VirtualMethod(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Resolve_VirtualMethod *cmd = + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_VirtualMethod *)msg->m_payload; CLR_DBG_Commands::Debugging_Resolve_VirtualMethod::Reply cmdReply; CLR_RT_TypeDef_Index cls; @@ -3815,7 +3815,7 @@ bool CLR_DBG_Debugger::Debugging_Info_SetJMC(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - CLR_DBG_Commands::Debugging_Info_SetJMC *cmd = (CLR_DBG_Commands::Debugging_Info_SetJMC *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Info_SetJMC *)msg->m_payload; bool fJMC = (cmd->m_fIsJMC != 0); switch (cmd->m_kind) diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 3a0b5c1468..8b1d31872a 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -150,7 +150,7 @@ void CLR_Debug::Emit(const char *text, int len) if (s_CLR_RT_fTrace_RedirectOutput.size()) { - static HANDLE hFile = INVALID_HANDLE_VALUE; + static auto hFile = INVALID_HANDLE_VALUE; static int lines = 0; static int num = 0; @@ -832,7 +832,7 @@ void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) case DATATYPE_SZARRAY: { - CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + auto *array = (CLR_RT_HeapBlock_Array *)ptr; CLR_RT_DUMP::TYPE(array->ReflectionData()); } @@ -840,7 +840,7 @@ void CLR_RT_DUMP::OBJECT(CLR_RT_HeapBlock *ptr, const char *text) case DATATYPE_DELEGATE_HEAD: { - CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; + auto *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; CLR_RT_DUMP::METHOD(dlg->DelegateFtn(), nullptr); } diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 59c6502c9b..cac5daf84e 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -288,7 +288,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_SZARRAY: { // Special case needed to dump out array data type and levels. - CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + auto *array = (CLR_RT_HeapBlock_Array *)ptr; PackAndWriteBits(array->ReflectionDataConst().data.type); PackAndWriteBits(array->ReflectionDataConst().levels); @@ -302,7 +302,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_ASSEMBLY: { - CLR_RT_Assembly *assembly = (CLR_RT_Assembly *)ptr; + auto *assembly = (CLR_RT_Assembly *)ptr; DumpSingleReference(assembly->file); #if !defined(NANOCLR_APPDOMAINS) DumpListOfReferences(assembly->staticFields, assembly->staticFieldsCount); @@ -312,28 +312,28 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_WEAKCLASS: { - CLR_RT_HeapBlock_WeakReference *wr = (CLR_RT_HeapBlock_WeakReference *)ptr; + auto *wr = (CLR_RT_HeapBlock_WeakReference *)ptr; DumpSingleReference(wr->m_targetDirect); break; } case DATATYPE_DELEGATE_HEAD: { - CLR_RT_HeapBlock_Delegate *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; + auto *dlg = (CLR_RT_HeapBlock_Delegate *)ptr; DumpSingleReference(&dlg->m_object); break; } case DATATYPE_DELEGATELIST_HEAD: { - CLR_RT_HeapBlock_Delegate_List *dlgList = (CLR_RT_HeapBlock_Delegate_List *)ptr; + auto *dlgList = (CLR_RT_HeapBlock_Delegate_List *)ptr; DumpListOfReferences(dlgList->GetDelegates(), dlgList->m_length); break; } case DATATYPE_THREAD: { - CLR_RT_Thread *th = (CLR_RT_Thread *)ptr; + auto *th = (CLR_RT_Thread *)ptr; DumpSingleReference(th->m_dlg); DumpSingleReference(th->m_currentException.Dereference()); @@ -354,7 +354,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_STACK_FRAME: { - CLR_RT_StackFrame *stack = (CLR_RT_StackFrame *)ptr; + auto *stack = (CLR_RT_StackFrame *)ptr; DumpListOfReferences(stack->m_arguments, stack->m_call.target->argumentsCount); DumpListOfReferences(stack->m_locals, stack->m_call.target->localsCount); DumpListOfReferences(stack->m_evalStack, stack->TopValuePosition()); @@ -363,7 +363,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_OBJECT_TO_EVENT: { - CLR_RT_ObjectToEvent_Source *otes = (CLR_RT_ObjectToEvent_Source *)ptr; + auto *otes = (CLR_RT_ObjectToEvent_Source *)ptr; DumpSingleReference( otes->m_eventPtr); // The managed object should reference this obj, which references the event. break; @@ -373,7 +373,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) { // Object points to Lock Head, Thread points to Lock Head, Lock Head points to list of lock owners and // requests - CLR_RT_HeapBlock_Lock *lock = (CLR_RT_HeapBlock_Lock *)ptr; + auto *lock = (CLR_RT_HeapBlock_Lock *)ptr; DumpListOfReferences(lock->m_owners); DumpListOfReferences(lock->m_requests); break; @@ -381,35 +381,35 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) case DATATYPE_ENDPOINT_HEAD: { - CLR_RT_HeapBlock_EndPoint *ep = (CLR_RT_HeapBlock_EndPoint *)ptr; + auto *ep = (CLR_RT_HeapBlock_EndPoint *)ptr; DumpListOfReferences(ep->m_messages); break; } case DATATYPE_WAIT_FOR_OBJECT_HEAD: { - CLR_RT_HeapBlock_WaitForObject *wfo = (CLR_RT_HeapBlock_WaitForObject *)ptr; + auto *wfo = (CLR_RT_HeapBlock_WaitForObject *)ptr; DumpListOfReferences(wfo->GetWaitForObjects(), wfo->m_cObjects); break; } case DATATYPE_FINALIZER_HEAD: { - CLR_RT_HeapBlock_Finalizer *f = (CLR_RT_HeapBlock_Finalizer *)ptr; + auto *f = (CLR_RT_HeapBlock_Finalizer *)ptr; DumpSingleReference(f->m_object); break; } case DATATYPE_MEMORY_STREAM_HEAD: { - CLR_RT_HeapBlock_MemoryStream *ms = (CLR_RT_HeapBlock_MemoryStream *)ptr; + auto *ms = (CLR_RT_HeapBlock_MemoryStream *)ptr; DumpListOfReferences(ms->m_buffers); break; } case DATATYPE_SERIALIZER_HEAD: { - CLR_RT_BinaryFormatter *bf = (CLR_RT_BinaryFormatter *)ptr; + auto *bf = (CLR_RT_BinaryFormatter *)ptr; DumpSingleReference(bf->m_stream); DumpListOfReferences(bf->m_duplicates); DumpListOfReferences(bf->m_states); @@ -520,7 +520,7 @@ void CLR_PRF_Profiler::Timestamp() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); // Send Profiling Timestamp - CLR_UINT32 time = + auto time = (CLR_UINT32)((HAL_Time_CurrentTime() + ((CLR_UINT64)((1ull << CLR_PRF_CMDS::Bits::TimestampShift) - 1))) >> CLR_PRF_CMDS::Bits::TimestampShift); if (time > m_lastTimestamp) { @@ -650,7 +650,7 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) } else if (dt == DATATYPE_SZARRAY) { - CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + auto *array = (CLR_RT_HeapBlock_Array *)ptr; PackAndWriteBits(array->ReflectionDataConst().data.type); PackAndWriteBits(array->ReflectionDataConst().levels); } @@ -861,7 +861,7 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() const CLR_UINT32 messageType = CLR_DBG_Commands::c_Profiling_Stream; CLR_UINT8 buffer[2 * sizeof(CLR_UINT16) + CLR_RT_HeapBlock_MemoryStream::Buffer::c_PayloadSize]; - CLR_DBG_Commands::Profiling_Stream *packet = (CLR_DBG_Commands::Profiling_Stream *)buffer; + auto *packet = (CLR_DBG_Commands::Profiling_Stream *)buffer; NANOCLR_FOREACH_NODE(CLR_RT_HeapBlock_MemoryStream::Buffer, ptr, m_stream->m_buffers) { diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 52b39d4939..401affff67 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -458,7 +458,7 @@ struct CLR_RT_HeapBlock R8 &operator+=(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion value += (double)num; // uses conversion and then built-in type double *this = value; // uses assignment operator (operator=) return *this; @@ -466,7 +466,7 @@ struct CLR_RT_HeapBlock R8 &operator-=(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion value -= (double)num; // uses conversion and then built-in type double *this = value; // uses assignment operator (operator=) return *this; @@ -474,7 +474,7 @@ struct CLR_RT_HeapBlock R8 operator*(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion R8 ret_value; value *= (double)num; // uses conversion and then built-in type __int64 ret_value = value; // uses assignment operator (operator=) @@ -483,7 +483,7 @@ struct CLR_RT_HeapBlock R8 operator/(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion R8 ret_value; value /= (double)num; // uses conversion and then built-in type __int64 ret_value = value; // uses assignment operator (operator=) @@ -492,25 +492,25 @@ struct CLR_RT_HeapBlock bool operator<(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion return (value < (double)num); } bool operator>(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion return (value > (double)num); } bool operator==(const R8 &num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion return (value == (double)num); } bool operator==(const double num) { - double value = (double)*this; // uses conversion + auto value = (double)*this; // uses conversion return (value == num); } @@ -1261,8 +1261,8 @@ struct CLR_RT_HeapBlock value.Debug_CheckPointer(); - CLR_RT_HeapBlock_Raw *src = (CLR_RT_HeapBlock_Raw *)this; - CLR_RT_HeapBlock_Raw *dst = (CLR_RT_HeapBlock_Raw *)&value; + auto *src = (CLR_RT_HeapBlock_Raw *)this; + auto *dst = (CLR_RT_HeapBlock_Raw *)&value; *src = *dst; } diff --git a/src/CLR/Messaging/Messaging.cpp b/src/CLR/Messaging/Messaging.cpp index be03e36196..b455e0d625 100644 --- a/src/CLR/Messaging/Messaging.cpp +++ b/src/CLR/Messaging/Messaging.cpp @@ -73,7 +73,7 @@ bool CLR_Messaging::AllocateAndQueueMessage( bool CLR_Messaging::Messaging_Query(WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging_Commands::Messaging_Query *cmd = (CLR_Messaging_Commands::Messaging_Query *)msg->m_payload; + auto *cmd = (CLR_Messaging_Commands::Messaging_Query *)msg->m_payload; CLR_Messaging_Commands::Messaging_Query::Reply res; CLR_RT_HeapBlock_EndPoint *ep = CLR_RT_HeapBlock_EndPoint::FindEndPoint(cmd->m_addr.m_to); @@ -89,7 +89,7 @@ bool CLR_Messaging::Messaging_Query__Reply(WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging_Commands::Messaging_Query::Reply *cmd = + auto *cmd = (CLR_Messaging_Commands::Messaging_Query::Reply *)msg->m_payload; g_CLR_Messaging.AllocateAndQueueMessage( @@ -108,7 +108,7 @@ bool CLR_Messaging::Messaging_Query__Reply(WP_Message *msg) bool CLR_Messaging::Messaging_Send(WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging_Commands::Messaging_Send *cmd = (CLR_Messaging_Commands::Messaging_Send *)msg->m_payload; + auto *cmd = (CLR_Messaging_Commands::Messaging_Send *)msg->m_payload; CLR_Messaging_Commands::Messaging_Send::Reply res; CLR_UINT32 len; bool fRes; @@ -148,7 +148,7 @@ bool CLR_Messaging::Messaging_Send__Reply(WP_Message *msg) bool CLR_Messaging::Messaging_Reply(WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging_Commands::Messaging_Reply *cmd = (CLR_Messaging_Commands::Messaging_Reply *)msg->m_payload; + auto *cmd = (CLR_Messaging_Commands::Messaging_Reply *)msg->m_payload; CLR_Messaging_Commands::Messaging_Reply::Reply res; bool fRes; CLR_UINT32 len; @@ -189,7 +189,7 @@ bool CLR_Messaging::Messaging_Reply__Reply(WP_Message *msg) bool CLR_Messaging::App_ProcessHeader(void *state, WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging *pThis = (CLR_Messaging *)state; + auto *pThis = (CLR_Messaging *)state; Watchdog_Reset(); @@ -218,7 +218,7 @@ bool CLR_Messaging::App_ProcessHeader(void *state, WP_Message *msg) bool CLR_Messaging::App_ProcessPayload(void *state, WP_Message *msg) { NATIVE_PROFILE_CLR_MESSAGING(); - CLR_Messaging *pThis = (CLR_Messaging *)state; + auto *pThis = (CLR_Messaging *)state; Watchdog_Reset(); diff --git a/src/CLR/System.Math/nf_native_system_math_System_Math.cpp b/src/CLR/System.Math/nf_native_system_math_System_Math.cpp index c50902dd3b..715cbdb865 100644 --- a/src/CLR/System.Math/nf_native_system_math_System_Math.cpp +++ b/src/CLR/System.Math/nf_native_system_math_System_Math.cpp @@ -32,8 +32,8 @@ HRESULT Library_nf_native_system_math_System_Math::Max___STATIC__R8__R8__R8(CLR_ #else - float x = (float)stack.Arg0().NumericByRefConst().r8; - float y = (float)stack.Arg1().NumericByRefConst().r8; + auto x = (float)stack.Arg0().NumericByRefConst().r8; + auto y = (float)stack.Arg1().NumericByRefConst().r8; // from .NET spec: If val1, val2, or both val1 and val2 are equal to NaN, NaN is returned. if (System::Double::IsNaN(x) || System::Double::IsNaN(y)) @@ -67,8 +67,8 @@ HRESULT Library_nf_native_system_math_System_Math::Min___STATIC__R8__R8__R8(CLR_ #else - float x = (float)stack.Arg0().NumericByRefConst().r8; - float y = (float)stack.Arg1().NumericByRefConst().r8; + auto x = (float)stack.Arg0().NumericByRefConst().r8; + auto y = (float)stack.Arg1().NumericByRefConst().r8; float res = x <= y ? x : y; stack.SetResult_R8(res); @@ -92,7 +92,7 @@ HRESULT Library_nf_native_system_math_System_Math::Abs___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = fabsf(d); stack.SetResult_R8(res); @@ -133,7 +133,7 @@ HRESULT Library_nf_native_system_math_System_Math::Acos___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = acosf(d); stack.SetResult_R8(res); @@ -163,7 +163,7 @@ HRESULT Library_nf_native_system_math_System_Math::Asin___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = asinf(d); stack.SetResult_R8(res); @@ -193,7 +193,7 @@ HRESULT Library_nf_native_system_math_System_Math::Atan___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = atanf(d); stack.SetResult_R8(res); @@ -224,8 +224,8 @@ HRESULT Library_nf_native_system_math_System_Math::Atan2___STATIC__R8__R8__R8(CL #else - float x = (float)stack.Arg0().NumericByRefConst().r8; - float y = (float)stack.Arg1().NumericByRefConst().r8; + auto x = (float)stack.Arg0().NumericByRefConst().r8; + auto y = (float)stack.Arg1().NumericByRefConst().r8; float res = atan2f(x, y); stack.SetResult_R8(res); @@ -255,7 +255,7 @@ HRESULT Library_nf_native_system_math_System_Math::Cbrt___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = cbrt(d); stack.SetResult_R8(res); @@ -285,7 +285,7 @@ HRESULT Library_nf_native_system_math_System_Math::Ceiling___STATIC__R8__R8(CLR_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = ceilf(d); stack.SetResult_R8(res); @@ -315,7 +315,7 @@ HRESULT Library_nf_native_system_math_System_Math::Cos___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = cosf(d); stack.SetResult_R8(res); @@ -345,7 +345,7 @@ HRESULT Library_nf_native_system_math_System_Math::Cosh___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = coshf(d); stack.SetResult_R8(res); @@ -376,8 +376,8 @@ HRESULT Library_nf_native_system_math_System_Math::IEEERemainder___STATIC__R8__R #else - float x = (float)stack.Arg0().NumericByRefConst().r8; - float y = (float)stack.Arg1().NumericByRefConst().r8; + auto x = (float)stack.Arg0().NumericByRefConst().r8; + auto y = (float)stack.Arg1().NumericByRefConst().r8; float res = remainderf(x, y); stack.SetResult_R8(res); @@ -406,7 +406,7 @@ HRESULT Library_nf_native_system_math_System_Math::Exp___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = expf(d); stack.SetResult_R8(res); @@ -436,7 +436,7 @@ HRESULT Library_nf_native_system_math_System_Math::Floor___STATIC__R8__R8(CLR_RT #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = floorf(d); stack.SetResult_R8(res); @@ -466,7 +466,7 @@ HRESULT Library_nf_native_system_math_System_Math::Log___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = logf(d); stack.SetResult_R8(res); @@ -496,7 +496,7 @@ HRESULT Library_nf_native_system_math_System_Math::Log10___STATIC__R8__R8(CLR_RT #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = log10f(d); stack.SetResult_R8(res); @@ -524,8 +524,8 @@ HRESULT Library_nf_native_system_math_System_Math::Pow___STATIC__R8__R8__R8(CLR_ #else - float x = (float)stack.Arg0().NumericByRefConst().r8; - float y = (float)stack.Arg1().NumericByRefConst().r8; + auto x = (float)stack.Arg0().NumericByRefConst().r8; + auto y = (float)stack.Arg1().NumericByRefConst().r8; float res = powf(x, y); @@ -561,7 +561,7 @@ HRESULT Library_nf_native_system_math_System_Math::Round___STATIC__R8__R8(CLR_RT #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float hi = d + 0.5; float res = floorf(hi); @@ -607,7 +607,7 @@ HRESULT Library_nf_native_system_math_System_Math::Sign___STATIC__I4__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; int32_t res; if (d < 0) @@ -648,7 +648,7 @@ HRESULT Library_nf_native_system_math_System_Math::Sin___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = sinf(d); stack.SetResult_R8(res); @@ -678,7 +678,7 @@ HRESULT Library_nf_native_system_math_System_Math::Sinh___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = sinhf(d); stack.SetResult_R8(res); @@ -708,7 +708,7 @@ HRESULT Library_nf_native_system_math_System_Math::Sqrt___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = sqrtf(d); stack.SetResult_R8(res); @@ -738,7 +738,7 @@ HRESULT Library_nf_native_system_math_System_Math::Tan___STATIC__R8__R8(CLR_RT_S #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = tanf(d); stack.SetResult_R8(res); @@ -768,7 +768,7 @@ HRESULT Library_nf_native_system_math_System_Math::Tanh___STATIC__R8__R8(CLR_RT_ #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = tanhf(d); stack.SetResult_R8(res); @@ -795,7 +795,7 @@ HRESULT Library_nf_native_system_math_System_Math::Truncate___STATIC__R8__R8(CLR #else - float d = (float)stack.Arg0().NumericByRefConst().r8; + auto d = (float)stack.Arg0().NumericByRefConst().r8; float res = 0.0; modff(d, &res); diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index d679ab0d89..e75210f77a 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -138,7 +138,7 @@ struct Settings for (CLR_RT_ParseOptions::BufferMapIter it = m_assemblies.begin(); it != m_assemblies.end(); it++) { CLR_RT_Assembly *assm; - const CLR_RT_Buffer *buffer = (const CLR_RT_Buffer *)it->second; + auto *buffer = (const CLR_RT_Buffer *)it->second; const CLR_RECORD_ASSEMBLY *header = (CLR_RECORD_ASSEMBLY *)&(*buffer)[0]; // Creates instance of assembly, sets pointer to native functions, links to g_CLR_RT_TypeSystem @@ -199,7 +199,7 @@ struct Settings if (deviceInfo->Attribute & MediaAttribute_SupportsXIP) { - unsigned char *datAssembliesBuffer = + auto *datAssembliesBuffer = (unsigned char *)CLR_RT_Memory::Allocate_And_Erase(datSize, CLR_RT_HeapBlock ::HB_Unmovable); CHECK_ALLOCATION(datAssembliesBuffer); @@ -413,7 +413,7 @@ struct Settings { NANOCLR_HEADER(); - CLR_RT_Buffer *buffer = new CLR_RT_Buffer(data, data + size); + auto *buffer = new CLR_RT_Buffer(data, data + size); CLR_RECORD_ASSEMBLY *header; header = (CLR_RECORD_ASSEMBLY *)&(*buffer)[0]; @@ -451,7 +451,7 @@ struct Settings while (header + 1 <= headerEnd && header->GoodAssembly()) { - CLR_RT_Buffer *bufferSub = new CLR_RT_Buffer(); + auto *bufferSub = new CLR_RT_Buffer(); CLR_RECORD_ASSEMBLY *headerSub; CLR_RT_Assembly *assm; @@ -503,7 +503,7 @@ struct Settings NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { - const CLR_RECORD_ASSEMBLYREF *src = (const CLR_RECORD_ASSEMBLYREF *)pASSM->GetTable(TBL_AssemblyRef); + auto *src = (const CLR_RECORD_ASSEMBLYREF *)pASSM->GetTable(TBL_AssemblyRef); for (int i = 0; i < pASSM->tablesSize[TBL_AssemblyRef]; i++, src++) { const char *szName = pASSM->GetString(src->name); From d28256e1796b96db5d37739b434338638543c31c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Fagundes?= Date: Thu, 30 Mar 2023 12:11:20 +0100 Subject: [PATCH 051/168] Fix TypeSystem::MatchSignatureElement --- src/CLR/Core/TypeSystem.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 3ed8892367..043bffa341 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -5512,14 +5512,14 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( return false; } - if ((resLeft.DataType == DATATYPE_MVAR && resLeft.DataType == DATATYPE_MVAR) && - (resLeft.GenericParamPosition && resRight.GenericParamPosition)) + if ((resLeft.DataType == DATATYPE_MVAR && resRight.DataType == DATATYPE_MVAR) && + (resLeft.GenericParamPosition != resRight.GenericParamPosition)) { return false; } - if ((resLeft.DataType == DATATYPE_VAR && resLeft.DataType == DATATYPE_VAR) && - (resLeft.GenericParamPosition && resRight.GenericParamPosition)) + if ((resLeft.DataType == DATATYPE_VAR && resRight.DataType == DATATYPE_VAR) && + (resLeft.GenericParamPosition != resRight.GenericParamPosition)) { return false; } From 8707b65e9473d73eb1056338bdc37c13a62784f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Fagundes?= Date: Thu, 30 Mar 2023 12:11:34 +0100 Subject: [PATCH 052/168] Update checksum for mscorlib --- src/CLR/CorLib/corlib_native.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index 024d7aad7b..68f36f4367 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -1483,11 +1483,11 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0xCCE8376E, + 0x454A3634, #elif (NANOCLR_REFLECTION == FALSE) - 0xF60D1B13, + 0x1D98C525, #else #error "NANOCLR_REFLECTION has to be define either TRUE or FALSE. Check the build options." From 35223fd66857759520b42f95b839a69e57194d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 16:46:11 +0100 Subject: [PATCH 053/168] Add TypeSystem::BuildTypeName for TypeSpec --- src/CLR/Core/TypeSystem.cpp | 45 +++++++++++++++++++++++++++++++ src/CLR/Include/nanoCLR_Runtime.h | 1 + 2 files changed, 46 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 043bffa341..6f251df692 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -5576,6 +5576,51 @@ HRESULT CLR_RT_TypeSystem::QueueStringToBuffer(char *&szBuffer, size_t &iBuffer, NANOCLR_NOCLEANUP(); } +HRESULT CLR_RT_TypeSystem::BuildTypeName(const CLR_RT_TypeSpec_Index &typeIndex, char *&szBuffer, size_t &iBuffer) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_TypeSpec_Instance instance; + + if (instance.InitializeFromIndex(typeIndex) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + CLR_RT_SignatureParser parser; + parser.Initialize_TypeSpec(instance.assembly, instance.assembly->GetTypeSpec(typeIndex.TypeSpec())); + + CLR_RT_SignatureParser::Element element; + + // get type + parser.Advance(element); + + CLR_RT_TypeDef_Index typeDef; + typeDef.data = element.Class.data; + + BuildTypeName(typeDef, szBuffer, iBuffer); + + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, "<")); + + for (int i = 0; i < parser.GenParamCount; i++) + { + parser.Advance(element); + +#if defined(VIRTUAL_DEVICE) + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, c_CLR_RT_DataTypeLookup[element.DataType].m_name)); +#endif + if (i + 1 < parser.GenParamCount) + { + NANOCLR_CHECK_HRESULT(QueueStringToBuffer(szBuffer, iBuffer, ",")); + } + } + + CLR_SafeSprintf(szBuffer, iBuffer, ">"); + + NANOCLR_NOCLEANUP(); +} + HRESULT CLR_RT_TypeSystem::BuildTypeName(const CLR_RT_TypeDef_Index &cls, char *&szBuffer, size_t &iBuffer) { NATIVE_PROFILE_CLR_CORE(); diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index a36603da0f..9d1bc76554 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1999,6 +1999,7 @@ struct CLR_RT_TypeSystem // EVENT HEAP - NO RELOCATION - const CLR_RECORD_RESOURCE *&res, CLR_UINT32 &size); + HRESULT BuildTypeName(const CLR_RT_TypeSpec_Index &typeIndex, char *&szBuffer, size_t &iBuffer); HRESULT BuildTypeName( const CLR_RT_TypeDef_Index &cls, char *&szBuffer, From 939854022646df6a31c5d0e15f6a2742abedf3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 17:15:39 +0100 Subject: [PATCH 054/168] Fix TypeSystem::MatchSignatureElement for types with multiple generic params --- src/CLR/Core/TypeSystem.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 6f251df692..a25f046251 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -5402,10 +5402,16 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() bool CLR_RT_TypeSystem::MatchSignature(CLR_RT_SignatureParser &parserLeft, CLR_RT_SignatureParser &parserRight) { NATIVE_PROFILE_CLR_CORE(); + if (parserLeft.Type != parserRight.Type) + { return false; + } + if (parserLeft.Flags != parserRight.Flags) + { return false; + } return MatchSignatureDirect(parserLeft, parserRight, false); } @@ -5533,10 +5539,13 @@ bool CLR_RT_TypeSystem::MatchSignatureElement( { if (resLeft.GenericParamPosition == 0xFFFF && resRight.GenericParamPosition == 0xFFFF) { - // need to check if type of generic parameters match - if (FAILED(parserLeft.Advance(resLeft)) || FAILED(parserRight.Advance(resRight))) + // need to check if type of generic parameters match, if there are more + if (parserLeft.ParamCount > 0 && parserRight.ParamCount > 0) { - return false; + if (FAILED(parserLeft.Advance(resLeft)) || FAILED(parserRight.Advance(resRight))) + { + return false; + } } if (resLeft.DataType != resRight.DataType) @@ -6277,8 +6286,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) g_CLR_RT_WellKnownTypes.Object)); // get a pointer to the first element - auto *currentParam = - (CLR_RT_HeapBlock *)m_lastValue.m_value.DereferenceArray()->GetFirstElement(); + auto *currentParam = (CLR_RT_HeapBlock *)m_lastValue.m_value.DereferenceArray()->GetFirstElement(); do { From dffff401af42840c8f8885bc019b40e4c5a71dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 30 Mar 2023 17:16:06 +0100 Subject: [PATCH 055/168] Implement trace for type resolution --- src/CLR/Core/TypeSystem.cpp | 225 ++++++++++++++++++++++---- src/CLR/Include/nanoCLR_PlatformDef.h | 2 + 2 files changed, 195 insertions(+), 32 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index a25f046251..5f71234ad0 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2555,6 +2555,17 @@ bool CLR_RT_Assembly::ResolveAssemblyRef(bool fOutput) else { dst->target = target; + +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + CLR_Debug::Printf( + "\r\nResolved assembly: %s (%d.%d.%d.%d) [%04X]\r\n", + name, + header->version.majorVersion, + header->version.minorVersion, + header->version.buildNumber, + header->version.revisionNumber, + target->assemblyIndex - 1); +#endif } } } @@ -2595,6 +2606,10 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + CLR_Debug::Printf(" Resolving TypeRef...\r\n"); +#endif + int i; ITERATE_THROUGH_RECORDS(this, i, TypeRef, TYPEREF) @@ -2618,6 +2633,7 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() } const char *szName = GetString(src->name); + if (inst.assembly->FindTypeDef(szName, inst.Type(), dst->target) == false) { #if !defined(BUILD_RTM) @@ -2630,6 +2646,12 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + CLR_Debug::Printf(" [%04X] '%s' in current assembly\r\n", i, szName); + } +#endif } else { @@ -2641,6 +2663,7 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() const char *szNameSpace = GetString(src->nameSpace); const char *szName = GetString(src->name); + if (assm->FindTypeDef(szName, szNameSpace, dst->target) == false) { #if !defined(BUILD_RTM) @@ -2653,6 +2676,12 @@ HRESULT CLR_RT_Assembly::ResolveTypeRef() NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Resolve: unknown type: %s\r\n", szName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + CLR_Debug::Printf(" [%04X] '%s.%s' from '%s'\r\n", i, szNameSpace, szName, assm->name); + } +#endif } } @@ -2664,10 +2693,21 @@ HRESULT CLR_RT_Assembly::ResolveFieldRef() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + bool outputHint = false; +#endif + int i; ITERATE_THROUGH_RECORDS(this, i, FieldRef, FIELDREF) { +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + if (!outputHint) + { + CLR_Debug::Printf(" Resolving FieldRef...\r\n"); + outputHint = true; + } +#endif CLR_RT_TypeDef_Index typeDef; typeDef.Clear(); @@ -2678,8 +2718,11 @@ HRESULT CLR_RT_Assembly::ResolveFieldRef() CLR_RT_TypeSpec_Instance typeSpecInstance; + const char *fieldName = GetString(src->name); + switch (src->Owner()) { + case TBL_TypeRef: typeDef = crossReferenceTypeRef[src->OwnerIndex()].target; break; @@ -2700,43 +2743,46 @@ HRESULT CLR_RT_Assembly::ResolveFieldRef() default: #if !defined(BUILD_RTM) CLR_Debug::Printf( - "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", - src->encodedOwner); + "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x '%s'\r\n", + src->encodedOwner, + fieldName); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, - "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", - src->encodedOwner); + "Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x '%s'\r\n", + src->encodedOwner, + fieldName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, - L"Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x\r\n", - src->encodedOwner); + L"Unknown or unsupported TypeRefOrSpec when resolving FieldRef %08x '%s'\r\n", + src->encodedOwner, + fieldName); #endif } - const char *fieldName = GetString(src->name); - if (NANOCLR_INDEX_IS_VALID(typeSpec)) { if (typeSpecInstance.InitializeFromIndex(typeSpec) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x\r\n", src->encodedOwner); + CLR_Debug::Printf("Unknown scope when resolving FieldRef: %08x '%s'\r\n", src->encodedOwner, fieldName); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, - "Unknown scope when resolving FieldRef: %08x\r\n", - src->encodedOwner); + "Unknown scope when resolving FieldRef: %08x '%s'\r\n", + src->encodedOwner, + fieldName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, - L"Unknown scope when resolving FieldRef: %08x\r\n", - src->encodedOwner); + L"Unknown scope when resolving FieldRef: %08x '%s'\r\n", + src->encodedOwner, + fieldName); #endif } @@ -2753,6 +2799,19 @@ HRESULT CLR_RT_Assembly::ResolveFieldRef() NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown FieldRef: %s.%s.%s\r\n", "???", "???", fieldName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + char rgBuffer[512]; + char *szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildTypeName(typeSpecInstance, szBuffer, iBuffer); + rgBuffer[MAXSTRLEN(rgBuffer)] = 0; + + CLR_Debug::Printf(" [%04X] Resolving '%s' from '%s'\r\n", i, fieldName, rgBuffer); + } +#endif // set TypeSpec dst->genericType.data = typeSpec.data; @@ -2792,6 +2851,19 @@ HRESULT CLR_RT_Assembly::ResolveFieldRef() NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown FieldRef: %s\r\n", fieldName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + char rgBuffer[512]; + char *szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildTypeName(typeDefInstance, szBuffer, iBuffer); + rgBuffer[MAXSTRLEN(rgBuffer)] = 0; + + CLR_Debug::Printf(" [%04X] Resolving '%s' from '%s'\r\n", i, fieldName, rgBuffer); + } +#endif // invalidate GenericType dst->genericType.data = CLR_EmptyToken; @@ -2806,10 +2878,22 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + bool outputHint = false; +#endif + int i; ITERATE_THROUGH_RECORDS(this, i, MethodRef, METHODREF) { +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + if (!outputHint) + { + CLR_Debug::Printf(" Resolving MethodRef...\r\n"); + outputHint = true; + } +#endif + CLR_RT_TypeDef_Index typeDef; typeDef.Clear(); @@ -2821,7 +2905,7 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() CLR_RT_TypeSpec_Instance typeSpecInstance; bool fGot = false; - const char *methodName = nullptr; + const char *methodName = GetString(src->name); switch (src->Owner()) { @@ -2845,43 +2929,46 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() default: #if !defined(BUILD_RTM) CLR_Debug::Printf( - "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", - src->encodedOwner); + "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x '%s'\r\n", + src->encodedOwner, + methodName); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, - "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", - src->encodedOwner); + "Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x '%s'\r\n", + src->encodedOwner, + methodName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, - L"Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x\r\n", - src->encodedOwner); + L"Unknown or unsupported TypeRefOrSpec when resolving MethodRef %08x '%s'\r\n", + src->encodedOwner, + methodName); #endif } - methodName = GetString(src->name); - if (NANOCLR_INDEX_IS_VALID(typeSpec)) { if (typeSpecInstance.InitializeFromIndex(typeSpec) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); + CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x '%s'\r\n", src->encodedOwner); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, "Unknown scope when resolving MethodRef: %08x\r\n", - src->encodedOwner); + src->encodedOwner, + methodName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, L"Unknown scope when resolving MethodRef: %08x\r\n", - src->encodedOwner); + src->encodedOwner, + methodName); #endif } @@ -2906,25 +2993,43 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() NANOCLR_MSG1_SET_AND_LEAVE(CLR_E_FAIL, L"Unknown MethodRef: %s.%s.%s\r\n", "???", "???", methodName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + char rgBuffer[512]; + char *szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildTypeName(typeSpecInstance, szBuffer, iBuffer); + rgBuffer[MAXSTRLEN(rgBuffer)] = 0; + + CLR_Debug::Printf(" [%04X] Resolving '%s' from '%s'\r\n", i, methodName, rgBuffer); + } +#endif } else if (NANOCLR_INDEX_IS_VALID(typeDef)) { if (typeDefInstance.InitializeFromIndex(typeDef) == false) { #if !defined(BUILD_RTM) - CLR_Debug::Printf("Unknown scope when resolving MethodRef: %08x\r\n", src->encodedOwner); + CLR_Debug::Printf( + "Unknown scope when resolving MethodRef: %08x '%s'\r\n", + src->encodedOwner, + methodName); #endif #if defined(VIRTUAL_DEVICE) NANOCLR_CHARMSG_SET_AND_LEAVE( CLR_E_FAIL, - "Unknown scope when resolving MethodRef: %08x\r\n", - src->encodedOwner); + "Unknown scope when resolving MethodRef: %08x '%s'\r\n", + src->encodedOwner, + methodName); #else NANOCLR_MSG1_SET_AND_LEAVE( CLR_E_FAIL, - L"Unknown scope when resolving MethodRef: %08x\r\n", - src->encodedOwner); + L"Unknown scope when resolving MethodRef: %08x '%s'\r\n", + src->encodedOwner, + methodName); #endif } @@ -2983,6 +3088,19 @@ HRESULT CLR_RT_Assembly::ResolveMethodRef() methodName); #endif } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + char rgBuffer[512]; + char *szBuffer = rgBuffer; + size_t iBuffer = MAXSTRLEN(rgBuffer); + + g_CLR_RT_TypeSystem.BuildTypeName(typeDefInstance, szBuffer, iBuffer); + rgBuffer[MAXSTRLEN(rgBuffer)] = 0; + + CLR_Debug::Printf(" [%04X] Resolving '%s' from '%s'\r\n", i, methodName, rgBuffer); + } +#endif } } @@ -2994,10 +3112,22 @@ HRESULT CLR_RT_Assembly::ResolveTypeSpec() NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + bool outputHint = false; +#endif + int i; ITERATE_THROUGH_RECORDS(this, i, TypeSpec, TYPESPEC) { +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + if (!outputHint) + { + CLR_Debug::Printf(" Resolving TypeSpec...\r\n"); + outputHint = true; + } +#endif + dst->genericType.Set(assemblyIndex, i); CLR_RT_TypeSpec_Instance inst; @@ -3009,6 +3139,12 @@ HRESULT CLR_RT_Assembly::ResolveTypeSpec() #endif NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + CLR_Debug::Printf(" [%04X]\r\n", i); + } +#endif } NANOCLR_NOCLEANUP(); @@ -3918,6 +4054,13 @@ void CLR_RT_Assembly::ResolveTypeDef() { tilOuterClass = til; } + +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + else + { + CLR_Debug::Printf(" [%04X] '%s.%s'\r\n", i, til->nameSpace, til->name); + } +#endif } } @@ -3926,13 +4069,27 @@ void CLR_RT_Assembly::ResolveMethodDef() NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_METHODDEF *md = GetMethodDef(0); +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + bool outputHint = false; +#endif + for (int indexMethod = 0; indexMethod < tablesSize[TBL_MethodDef]; indexMethod++, md++) { +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + if (!outputHint) + { + CLR_Debug::Printf(" Resolving MethodDef...\r\n"); + outputHint = true; + } +#endif + const MethodIndexLookup *mil = c_MethodIndexLookup; CLR_RT_MethodDef_Index index; index.Set(assemblyIndex, indexMethod); + const char *methodName = GetString(md->name); + // Check for wellKnownMethods for (size_t ii = 0; ii < ARRAYSIZE(c_MethodIndexLookup); ii++, mil++) { @@ -3947,7 +4104,7 @@ void CLR_RT_Assembly::ResolveMethodDef() if (instType.assembly == this) { - if (!strcmp(GetString(md->name), mil->name)) + if (!strcmp(methodName, mil->name)) { mIndex.data = index.data; } @@ -4001,6 +4158,10 @@ void CLR_RT_Assembly::ResolveMethodDef() } } } + +#ifdef NANOCLR_TRACE_TYPE_RESOLUTION + CLR_Debug::Printf(" [%04X] Resolving '%s'\r\n", indexMethod, methodName); +#endif } } @@ -4327,7 +4488,7 @@ bool CLR_RT_Assembly::FindFieldDef( { return true; } - + if (local_FindFieldDef(this, td->firstStaticField, td->staticFieldsCount, fieldName, base, sig, index)) { return true; diff --git a/src/CLR/Include/nanoCLR_PlatformDef.h b/src/CLR/Include/nanoCLR_PlatformDef.h index 3304e233e3..60cd5fa3f5 100644 --- a/src/CLR/Include/nanoCLR_PlatformDef.h +++ b/src/CLR/Include/nanoCLR_PlatformDef.h @@ -36,6 +36,8 @@ #endif //#define TINYCLR_TRACE_INSTRUCTIONS 1 // enables tracing of instructions execution //#define NANOCLR_TRACE_HRESULT // enable tracing of HRESULTS from interop libraries +// enable tracing of type resolution +// #define NANOCLR_TRACE_TYPE_RESOLUTION 1 //-o-//-o-//-o-//-o-//-o-//-o-// // PLATFORMS From 2992a6fb59176f59e992d1337d821d0875b99bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 8 Jun 2023 08:50:00 +0100 Subject: [PATCH 056/168] Fix check for enum type --- src/CLR/Debugger/Debugger.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 193fd52e2a..d9736f3de5 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2531,7 +2531,15 @@ static bool IsBlockEnumMaybe(CLR_RT_HeapBlock *blk) CLR_RT_TypeDescriptor desc; if (FAILED(desc.InitializeFromObject(*blk))) + { + return false; + } + + // can only check for data type if the class handler is not null + if (desc.m_handlerCls.target == nullptr) + { return false; + } const CLR_RT_DataTypeLookup &dtl = c_CLR_RT_DataTypeLookup[desc.m_handlerCls.target->dataType]; From 5a230b0dfd8996d1f93aa829be1429e9d61ff82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 8 Jun 2023 08:50:16 +0100 Subject: [PATCH 057/168] Code style fixes --- src/CLR/Debugger/Debugger.cpp | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index d9736f3de5..0a36d742bc 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1354,8 +1354,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_ChangeConditions(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Execution_ChangeConditions *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_ChangeConditions *)msg->m_payload; // save current value int32_t newConditions = g_CLR_RT_ExecutionEngine.m_iDebugger_Conditions; @@ -1498,8 +1497,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_QueryCLRCapabilities(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities *)msg->m_payload; CLR_DBG_Commands::Debugging_Execution_QueryCLRCapabilities::ReplyUnion reply; reply.u_capsFlags = 0; @@ -1972,8 +1970,7 @@ bool CLR_DBG_Debugger::Debugging_Execution_Breakpoints(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Execution_Breakpoints *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Execution_Breakpoints *)msg->m_payload; g_CLR_RT_ExecutionEngine.InstallBreakpoints( cmd->m_data, @@ -2401,8 +2398,7 @@ bool CLR_DBG_Debugger::Debugging_Thread_GetException(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Thread_GetException *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Thread_GetException *)msg->m_payload; CLR_RT_Thread *th = g_CLR_DBG_Debugger->GetThreadFromPid(cmd->m_pid); CLR_RT_HeapBlock *blk = nullptr; @@ -2621,8 +2617,7 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Value_ResizeScratchPad *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_ResizeScratchPad *)msg->m_payload; CLR_RT_HeapBlock ref; if (cmd->m_size == 0) @@ -3012,8 +3007,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetScratchPad(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Value_GetScratchPad *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_GetScratchPad *)msg->m_payload; CLR_RT_HeapBlock *blk = GetScratchPad_Helper(cmd->m_index); WP_ReplyToCommand(msg, g_CLR_DBG_Debugger->GetValue(msg, blk, nullptr, nullptr), false, nullptr, 0); @@ -3075,8 +3069,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateObject(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Value_AllocateObject *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateObject *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3098,8 +3091,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateString(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Value_AllocateString *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateString *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3131,8 +3123,7 @@ bool CLR_DBG_Debugger::Debugging_Value_AllocateArray(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Value_AllocateArray *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Value_AllocateArray *)msg->m_payload; CLR_RT_HeapBlock *blk = nullptr; CLR_RT_HeapBlock *ptr = GetScratchPad_Helper(cmd->m_index); @@ -3675,8 +3666,7 @@ bool CLR_DBG_Debugger::Debugging_Resolve_VirtualMethod(WP_Message *msg) { NATIVE_PROFILE_CLR_DEBUGGER(); - auto *cmd = - (CLR_DBG_Commands::Debugging_Resolve_VirtualMethod *)msg->m_payload; + auto *cmd = (CLR_DBG_Commands::Debugging_Resolve_VirtualMethod *)msg->m_payload; CLR_DBG_Commands::Debugging_Resolve_VirtualMethod::Reply cmdReply; CLR_RT_TypeDef_Index cls; CLR_RT_MethodDef_Index md; From 642222d6ffbc20fd72a94431ad4e18690214c3ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 15 Jun 2023 18:36:40 +0100 Subject: [PATCH 058/168] Add HeapBlock::SetReflection --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 25 ++++++++++++++++++++ src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 1 + 2 files changed, 26 insertions(+) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 1e9c63a420..6b3140802c 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -294,6 +294,31 @@ HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_MethodDef_Index &md) NANOCLR_NOCLEANUP(); } +HRESULT CLR_RT_HeapBlock::SetReflection(const CLR_RT_GenericParam_Index &gp) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + CLR_RT_GenericParam_Instance genericParam; + CLR_RT_TypeDef_Index typeDef; + + if (genericParam.InitializeFromIndex(gp) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + // grab the type definition from the generic param + typeDef = genericParam.CrossReference().classTypeDef; + + m_id.raw = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_REFLECTION, 0, 1); + m_data.reflection.levels = 0; + m_data.reflection.kind = REFLECTION_TYPE; + // set the type definition in the reflection block + m_data.reflection.data.type.Set(typeDef.Assembly(), typeDef.Type()); + + NANOCLR_NOCLEANUP(); +} + HRESULT CLR_RT_HeapBlock::SetObjectCls(const CLR_RT_TypeDef_Index &cls) { NATIVE_PROFILE_CLR_CORE(); diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 401affff67..03dd9a92b5 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -1328,6 +1328,7 @@ struct CLR_RT_HeapBlock HRESULT SetReflection(const CLR_RT_TypeDef_Index &cls); HRESULT SetReflection(const CLR_RT_FieldDef_Index &fd); HRESULT SetReflection(const CLR_RT_MethodDef_Index &md); + HRESULT SetReflection(const CLR_RT_GenericParam_Index &gp); HRESULT InitializeArrayReference(CLR_RT_HeapBlock &ref, int index); void InitializeArrayReferenceDirect(CLR_RT_HeapBlock_Array &array, int index); From ba8246b0950c1164cacc8eb60e7a0c5e6912ef17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 15 Jun 2023 18:38:26 +0100 Subject: [PATCH 059/168] Add ResolveToken to GenericParam --- src/CLR/Core/TypeSystem.cpp | 26 ++++++++++++++++++++++++++ src/CLR/Include/nanoCLR_Runtime.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 87d6e0246b..bc69c5a0e3 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1446,6 +1446,32 @@ void CLR_RT_GenericParam_Instance::ClearInstance() target = nullptr; } +bool CLR_RT_GenericParam_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm) +{ + NATIVE_PROFILE_CLR_CORE(); + if (assm) + { + CLR_UINT32 index = CLR_DataFromTk(tk); + + CLR_RT_GenericParam_Index genericParamIndex; + genericParamIndex.Set(assm->assemblyIndex, index); + + // get generic type + data = genericParamIndex.data; + assembly = assm; + target = assembly->GetGenericParam(index); + +#if defined(NANOCLR_INSTANCE_NAMES) + name = assembly->GetString(target->name); +#endif + return true; + } + + ClearInstance(); + + return false; +} + //////////////////////////////////////////////////////////////////////////////////////////////////// bool CLR_RT_MethodSpec_Instance::InitializeFromIndex(const CLR_RT_MethodSpec_Index &index) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 1d765f6da5..95f2c8978e 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -2199,6 +2199,8 @@ struct CLR_RT_GenericParam_Instance : public CLR_RT_GenericParam_Index void ClearInstance(); + bool ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm); + //--// CLR_RT_GenericParam_CrossReference &CrossReference() const From e0d5c190ed196b00f80e0be85735474fdab05969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 15 Jun 2023 18:39:14 +0100 Subject: [PATCH 060/168] Add implementation for generic param in ldtoken --- src/CLR/Core/Interpreter.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index b6af480123..d70fb2f4cd 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -3155,6 +3155,18 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) } break; + case TBL_GenericParam: + { + CLR_RT_GenericParam_Instance param; + if (param.ResolveToken(arg, assm) == false) + { + NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); + } + + evalPos[0].SetReflection(param); + } + break; + default: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); break; From 9be48e13b5f0d2938d8ebe9a804ab6a6922e9c6d Mon Sep 17 00:00:00 2001 From: josesimoes Date: Wed, 2 Oct 2024 14:54:58 +0100 Subject: [PATCH 061/168] Fixing several issues from last merge - Build successful. --- src/CLR/CorLib/corlib_native.cpp | 12 ++++++------ src/CLR/CorLib/corlib_native_System_Exception.cpp | 4 +++- ...em_Runtime_CompilerServices_RuntimeHelpers.cpp | 8 ++++---- src/CLR/Core/CLR_RT_HeapBlock.cpp | 4 ++-- src/CLR/Core/CLR_RT_StackFrame.cpp | 4 ++-- src/CLR/Core/Execution.cpp | 8 ++++---- src/CLR/Core/Serialization/BinaryFormatter.cpp | 6 +++--- src/CLR/Core/TypeSystem.cpp | 4 ++-- src/CLR/Debugger/Debugger.cpp | 3 ++- .../nf_sys_io_filesystem_System_IO_Directory.cpp | 4 ++-- .../nf_sys_io_filesystem_System_IO_DriveInfo.cpp | 4 ++-- .../nf_system_text_System_Text_UTF8Encoding.cpp | 15 +++------------ .../nanoFramework.nanoCLR/nanoCLR_native.cpp | 8 ++++---- 13 files changed, 39 insertions(+), 45 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index e9a00000d0..b3fcd37b13 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -597,10 +597,10 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, Library_corlib_native_System_MathInternal::Abs___STATIC__I4__I4, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_MulticastDelegate::op_Equality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, Library_corlib_native_System_MulticastDelegate::op_Inequality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, nullptr, @@ -1483,7 +1483,7 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0x445C7AF9, + 0x544772A9, #elif (NANOCLR_REFLECTION == FALSE) diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index ab38112138..eab40f6ce8 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -51,6 +51,8 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S StackTrace *pStackTrace; CLR_RT_HeapBlock *pBlkString; CLR_RT_HeapBlock tmpArray; + CLR_RT_HeapBlock *pThis; + tmpArray.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmpArray); diff --git a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp index 41ec54431e..47d38aa6b7 100644 --- a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp +++ b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -25,14 +25,14 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers:: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if ((inst.m_target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || - inst.m_target->defaultValue == CLR_EmptyIndex) + if ((inst.target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || + inst.target->defaultValue == CLR_EmptyIndex) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } { - CLR_PMETADATA ptrSrc = inst.m_assm->GetSignature(inst.m_target->defaultValue); + CLR_PMETADATA ptrSrc = inst.assembly->GetSignature(inst.target->defaultValue); CLR_UINT32 lenSrc; NANOCLR_READ_UNALIGNED_UINT16(lenSrc, ptrSrc); diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 27b26fe127..7d50f50efd 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -1690,7 +1690,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C memset(&hbLeft, 0, sizeof(struct CLR_RT_HeapBlock)); memset(&hbRight, 0, sizeof(struct CLR_RT_HeapBlock)); - if (left.ReflectionDataConst().m_kind != right.ReflectionDataConst().m_kind) + if (left.ReflectionDataConst().kind != right.ReflectionDataConst().kind) { ptrLeft = FixReflectionForType(left, hbLeft); ptrRight = FixReflectionForType(right, hbRight); diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index 3c12eb942a..0f06f276c7 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -658,7 +658,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( if (ArgumentsCount) { - memcpy(&stackSub->m_arguments[argsOffset], args, sizeof(struct CLR_RT_HeapBlock) * numArgs); + memcpy(&stackSub->m_arguments[argsOffset], args, sizeof(struct CLR_RT_HeapBlock) * ArgumentsCount); } } diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 0d8a13161a..38757e9d20 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -975,7 +975,7 @@ void CLR_RT_ExecutionEngine::SpawnStaticConstructor(CLR_RT_Thread *&pCctorThread if (dlg != nullptr) { - CLR_RT_MethodDef_Index idx = dlg->DelegateFtn(); + CLR_RT_MethodDef_Index index = dlg->DelegateFtn(); CLR_RT_MethodDef_Instance inst{}; // Find next static constructor for given index @@ -1843,7 +1843,7 @@ HRESULT CLR_RT_ExecutionEngine::InitializeReference(CLR_RT_HeapBlock &ref, CLR_R if (dt == DATATYPE_VALUETYPE) { CLR_RT_TypeDef_Instance inst{}; - inst.InitializeFromIndex(res.m_cls); + inst.InitializeFromIndex(res.Class); if ((inst.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) == CLR_RECORD_TYPEDEF::TD_Semantics_Enum) { @@ -3107,7 +3107,7 @@ bool CLR_RT_ExecutionEngine::IsInstanceOf( if (semanticTarget == CLR_RECORD_TYPEDEF::TD_Semantics_Interface && inst.target->interfaces != CLR_EmptyIndex) { CLR_RT_SignatureParser parser{}; - parser.Initialize_Interfaces(inst.m_assm, inst.m_target); + parser.Initialize_Interfaces(inst.assembly, inst.target); CLR_RT_SignatureParser::Element res; while (parser.Available() > 0) diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 4a0ffc99ac..692a2f0025 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -1213,7 +1213,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints(SerializationHintsAttribute &hi if (cls.target->flags & CLR_RECORD_TYPEDEF::TD_HasAttributes) { CLR_RT_TypeDef_Instance inst{}; - inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); + inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.SerializationHintsAttribute); CLR_RT_AttributeEnumerator en{}; en.Initialize(cls); @@ -1252,7 +1252,7 @@ HRESULT CLR_RT_BinaryFormatter::State::FindHints( if (fld.target->flags & CLR_RECORD_FIELDDEF::FD_HasAttributes) { CLR_RT_TypeDef_Instance inst{}; - inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.m_SerializationHintsAttribute); + inst.InitializeFromIndex(g_CLR_RT_WellKnownTypes.SerializationHintsAttribute); CLR_RT_AttributeEnumerator en{}; en.Initialize(fld); diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 1d038f08ff..3b80febc98 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -5549,7 +5549,7 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() // We can never get into a case where an out of memory exception cannot be thrown. NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex( g_CLR_RT_ExecutionEngine.m_outOfMemoryException, - g_CLR_RT_WellKnownTypes.m_OutOfMemoryException)); + g_CLR_RT_WellKnownTypes.OutOfMemoryException)); #endif // Load Runtime.Events to setup EventSink for other assemblies using it diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index ecaae17ff5..409284d272 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -2874,6 +2874,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) CLR_RT_TypeDef_Instance td; CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_FieldDef_Instance inst; + CLR_UINT32 offset; memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); memset(&td, 0, sizeof(CLR_RT_TypeDef_Instance)); diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp index e234b7a565..438de4d24f 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -104,7 +104,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST // create an array of files paths NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(top, (CLR_UINT32)itemsCount, g_CLR_RT_WellKnownTypes.m_String)); + CLR_RT_HeapBlock_Array::CreateInstance(top, (CLR_UINT32)itemsCount, g_CLR_RT_WellKnownTypes.String)); // 2nd pass to fill the array driver->FindOpen(path, findHandle); diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp index aaed1ab7f6..944568609b 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -67,7 +67,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_DriveInfo::GetFileSystems___STATI CLR_RT_HeapBlock *fsNames; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(ret, g_InstalledFSCount, g_CLR_RT_WellKnownTypes.m_String)); + CLR_RT_HeapBlock_Array::CreateInstance(ret, g_InstalledFSCount, g_CLR_RT_WellKnownTypes.String)); fsNames = (CLR_RT_HeapBlock *)ret.DereferenceArray()->GetFirstElement(); diff --git a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp index c57c341e60..1c01202fbf 100644 --- a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp +++ b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -101,25 +101,16 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT const char *szText; CLR_RT_HeapBlock ref; + memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); ref.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(ref); + CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg1().DereferenceArray(); CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; CLR_RT_HeapBlock_Array *pArrayBytesCopy; CLR_RT_HeapBlock_Array *arrTmp; int cBytesCopy; - CLR_RT_HeapBlock ref; - CLR_RT_HeapBlock_Array *pArrayBytesCopy; - CLR_RT_HeapBlock_Array *arrTmp; - - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - ref.SetObjectReference(NULL); - CLR_RT_ProtectFromGC gc(ref); - - CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg1().DereferenceArray(); - CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; - CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; FAULT_ON_NULL(pArrayBytes); diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp index 52b3c0a601..90b368176a 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp @@ -211,16 +211,16 @@ bool nanoCLR_GetNativeAssemblyInformation(const CLR_UINT8 *data, size_t size) memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_checkSum, sizeof(CLR_UINT32)); data += sizeof(CLR_UINT32); - memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.iMajorVersion, sizeof(CLR_UINT16)); + memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.majorVersion, sizeof(CLR_UINT16)); data += sizeof(CLR_UINT16); - memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.iMinorVersion, sizeof(CLR_UINT16)); + memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.minorVersion, sizeof(CLR_UINT16)); data += sizeof(CLR_UINT16); - memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.iBuildNumber, sizeof(CLR_UINT16)); + memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.buildNumber, sizeof(CLR_UINT16)); data += sizeof(CLR_UINT16); - memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.iRevisionNumber, sizeof(CLR_UINT16)); + memcpy((void *)data, &g_CLR_InteropAssembliesNativeData[i]->m_Version.revisionNumber, sizeof(CLR_UINT16)); data += sizeof(CLR_UINT16); hal_strcpy_s((char *)data, 128, g_CLR_InteropAssembliesNativeData[i]->m_szAssemblyName); From 41355313659e57399054c554dedf206cad36a576 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Fri, 8 Nov 2024 17:48:25 +0000 Subject: [PATCH 062/168] Fix known type member --- .../sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 9c4fc0ff98..a2a05393b7 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -607,7 +607,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // managed stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); From 0f5ea385a3bb71ec08cef94b46c3f9d011dfe83f Mon Sep 17 00:00:00 2001 From: josesimoes Date: Fri, 8 Nov 2024 17:48:50 +0000 Subject: [PATCH 063/168] Fix loop iterator type --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 3b80febc98..0f3b47d233 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4390,7 +4390,7 @@ bool CLR_RT_Assembly::FindGenericParamAtTypeSpec( // get type parser.Advance(element); - for (int i = 0; i <= genericParameterPosition; i++) + for (uint32_t i = 0; i <= genericParameterPosition; i++) { if (FAILED(parser.Advance(element))) { From 82460172045d8fde059b4bc530147db430ecddb2 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Fri, 8 Nov 2024 18:58:44 +0000 Subject: [PATCH 064/168] Improve report of bad assembly - Now outputting header as char instead of hexa value. --- targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index 296385187f..cb92784219 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -350,11 +350,14 @@ struct Settings if (header->GoodAssembly() == false) { - wprintf(L"Invalid assembly format for '%s': ", src); - for (int i = 0; i < sizeof(header->marker); i++) + wprintf(L"Invalid assembly format for assembly '%s'\n", src); + + wprintf(L"Header is: "); + for (size_t i = 0; i < sizeof(header->marker); i++) { - wprintf(L"%02x", header->marker[i]); + wprintf(L"%c", header->marker[i]); } + wprintf(L"\n"); NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); From 3645751a576d167e52afb4e2bbd1e413c129b872 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Mon, 11 Nov 2024 11:30:16 +0000 Subject: [PATCH 065/168] Improvements in declaration of VerifyStackOK - Remove bad implementation. Returning OK for now (same as previous implementation), --- src/CLR/Core/Checks.cpp | 40 ++++---------------------------- src/CLR/Include/nanoCLR_Checks.h | 4 ++-- 2 files changed, 7 insertions(+), 37 deletions(-) diff --git a/src/CLR/Core/Checks.cpp b/src/CLR/Core/Checks.cpp index c4bd536cde..35ab93bf21 100644 --- a/src/CLR/Core/Checks.cpp +++ b/src/CLR/Core/Checks.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -7,41 +7,11 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_Checks::VerifyStackOK(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock *top, int num) +HRESULT CLR_Checks::VerifyStackOK(const CLR_RT_StackFrame &stack, const CLR_RT_HeapBlock *top, const int num) { - CLR_RT_StackFrame *stackArg = &stack; - CLR_RT_HeapBlock *topArg = top; - CLR_RT_HeapBlock const *evalStackArg = &stackArg->m_evalStackPos[-num]; - int argCount = abs(num); - - // if (num > 0) - //{ - // // loop through each parameter, if any and check validity - // for (int pos = 0; pos < num; pos++) - // { - // if (!(evalStackArg <= top)) - // { - // return S_FALSE; - // } - - // topArg++; - // evalStackArg++; - // } - //} - // else if (num < 0) - //{ - // // loop through each parameter, if any and check validity - // for (int pos = 0; pos > num; pos--) - // { - // if (!(evalStackArg <= top)) - // { - // return S_FALSE; - // } - - // topArg--; - // evalStackArg++; - // } - //} + (void)stack; + (void)top; + (void)num; return S_OK; } diff --git a/src/CLR/Include/nanoCLR_Checks.h b/src/CLR/Include/nanoCLR_Checks.h index 19d17cc8af..f13a26126c 100644 --- a/src/CLR/Include/nanoCLR_Checks.h +++ b/src/CLR/Include/nanoCLR_Checks.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -53,7 +53,7 @@ struct CLR_RT_DUMP struct CLR_Checks { - static HRESULT VerifyStackOK( CLR_RT_StackFrame& stack, CLR_RT_HeapBlock* top, int num ); + static HRESULT VerifyStackOK( const CLR_RT_StackFrame& stack, const CLR_RT_HeapBlock* top, const int num ); static HRESULT VerifyObject ( CLR_RT_HeapBlock& top ); From 5e070e465951f3b434c2989c33bf8cc9d1c1d0b1 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Mon, 11 Nov 2024 12:19:21 +0000 Subject: [PATCH 066/168] Fixes from code review --- .../Core/CLR_RT_HeapBlock_GenericInstance.cpp | 128 ++++++++++-------- src/CLR/Core/Interpreter.cpp | 2 +- .../Core/Serialization/BinaryFormatter.cpp | 2 +- src/CLR/Core/TypeSystem.cpp | 4 +- 4 files changed, 73 insertions(+), 63 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp index a2e10b7eb4..aeae267dc0 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_GenericInstance.cpp @@ -8,73 +8,81 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -HRESULT CLR_RT_HeapBlock_GenericInstance::CreateInstance(CLR_RT_HeapBlock& reference, const CLR_RT_TypeSpec_Index& tsIndex) +HRESULT CLR_RT_HeapBlock_GenericInstance::CreateInstance( + CLR_RT_HeapBlock &reference, + const CLR_RT_TypeSpec_Index &tsIndex) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); -// reference.SetObjectReference( nullptr ); - -// CLR_UINT32 length = 0; - -// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) -// if(call) -// { -// NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) -// { -// length++; -// } -// NANOCLR_FOREACH_NODE_BACKWARD_END(); -// } - -// // -// // Limit depth to three callers. -// // -// if(length > 3) length = 3; -// #else -// (void)call; -// #endif - -// CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Delegate) + length * sizeof(CLR_RT_MethodDef_Index)); - -// CLR_RT_HeapBlock_Delegate* dlg = (CLR_RT_HeapBlock_Delegate*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_DELEGATE_HEAD, 0, totLength ); CHECK_ALLOCATION(dlg); - -// reference.SetObjectReference( dlg ); - -// dlg->ClearData(); -// dlg->m_cls.Clear(); -// dlg->m_ftn = ftn; -// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) -// dlg->m_numOfStackFrames = length; -// #endif - -// dlg->m_object.SetObjectReference( nullptr ); - -// #if defined(NANOCLR_APPDOMAINS) -// dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); -// #endif - -// #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) -// if(call) -// { -// CLR_RT_MethodDef_Index* callStack = dlg->GetStackFrames(); - -// NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) -// { -// if(length-- == 0) break; - -// *callStack++ = ptr->m_call; -// } -// NANOCLR_FOREACH_NODE_BACKWARD_END(); -// } -// #endif - - NANOCLR_NOCLEANUP(); + (void)reference; + (void)tsIndex; + + // reference.SetObjectReference( nullptr ); + + // CLR_UINT32 length = 0; + + // #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) + // if(call) + // { + // NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) + // { + // length++; + // } + // NANOCLR_FOREACH_NODE_BACKWARD_END(); + // } + + // // + // // Limit depth to three callers. + // // + // if(length > 3) length = 3; + // #else + // (void)call; + // #endif + + // CLR_UINT32 totLength = (CLR_UINT32)(sizeof(CLR_RT_HeapBlock_Delegate) + length * + // sizeof(CLR_RT_MethodDef_Index)); + + // CLR_RT_HeapBlock_Delegate* dlg = + // (CLR_RT_HeapBlock_Delegate*)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects( DATATYPE_DELEGATE_HEAD, 0, + // totLength ); CHECK_ALLOCATION(dlg); + + // reference.SetObjectReference( dlg ); + + // dlg->ClearData(); + // dlg->m_cls.Clear(); + // dlg->m_ftn = ftn; + // #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) + // dlg->m_numOfStackFrames = length; + // #endif + + // dlg->m_object.SetObjectReference( nullptr ); + + // #if defined(NANOCLR_APPDOMAINS) + // dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); + // #endif + + // #if defined(NANOCLR_DELEGATE_PRESERVE_STACK) + // if(call) + // { + // CLR_RT_MethodDef_Index* callStack = dlg->GetStackFrames(); + + // NANOCLR_FOREACH_NODE_BACKWARD__DIRECT(CLR_RT_StackFrame,ptr,call) + // { + // if(length-- == 0) break; + + // *callStack++ = ptr->m_call; + // } + // NANOCLR_FOREACH_NODE_BACKWARD_END(); + // } + // #endif + + // NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP_NOLABEL(); } void CLR_RT_HeapBlock_GenericInstance::Relocate() { NATIVE_PROFILE_CLR_CORE(); - //m_object.Relocate__HeapBlock(); + // m_object.Relocate__HeapBlock(); } - diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 2a52418446..789c28abe7 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 692a2f0025..b264720b98 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -1009,7 +1009,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - CLR_UINT64 *dst; + CLR_UINT64 *dst = nullptr; CLR_UINT64 val; CLR_UINT32 bits; bool fSigned; diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 0f3b47d233..50f673793a 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4303,7 +4303,9 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, CLR_INDEX scope, CLR_RT_ for (int i = 0; i < tblSize; i++, target++) { - if (target->EnclosingType() == scope) + auto enclosingType = target->EnclosingType(); + + if (enclosingType == scope) { const char *szName = GetString(target->name); From 5d9e9d2017df7bd50c7771a98107740b90b430b3 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Mon, 11 Nov 2024 13:55:36 +0000 Subject: [PATCH 067/168] Simplifications for CLR_RT_GenericParam_Index - Need to change the order of element in CLR_RT_GenericParam_CrossReference because of compiler issues. (possibly related with memory alignment) --- src/CLR/Core/TypeSystem.cpp | 10 ++-------- src/CLR/Include/nanoCLR_Runtime.h | 4 ++-- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 50f673793a..80186f32ae 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -3276,10 +3276,7 @@ void CLR_RT_Assembly::ResolveLink() for (; count; count--, gp++, indexGenericParam++) { - CLR_RT_GenericParam_Index gpIndex; - gpIndex.Set(assemblyIndex, indexGenericParam); - - gp->m_target = gpIndex; + gp->m_target.Set(assemblyIndex, indexGenericParam); gp->data = indexType; gp->typeOrMethodDef = TBL_TypeDef; @@ -4148,10 +4145,7 @@ void CLR_RT_Assembly::ResolveMethodDef() for (; num; num--, gp++, indexGenericParam++) { - CLR_RT_GenericParam_Index gpIndex; - gpIndex.Set(assemblyIndex, indexGenericParam); - - gp->m_target = gpIndex; + gp->m_target.Set(assemblyIndex, indexGenericParam); gp->data = indexMethod; gp->typeOrMethodDef = TBL_MethodDef; diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 6330af8a8c..e4cce56c3a 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -931,8 +931,6 @@ struct CLR_RT_GenericParam_CrossReference /// NanoCLRTable typeOrMethodDef; - CLR_RT_GenericParam_Index m_target; - /// @brief DataType for the generic parameter /// NanoCLRDataType dataType; @@ -940,6 +938,8 @@ struct CLR_RT_GenericParam_CrossReference /// @brief Class of the generic parameter /// CLR_RT_TypeDef_Index classTypeDef; + + CLR_RT_GenericParam_Index m_target; }; struct CLR_RT_MethodSpec_CrossReference From 3d4ae642699277a985af1f32c74eb3022f050f16 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Tue, 12 Nov 2024 18:52:49 +0000 Subject: [PATCH 068/168] Fix marker version --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 257d46a838..03b2a7dac5 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2029,7 +2029,7 @@ bool CLR_RECORD_ASSEMBLY::ValidateMarker() const NATIVE_PROFILE_CLR_CORE(); // compare the marker - return memcmp(marker, c_MARKER_ASSEMBLY_V1, sizeof(c_MARKER_ASSEMBLY_V1)) == 0; + return memcmp(marker, c_MARKER_ASSEMBLY_V2, sizeof(c_MARKER_ASSEMBLY_V2)) == 0; } /// @brief Check for valid assembly header (CRC32 of header, string table version and marker) From 7c266c7321c2242f81a28fcef318c281c189e603 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Tue, 19 Nov 2024 18:50:05 +0000 Subject: [PATCH 069/168] Fix element name --- ...nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp | 2 +- ...sec_cryptography_System_Security_Cryptography_HMACSHA256.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp index 3d82aadd07..b356af58c9 100644 --- a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp +++ b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp @@ -112,7 +112,7 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( stack.TopValue(), plainTextArray->m_numOfElements, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); // get a reference to the array to return cipherTextArray = stack.TopValue().DereferenceArray(); diff --git a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_HMACSHA256.cpp b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_HMACSHA256.cpp index c79729def6..5672579f42 100644 --- a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_HMACSHA256.cpp +++ b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_HMACSHA256.cpp @@ -32,7 +32,7 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_HMACSHA256: // create the return array (32 bytes length) stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.TopValue(), 32, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.TopValue(), 32, g_CLR_RT_WellKnownTypes.UInt8)); outputArray = stack.TopValue().DereferenceArray(); // better clear memory From d077328442cb12e12c7160be7fa42fb9b80a61a1 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Wed, 20 Nov 2024 13:48:32 +0000 Subject: [PATCH 070/168] Fix element name --- ...device_can_native_nanoFramework_Device_Can_CanController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp index 470ecaef0e..250a966bb6 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp @@ -253,7 +253,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController:: CLR_RT_HeapBlock &dataArrayField = canMessage[ManagedCanMessage::FIELD___message]; // create an array of NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(dataArrayField, 8, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(dataArrayField, 8, g_CLR_RT_WellKnownTypes.UInt8)); // get a pointer to the first object in the array CLR_UINT8 *dataBuffer = (CLR_UINT8 *)(dataArrayField.DereferenceArray()->GetFirstElement()); From 501a48287c28dc3047a017a438b295f3eeee0a8d Mon Sep 17 00:00:00 2001 From: josesimoes Date: Mon, 16 Dec 2024 15:17:03 +0000 Subject: [PATCH 071/168] Improvements in WP packet header handler - Add code to handle edge cases that could run into buffer access issues in odd cases. - Remove ShiftBufferToLeft as it wasn't adding any value to the code, actually making it hard to read. (cherry picked from commit 8400d577bd1e5e5c1e6e010ff69cfdc0e56ba38f) --- src/CLR/WireProtocol/WireProtocol_Message.c | 45 +++++++++++++++------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/CLR/WireProtocol/WireProtocol_Message.c b/src/CLR/WireProtocol/WireProtocol_Message.c index 95ef1b7c47..9f164dd643 100644 --- a/src/CLR/WireProtocol/WireProtocol_Message.c +++ b/src/CLR/WireProtocol/WireProtocol_Message.c @@ -62,12 +62,7 @@ bool IsMarkerMatched(void *header, const void *marker, size_t len) return memcmp(header, marker, len) == 0; } -void ShiftBufferToLeft(void *buffer, uint32_t len) -{ - memmove((uint8_t *)buffer, ((uint8_t *)buffer + 1), len - 1); -} - -void SyncToMessageStart() +bool SyncToMessageStart() { uint32_t len; @@ -88,16 +83,33 @@ void SyncToMessageStart() break; } - ShiftBufferToLeft(&_inboundMessage.m_header, len); + // Calculate the source and destination pointers + uint8_t *src = (uint8_t *)&_inboundMessage.m_header + 1; + uint8_t *dst = (uint8_t *)&_inboundMessage.m_header; + size_t moveLength = len - 1; - // update pointer and expected size + // Ensure that the memory regions do not exceed allocated bounds + if ((src + moveLength > (uint8_t *)&_inboundMessage + sizeof(_inboundMessage)) || + (dst + moveLength > (uint8_t *)&_inboundMessage + sizeof(_inboundMessage))) + { + return false; + } + + // Perform the memory move + memmove(dst, src, moveLength); + + // Update pointer and expected size _pos--; _size++; - // sanity checks - _ASSERTE(_size <= sizeof(_inboundMessage.m_header)); - _ASSERTE(_pos >= (uint8_t *)&(_inboundMessage.m_header)); + // Sanity checks + if (_size > sizeof(_inboundMessage.m_header) || _pos < (uint8_t *)&_inboundMessage.m_header) + { + return false; + } } + + return true; } void WP_ReplyToCommand(WP_Message *message, uint8_t fSuccess, uint8_t fCritical, void *ptr, uint32_t size) @@ -357,7 +369,16 @@ void WP_Message_Process() } } - SyncToMessageStart(); + if(!SyncToMessageStart()) + { + // something went wrong + TRACE0(TRACE_ERRORS, "RxError: Failed to sync to message start\n"); + + RestartStateMachine(); + + // exit the loop to allow other RTOS threads to run + return; + } if (len >= sizeof(_inboundMessage.m_header.m_signature)) { From ad106c80378d51cca644536eed51fea15ca37904 Mon Sep 17 00:00:00 2001 From: josesimoes Date: Mon, 16 Dec 2024 15:18:10 +0000 Subject: [PATCH 072/168] Add asserts and sanity checks on HB Array handling (cherry picked from commit de2103c7960d84bd7c0564efaf79419bdd39183b) --- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index b0b0166a97..f169aa7485 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -322,6 +322,20 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( dataSrc += indexSrc * sizeElem; dataDst += indexDst * sizeElem; +#if !defined(BUILD_RTM) + // Validate pointers and memory ranges + if (dataSrc == nullptr || dataDst == nullptr || + dataSrc + length * sizeElem > arraySrc->GetFirstElement() + arraySrc->m_numOfElements * sizeElem || + dataDst + length * sizeElem > arrayDst->GetFirstElement() + arrayDst->m_numOfElements * sizeElem) + { +#ifdef DEBUG + _ASSERTE(FALSE); +#endif + + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); + } +#endif + if (!arraySrc->m_fReference) { memmove(dataDst, dataSrc, length * sizeElem); From d001a024a2e9ea278deb2e7427d3aac1dfa4302f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 17 Dec 2024 09:50:21 +0000 Subject: [PATCH 073/168] Add asserts on GC compaction (#3050) ***NO_CI*** (cherry picked from commit cc90de091a645667027132fa835300fe8bf1235e) --- src/CLR/Core/GarbageCollector_Compaction.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 7ce4f273a6..a4537b4e5b 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -256,6 +256,16 @@ void CLR_RT_GarbageCollector::Heap_Compact() freeRegion->Unlink(); +#ifdef _DEBUG + + _ASSERTE(relocCurrent->m_destination >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); + _ASSERTE(relocCurrent->m_destination < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); + _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); + _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); + _ASSERTE(moveBytes <= freeRegion_Size); + +#endif + memmove(relocCurrent->m_destination, relocCurrent->m_start, moveBytes); if (freeRegion_Size) From ba5ed3a98565fffc250eb54591e3d98c7c3c95d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 17 Dec 2024 09:50:45 +0000 Subject: [PATCH 074/168] Improvements in WP packet header handler (#3049) (cherry picked from commit 19aeee29bc2aa3566bde8de462a6e7a4c989d1cc) --- src/CLR/WireProtocol/WireProtocol_Message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/WireProtocol/WireProtocol_Message.c b/src/CLR/WireProtocol/WireProtocol_Message.c index 9f164dd643..af1412d843 100644 --- a/src/CLR/WireProtocol/WireProtocol_Message.c +++ b/src/CLR/WireProtocol/WireProtocol_Message.c @@ -369,7 +369,7 @@ void WP_Message_Process() } } - if(!SyncToMessageStart()) + if (!SyncToMessageStart()) { // something went wrong TRACE0(TRACE_ERRORS, "RxError: Failed to sync to message start\n"); From a884337fe53835a6662fbeb92bef10a8c535f41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 17 Dec 2024 10:30:54 +0000 Subject: [PATCH 075/168] Improve sanity check with WP sync code (#3052) (cherry picked from commit fe7deac9760d0ae3d688a874a51d351ac2294cd8) --- src/CLR/WireProtocol/WireProtocol_Message.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/WireProtocol/WireProtocol_Message.c b/src/CLR/WireProtocol/WireProtocol_Message.c index af1412d843..e2bde01663 100644 --- a/src/CLR/WireProtocol/WireProtocol_Message.c +++ b/src/CLR/WireProtocol/WireProtocol_Message.c @@ -89,8 +89,8 @@ bool SyncToMessageStart() size_t moveLength = len - 1; // Ensure that the memory regions do not exceed allocated bounds - if ((src + moveLength > (uint8_t *)&_inboundMessage + sizeof(_inboundMessage)) || - (dst + moveLength > (uint8_t *)&_inboundMessage + sizeof(_inboundMessage))) + if ((src + moveLength >= (uint8_t *)&_inboundMessage + sizeof(_inboundMessage)) || + (dst + moveLength >= (uint8_t *)&_inboundMessage + sizeof(_inboundMessage))) { return false; } From ab8585a5438de778f300e95c0aa99464a23717f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 26 Dec 2024 12:53:26 +0000 Subject: [PATCH 076/168] Fix ASSERT in GC heap compact (#3059) ***NO_CI*** (cherry picked from commit 66244e0a10cf4340e88094357098d6ab397b7fc1) --- src/CLR/Core/GarbageCollector_Compaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index a4537b4e5b..2152ef9675 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -256,13 +256,13 @@ void CLR_RT_GarbageCollector::Heap_Compact() freeRegion->Unlink(); -#ifdef _DEBUG +#ifdef DEBUG _ASSERTE(relocCurrent->m_destination >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); _ASSERTE(relocCurrent->m_destination < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); - _ASSERTE(moveBytes <= freeRegion_Size); + _ASSERTE(moveBytes <= (move * sizeof(CLR_RT_HeapBlock))); #endif From 50b07b8549d6e7e6d19539e2aec364758eb1aa58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 9 Jan 2025 14:53:59 +0000 Subject: [PATCH 077/168] Fix protecting HB from GC (#3062) ***NO_CI*** (cherry picked from commit f86e48f96f77c0619b70bd0350ee664e77282e28) --- ...spi_native_System_Device_Spi_SpiDevice.cpp | 360 ++++++------ ...i2c_native_System_Device_I2c_I2cDevice.cpp | 556 +++++++++--------- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 523 ++++++++-------- ...eam_native_System_Device_Usb_UsbStream.cpp | 28 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 420 ++++++++----- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 248 ++++---- 6 files changed, 1173 insertions(+), 962 deletions(-) diff --git a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp index 1b462d40b5..593060ac12 100644 --- a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp +++ b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp @@ -73,217 +73,233 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( bool data16Bits) { NANOCLR_HEADER(); - { - CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock *readSpanByte; - uint8_t *writeData = NULL; - uint8_t *readData = NULL; - int16_t writeSize = 0; - int16_t readSize = 0; - int16_t readOffset = 0; - int16_t writeOffset = 0; - SPI_WRITE_READ_SETTINGS rws; - - bool isLongRunningOperation; - uint32_t estimatedDurationMiliseconds; - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - CLR_RT_HeapBlock *connectionSettings; - FAULT_ON_NULL(pThis); + CLR_RT_HeapBlock *writeSpanByte; + CLR_RT_HeapBlock *readSpanByte; + CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = NULL; + uint8_t *writeData = NULL; + uint8_t *readData = NULL; + int16_t writeSize = 0; + int16_t readSize = 0; + int16_t readOffset = 0; + int16_t writeOffset = 0; + SPI_WRITE_READ_SETTINGS rws; + uint32_t deviceId; + + bool isLongRunningOperation; + uint32_t estimatedDurationMiliseconds; + CLR_RT_HeapBlock hbTimeout; + CLR_INT64 *timeout; + bool eventResult = true; - // get device handle saved on open - uint32_t deviceId = - pThis[Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::FIELD___deviceId].NumericByRef().u4; + // get a pointer to the managed object instance and check that it's not NULL + CLR_RT_HeapBlock *pThis = stack.This(); + CLR_RT_HeapBlock *connectionSettings; + FAULT_ON_NULL(pThis); + + // get device handle saved on open + deviceId = pThis[Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::FIELD___deviceId].NumericByRef().u4; - if (stack.m_customState == 0) + if (stack.m_customState == 0) + { + // For 16 bits, it's directly a buffer, for 8 bits, it's a SpanByte + if (data16Bits) { - // Buffers used either for the SpanBye either for the Byte array - CLR_RT_HeapBlock_Array *writeBuffer; - CLR_RT_HeapBlock_Array *readBuffer; + writeBuffer = stack.Arg1().DereferenceArray(); + if (writeBuffer != NULL) + { + // grab the pointer to the array by getting the first element of the array + writeData = (unsigned char *)writeBuffer->GetFirstElementUInt16(); - // For 16 bits, it's directly a buffer, for 8 bits, it's a SpanByte - if (data16Bits) + // get the size of the buffer by reading the number of elements in the HeapBlock array + writeSize = writeBuffer->m_numOfElements; + + // pin the buffer + writeBuffer->Pin(); + } + + readBuffer = stack.Arg2().DereferenceArray(); + if (readBuffer != NULL) { - writeBuffer = stack.Arg1().DereferenceArray(); - if (writeBuffer != NULL) - { - // grab the pointer to the array by getting the first element of the array - writeData = (unsigned char *)writeBuffer->GetFirstElementUInt16(); + // grab the pointer to the array by getting the first element of the array + readData = (unsigned char *)readBuffer->GetFirstElementUInt16(); - // get the size of the buffer by reading the number of elements in the HeapBlock array - writeSize = writeBuffer->m_numOfElements; - } + // get the size of the buffer by reading the number of elements in the HeapBlock array + readSize = readBuffer->m_numOfElements; - readBuffer = stack.Arg2().DereferenceArray(); - if (readBuffer != NULL) + // pin the buffer + readBuffer->Pin(); + } + } + else + { + // dereference the write and read SpanByte from the arguments + writeSpanByte = stack.Arg1().Dereference(); + if (writeSpanByte != NULL) + { + // get buffer + writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (writeBuffer != NULL) { - // grab the pointer to the array by getting the first element of the array - readData = (unsigned char *)readBuffer->GetFirstElementUInt16(); + // Get the write offset, only the elements defined by the span must be written, not the whole + // array + writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + + // use the span length as write size, only the elements defined by the span must be written + writeSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; + writeData = (unsigned char *)writeBuffer->GetElement(writeOffset); - // get the size of the buffer by reading the number of elements in the HeapBlock array - readSize = readBuffer->m_numOfElements; + // pin the buffer + writeBuffer->Pin(); } } - else + + if (writeData == NULL) { - // dereference the write and read SpanByte from the arguments - writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) - { - // get buffer - writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) - { - // Get the write offset, only the elements defined by the span must be written, not the whole - // array - writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - - // use the span length as write size, only the elements defined by the span must be written - writeSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - writeData = (unsigned char *)writeBuffer->GetElement(writeOffset); - } - } + // nothing to write, have to zero this + writeSize = 0; + } - if (writeData == NULL) + readSpanByte = stack.Arg2().Dereference(); + if (readSpanByte != NULL) + { + // get buffer + readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (readBuffer != NULL) { - // nothing to write, have to zero this - writeSize = 0; - } + // Get the read offset, only the elements defined by the span must be read, not the whole array + readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) - { - // get buffer - readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) - { - // Get the read offset, only the elements defined by the span must be read, not the whole array - readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - - // use the span length as read size, only the elements defined by the span must be read - readSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - readData = (unsigned char *)readBuffer->GetElement(readOffset); - } - } + // use the span length as read size, only the elements defined by the span must be read + readSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; + readData = (unsigned char *)readBuffer->GetElement(readOffset); - if (readData == NULL) - { - // nothing to read, have to zero this - readSize = 0; + // pin the buffer + readBuffer->Pin(); } } - // Are we using SPI full-duplex for transfer ? - bool fullDuplex = (bool)stack.Arg3().NumericByRef().u1; - - // Set up read/write settings for SPI_Write_Read call - // Gets the CS and active state - connectionSettings = - pThis[Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::FIELD___connectionSettings].Dereference(); - int32_t chipSelect = - connectionSettings[Library_sys_dev_spi_native_System_Device_Spi_SpiConnectionSettings::FIELD___csLine] - .NumericByRef() - .s4; - bool chipSelectActiveState = - (bool)connectionSettings[Library_sys_dev_spi_native_System_Device_Spi_SpiConnectionSettings:: - FIELD___chipSelectLineActiveState] + + if (readData == NULL) + { + // nothing to read, have to zero this + readSize = 0; + } + } + + // Are we using SPI full-duplex for transfer ? + bool fullDuplex = (bool)stack.Arg3().NumericByRef().u1; + + // Set up read/write settings for SPI_Write_Read call + // Gets the CS and active state + connectionSettings = + pThis[Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::FIELD___connectionSettings].Dereference(); + int32_t chipSelect = + connectionSettings[Library_sys_dev_spi_native_System_Device_Spi_SpiConnectionSettings::FIELD___csLine] + .NumericByRef() + .s4; + bool chipSelectActiveState = + (bool)connectionSettings + [Library_sys_dev_spi_native_System_Device_Spi_SpiConnectionSettings::FIELD___chipSelectLineActiveState] .NumericByRef() .u1; - rws = {fullDuplex, 0, data16Bits, 0, chipSelect, chipSelectActiveState}; - - // Check to see if we should run async so as not to hold up other tasks - isLongRunningOperation = System_Device_IsLongRunningOperation( - writeSize, - readSize, - fullDuplex, - data16Bits, - nanoSPI_GetByteTime(deviceId), - (uint32_t &)estimatedDurationMiliseconds); - - if (isLongRunningOperation) - { - // if this is a long running operation, set a timeout equal to the estimated transaction duration in - // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below + rws = {fullDuplex, 0, data16Bits, 0, chipSelect, chipSelectActiveState}; + + // Check to see if we should run async so as not to hold up other tasks + isLongRunningOperation = System_Device_IsLongRunningOperation( + writeSize, + readSize, + fullDuplex, + data16Bits, + nanoSPI_GetByteTime(deviceId), + (uint32_t &)estimatedDurationMiliseconds); + + if (isLongRunningOperation) + { + // if this is a long running operation, set a timeout equal to the estimated transaction duration in + // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below - // Use twice the estimated Duration as timeout - estimatedDurationMiliseconds *= 2; + // Use twice the estimated Duration as timeout + estimatedDurationMiliseconds *= 2; - hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); + hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); - // if m_customState == 0 then push timeout on to eval stack[0] then move to m_customState = 1 - // Return current timeout value - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + // if m_customState == 0 then push timeout on to eval stack[0] then move to m_customState = 1 + // Return current timeout value + NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - // protect the buffers from GC so DMA can find them where they are supposed to be - if (writeData != NULL) - { - CLR_RT_ProtectFromGC gcWriteBuffer(*writeBuffer); - } - if (readData != NULL) - { - CLR_RT_ProtectFromGC gcReadBuffer(*readBuffer); - } + // Set callback for async calls to nano spi + rws.callback = System_Device_nano_spi_callback; + } - // Set callback for async calls to nano spi - rws.callback = System_Device_nano_spi_callback; - } + // Start SPI transfer + // We can ask for async transfer by setting callback but it depends if underlying supports it + // return of CLR_E_BUSY means async started + hr = nanoSPI_Write_Read( + deviceId, + rws, + (uint8_t *)writeData, + (int32_t)writeSize, + (uint8_t *)readData, + (int32_t)readSize); + + // Async transfer started, go to custom 2 state ( wait completion ) + if (hr == CLR_E_BUSY) + { + stack.m_customState = 2; + } + } + + // Waiting for Async operation to complete + if (stack.m_customState == 2) + { + // Get timeout from eval stack we set up + stack.SetupTimeoutFromTicks(hbTimeout, timeout); - // Start SPI transfer - // We can ask for async transfer by setting callback but it depends if underlying supports it - // return of CLR_E_BUSY means async started - hr = nanoSPI_Write_Read( - deviceId, - rws, - (uint8_t *)writeData, - (int32_t)writeSize, - (uint8_t *)readData, - (int32_t)readSize); - - // Async transfer started, go to custom 2 state ( wait completion ) - if (hr == CLR_E_BUSY) + while (eventResult) + { + // Has it completed ? + if (nanoSPI_Op_Status(deviceId) == SPI_OP_COMPLETE) { - stack.m_customState = 2; + // SPI driver is ready meaning that the SPI transaction(s) is(are) completed + break; } - } - // Waiting for Async operation to complete - if (stack.m_customState == 2) - { - // Get timeout from eval stack we set up - stack.SetupTimeoutFromTicks(hbTimeout, timeout); + // non-blocking wait allowing other threads to run while we wait for the Spi transaction to complete + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_SpiMaster, eventResult)); - while (eventResult) + if (!eventResult) { - // Has it completed ? - if (nanoSPI_Op_Status(deviceId) == SPI_OP_COMPLETE) - { - // SPI driver is ready meaning that the SPI transaction(s) is(are) completed - break; - } + // Timeout + NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); + } + } - // non-blocking wait allowing other threads to run while we wait for the Spi transaction to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_SpiMaster, eventResult)); + // pop timeout heap block from stack + stack.PopValue(); - if (!eventResult) - { - // Timeout - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } + // null pointers and vars + pThis = NULL; + } - // pop timeout heap block from stack - stack.PopValue(); + NANOCLR_CLEANUP(); + + if (hr != CLR_E_THREAD_WAITING) + { + // unpin buffers + if (writeBuffer != NULL && writeBuffer->IsPinned()) + { + writeBuffer->Unpin(); + } - // null pointers and vars - pThis = NULL; + if (readBuffer != NULL && readBuffer->IsPinned()) + { + readBuffer->Unpin(); } } - NANOCLR_NOCLEANUP(); + NANOCLR_CLEANUP_END(); } HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeOpenDevice___I4(CLR_RT_StackFrame &stack) diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index c495e467f3..db8d19823b 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -389,350 +389,366 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NativeTransmit___SystemDeviceI2cI2cTransferResult__SystemSpanByte__SystemSpanByte(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); + + uint8_t busIndex; + NF_PAL_I2C *palI2c = NULL; + bool isLongRunningOperation = false; + msg_t transactionResult = MSG_OK; + + CLR_RT_HeapBlock hbTimeout; + CLR_INT64 *timeout; + bool eventResult = true; + uint32_t estimatedDurationMiliseconds; + + CLR_RT_HeapBlock *result; + CLR_RT_HeapBlock *writeSpanByte; + CLR_RT_HeapBlock *readSpanByte; + CLR_RT_HeapBlock *connectionSettings; + CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = NULL; + int readOffset = 0; + int writeOffset = 0; + + // get a pointer to the managed object instance and check that it's not NULL + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + // get pointer to connection settings field + connectionSettings = pThis[FIELD___connectionSettings].Dereference(); + + // get bus index + busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; + + // get the driver for the I2C bus + switch (busIndex) { - uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; - bool isLongRunningOperation = false; - msg_t transactionResult = MSG_OK; - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - uint32_t estimatedDurationMiliseconds; - - CLR_RT_HeapBlock *result; - CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - int readOffset = 0; - int writeOffset = 0; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get pointer to connection settings field - CLR_RT_HeapBlock *connectionSettings = pThis[FIELD___connectionSettings].Dereference(); - - // get bus index - busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; - - // get the driver for the I2C bus - switch (busIndex) - { #if (STM32_I2C_USE_I2C1 == TRUE) - case 1: - palI2c = &I2C1_PAL; - break; + case 1: + palI2c = &I2C1_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C2) && (STM32_I2C_USE_I2C2 == TRUE) - case 2: - palI2c = &I2C2_PAL; - break; + case 2: + palI2c = &I2C2_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C3) && (STM32_I2C_USE_I2C3 == TRUE) - case 3: - palI2c = &I2C3_PAL; - break; + case 3: + palI2c = &I2C3_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C4) && (STM32_I2C_USE_I2C4 == TRUE) - case 4: - palI2c = &I2C4_PAL; - break; + case 4: + palI2c = &I2C4_PAL; + break; #endif - default: - // the requested I2C bus is not valid - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - break; - } + default: + // the requested I2C bus is not valid + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + break; + } - // dereference the write and read SpanByte from the arguments - writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + // dereference the write and read SpanByte from the arguments + writeSpanByte = stack.Arg1().Dereference(); + if (writeSpanByte != NULL) + { + // get buffer + writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (writeBuffer != NULL) { - // get buffer - writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) - { - // Get the write offset, only the elements defined by the span must be written, not the whole array - writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // Get the write offset, only the elements defined by the span must be written, not the whole array + writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - // use the span length as write size, only the elements defined by the span must be written - palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } - } + // use the span length as write size, only the elements defined by the span must be written + palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - if (writeBuffer == NULL) - { - // nothing to write, have to zero this - palI2c->WriteSize = 0; + // pin the buffer so DMA can find it where its supposed to be + writeBuffer->Pin(); } + } - readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (writeBuffer == NULL) + { + // nothing to write, have to zero this + palI2c->WriteSize = 0; + } + + readSpanByte = stack.Arg2().Dereference(); + if (readSpanByte != NULL) + { + // get buffer + readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (readBuffer != NULL) { - // get buffer - readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) - { - // Get the read offset, only the elements defined by the span must be read, not the whole array - readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // Get the read offset, only the elements defined by the span must be read, not the whole array + readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - // use the span length as read size, only the elements defined by the span must be read - palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } - } + // use the span length as read size, only the elements defined by the span must be read + palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - if (readBuffer == NULL) - { - // nothing to read, have to zero this - palI2c->ReadSize = 0; + // pin the buffer so DMA can find it where its supposed to be + readBuffer->Pin(); } + } - // check if this is a long running operation - isLongRunningOperation = IsLongRunningOperation( - palI2c->WriteSize, - palI2c->ReadSize, - palI2c->ByteTime, - (uint32_t &)estimatedDurationMiliseconds); + if (readBuffer == NULL) + { + // nothing to read, have to zero this + palI2c->ReadSize = 0; + } - if (isLongRunningOperation) - { - // if this is a long running operation, set a timeout equal to the estimated transaction duration in - // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below - hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); + // check if this is a long running operation + isLongRunningOperation = IsLongRunningOperation( + palI2c->WriteSize, + palI2c->ReadSize, + palI2c->ByteTime, + (uint32_t &)estimatedDurationMiliseconds); - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + if (isLongRunningOperation) + { + // if this is a long running operation, set a timeout equal to the estimated transaction duration in + // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below + hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); - // protect the buffers from GC so DMA can find them where they are supposed to be - CLR_RT_ProtectFromGC gcWriteBuffer(*writeBuffer); - CLR_RT_ProtectFromGC gcReadBuffer(*readBuffer); - } + NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + } - // this is going to be used to check for the right event in case of simultaneous I2C transaction - if (!isLongRunningOperation || stack.m_customState == 1) - { - // get slave address from connection settings field - palI2c->Address = - (i2caddr_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4; + // this is going to be used to check for the right event in case of simultaneous I2C transaction + if (!isLongRunningOperation || stack.m_customState == 1) + { + // get slave address from connection settings field + palI2c->Address = (i2caddr_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4; - // when using I2Cv1 driver the address needs to be loaded in the I2C driver struct + // when using I2Cv1 driver the address needs to be loaded in the I2C driver struct #if defined(STM32F1XX) || defined(STM32F4XX) || defined(STM32L1XX) - palI2c->Driver->addr = palI2c->Address; + palI2c->Driver->addr = palI2c->Address; #endif - if (writeBuffer != NULL) - { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); - - // flush DMA buffer to ensure cache coherency - // (only required for Cortex-M7) - cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); - } + if (writeBuffer != NULL) + { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); - if (readBuffer != NULL) - { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); - } + // flush DMA buffer to ensure cache coherency + // (only required for Cortex-M7) + cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); + } - // because the bus access is shared, acquire the appropriate bus - i2cAcquireBus(palI2c->Driver); - i2cStart(palI2c->Driver, &palI2c->Configuration); + if (readBuffer != NULL) + { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); } - if (isLongRunningOperation) + // because the bus access is shared, acquire the appropriate bus + i2cAcquireBus(palI2c->Driver); + i2cStart(palI2c->Driver, &palI2c->Configuration); + } + + if (isLongRunningOperation) + { + // this is a long running operation and hasn't started yet + // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it + if (stack.m_customState == 1) { - // this is a long running operation and hasn't started yet - // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it - if (stack.m_customState == 1) - { - // spawn working thread to perform the I2C transaction + // spawn working thread to perform the I2C transaction - // 1. allocate memory for I2C thread - palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); + // 1. allocate memory for I2C thread + palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); - if (palI2c->WorkingThreadStack == NULL) - { - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } + if (palI2c->WorkingThreadStack == NULL) + { + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); + } - // 2. create thread - uint16_t status = tx_thread_create( - palI2c->WorkingThread, + // 2. create thread + uint16_t status = tx_thread_create( + palI2c->WorkingThread, #if !defined(BUILD_RTM) - (CHAR *)"I2C Thread", + (CHAR *)"I2C Thread", #else - NULL, + NULL, #endif - I2CWorkingThread_entry, - (uint32_t)palI2c, - palI2c->WorkingThreadStack, - I2C_THREAD_STACK_SIZE, - I2C_THREAD_PRIORITY, - I2C_THREAD_PRIORITY, - TX_NO_TIME_SLICE, - TX_AUTO_START); - - if (status != TX_SUCCESS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; + I2CWorkingThread_entry, + (uint32_t)palI2c, + palI2c->WorkingThreadStack, + I2C_THREAD_STACK_SIZE, + I2C_THREAD_PRIORITY, + I2C_THREAD_PRIORITY, + TX_NO_TIME_SLICE, + TX_AUTO_START); + + if (status != TX_SUCCESS) + { + NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } + + // bump custom state + stack.m_customState = 2; + } + } + else + { + // this is NOT a long running operation + // perform I2C transaction using driver's SYNC API + + if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) + { + // this is a Write/Read transaction + transactionResult = i2cMasterTransmitTimeout( + palI2c->Driver, + palI2c->Address, + palI2c->WriteBuffer, + palI2c->WriteSize, + palI2c->ReadBuffer, + palI2c->ReadSize, + TX_TICKS_PER_MILLISEC(20)); } else { - // this is NOT a long running operation - // perform I2C transaction using driver's SYNC API - - if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) + if (palI2c->ReadSize == 0) { - // this is a Write/Read transaction + // this is Write only transaction transactionResult = i2cMasterTransmitTimeout( palI2c->Driver, palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - palI2c->ReadBuffer, - palI2c->ReadSize, + NULL, + 0, TX_TICKS_PER_MILLISEC(20)); } else { - if (palI2c->ReadSize == 0) - { - // this is Write only transaction - transactionResult = i2cMasterTransmitTimeout( - palI2c->Driver, - palI2c->Address, - palI2c->WriteBuffer, - palI2c->WriteSize, - NULL, - 0, - TX_TICKS_PER_MILLISEC(20)); - } - else - { - // this is a Read only transaction - transactionResult = i2cMasterReceiveTimeout( - palI2c->Driver, - palI2c->Address, - palI2c->ReadBuffer, - palI2c->ReadSize, - TX_TICKS_PER_MILLISEC(20)); - } + // this is a Read only transaction + transactionResult = i2cMasterReceiveTimeout( + palI2c->Driver, + palI2c->Address, + palI2c->ReadBuffer, + palI2c->ReadSize, + TX_TICKS_PER_MILLISEC(20)); } } + } - while (eventResult) + while (eventResult) + { + if (!isLongRunningOperation) { - if (!isLongRunningOperation) - { - // this is not a long running operation so nothing to do here - break; - } - - if (palI2c->WorkingThread->tx_thread_state == TX_TERMINATED) - { - // I2C working thread is now complete - break; - } - - // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + // this is not a long running operation so nothing to do here + break; } - if (isLongRunningOperation) + if (palI2c->WorkingThread->tx_thread_state == TX_TERMINATED) { - // pop timeout heap block from stack - stack.PopValue(); + // I2C working thread is now complete + break; } - if (eventResult || !isLongRunningOperation) - { - // event occurred - // OR this is NOT a long running operation + // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + } - i2cReleaseBus(palI2c->Driver); + if (isLongRunningOperation) + { + // pop timeout heap block from stack + stack.PopValue(); + } - // create the return object (I2cTransferResult) - // only at this point we are sure that there will be a return from this thread so it's OK to use the - // managed stack - CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); - result = top.Dereference(); - FAULT_ON_NULL(result); + if (eventResult || !isLongRunningOperation) + { + // event occurred + // OR this is NOT a long running operation - if (isLongRunningOperation) - { - // get transaction result from I2C struct - transactionResult = palI2c->TransactionResult; + i2cReleaseBus(palI2c->Driver); - // delete thread - tx_thread_delete(palI2c->WorkingThread); + // create the return object (I2cTransferResult) + // only at this point we are sure that there will be a return from this thread so it's OK to use the + // managed stack + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + result = top.Dereference(); + FAULT_ON_NULL(result); - // free stack memory - platform_free(palI2c->WorkingThreadStack); + if (isLongRunningOperation) + { + // get transaction result from I2C struct + transactionResult = palI2c->TransactionResult; - // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; - } + // delete thread + tx_thread_delete(palI2c->WorkingThread); - // get the result from the working thread execution - if (transactionResult != MSG_OK) - { - // error in transaction - int errors = i2cGetErrors(palI2c->Driver); - - // figure out what was the error and set the status field - switch (errors) - { - case I2C_ACK_FAILURE: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); - break; - - case I2C_TIMEOUT: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); - break; - - default: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_UnknownError); - } - - // set the bytes transferred count to 0 because we don't have a way to know how many bytes were - // actually sent/received - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); - } - else - { - // successful transaction - // set the result field - result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); + // free stack memory + platform_free(palI2c->WorkingThreadStack); - // set the bytes transferred field - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( - (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); - } + // clear pointers + palI2c->WorkingThread = NULL; + palI2c->WorkingThreadStack = NULL; + } + + // get the result from the working thread execution + if (transactionResult != MSG_OK) + { + // error in transaction + int errors = i2cGetErrors(palI2c->Driver); - if (palI2c->ReadSize > 0) + // figure out what was the error and set the status field + switch (errors) { - // invalidate cache over read buffer to ensure that content from DMA is read - // (only required for Cortex-M7) - cacheBufferInvalidate(palI2c->ReadBuffer, palI2c->ReadSize); + case I2C_ACK_FAILURE: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); + break; + + case I2C_TIMEOUT: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); + break; + + default: + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_UnknownError); } + + // set the bytes transferred count to 0 because we don't have a way to know how many bytes were + // actually sent/received + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); + } + else + { + // successful transaction + // set the result field + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); + + // set the bytes transferred field + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( + (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); + } + + if (palI2c->ReadSize > 0) + { + // invalidate cache over read buffer to ensure that content from DMA is read + // (only required for Cortex-M7) + cacheBufferInvalidate(palI2c->ReadBuffer, palI2c->ReadSize); } } - NANOCLR_NOCLEANUP(); + NANOCLR_CLEANUP(); + + if (hr != CLR_E_THREAD_WAITING) + { + // un-pin the buffers + if (writeBuffer != NULL && writeBuffer->IsPinned()) + { + writeBuffer->Unpin(); + } + + if (readBuffer != NULL && readBuffer->IsPinned()) + { + readBuffer->Unpin(); + } + } + + NANOCLR_CLEANUP_END(); } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index db71c47a14..564ce25287 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -396,336 +396,353 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NativeTransmit___SystemDeviceI2cI2cTransferResult__SystemSpanByte__SystemSpanByte(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); + + uint8_t busIndex; + NF_PAL_I2C *palI2c = NULL; + bool isLongRunningOperation = false; + + CLR_RT_HeapBlock hbTimeout; + CLR_INT64 *timeout; + bool eventResult = true; + uint32_t estimatedDurationMiliseconds; + + CLR_RT_HeapBlock *result; + CLR_RT_HeapBlock *writeSpanByte; + CLR_RT_HeapBlock *readSpanByte; + CLR_RT_HeapBlock *connectionSettings; + CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = NULL; + int readOffset = 0; + int writeOffset = 0; + I2C_TransferSeq_TypeDef i2cTransfer; + I2C_TransferReturn_TypeDef transactionResult = i2cTransferInProgress; + + // get a pointer to the managed object instance and check that it's not NULL + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + // get pointer to connection settings field + connectionSettings = pThis[FIELD___connectionSettings].Dereference(); + + // get bus index + busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; + + // get the driver for the I2C bus + switch (busIndex) { - uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; - bool isLongRunningOperation = false; - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - uint32_t estimatedDurationMiliseconds; - - CLR_RT_HeapBlock *result; - CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - int readOffset = 0; - int writeOffset = 0; - I2C_TransferSeq_TypeDef i2cTransfer; - I2C_TransferReturn_TypeDef transactionResult = i2cTransferInProgress; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get pointer to connection settings field - CLR_RT_HeapBlock *connectionSettings = pThis[FIELD___connectionSettings].Dereference(); - - // get bus index - busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; - - // get the driver for the I2C bus - switch (busIndex) - { - //////////////////////////////////// - // Gecko I2C bus index is 0 based // - //////////////////////////////////// + //////////////////////////////////// + // Gecko I2C bus index is 0 based // + //////////////////////////////////// #if defined(I2C0) && (GECKO_USE_I2C0 == TRUE) - case 1: - palI2c = &I2C0_PAL; - break; + case 1: + palI2c = &I2C0_PAL; + break; #endif #if defined(I2C1) && (GECKO_USE_I2C1 == TRUE) - case 2: - palI2c = &I2C1_PAL; - break; + case 2: + palI2c = &I2C1_PAL; + break; #endif #if defined(I2C2) && (GECKO_USE_I2C2 == TRUE) - case 3: - palI2c = &I2C2_PAL; - break; + case 3: + palI2c = &I2C2_PAL; + break; #endif - default: - // the requested I2C bus is not valid - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - break; - } + default: + // the requested I2C bus is not valid + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + break; + } - // dereference the write and read SpanByte from the arguments - writeSpanByte = stack.Arg1().Dereference(); + // dereference the write and read SpanByte from the arguments + writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != NULL) + { + // get buffer + writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + + if (writeBuffer != NULL) { - // get buffer - writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + // Get the write offset, only the elements defined by the span must be written, not the whole array + writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - if (writeBuffer != NULL) - { - // Get the write offset, only the elements defined by the span must be written, not the whole array - writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // use the span length as write size, only the elements defined by the span must be written + palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - // use the span length as write size, only the elements defined by the span must be written - palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } + // pin the buffer so DMA can find it where its supposed to be + writeBuffer->Pin(); } + } - if (writeBuffer == NULL) - { - // nothing to write, have to zero this - palI2c->WriteSize = 0; - } + if (writeBuffer == NULL) + { + // nothing to write, have to zero this + palI2c->WriteSize = 0; + } - readSpanByte = stack.Arg2().Dereference(); + readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != NULL) + { + // get buffer + readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + + if (readBuffer != NULL) { - // get buffer - readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + // Get the read offset, only the elements defined by the span must be read, not the whole array + readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - if (readBuffer != NULL) - { - // Get the read offset, only the elements defined by the span must be read, not the whole array - readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // use the span length as read size, only the elements defined by the span must be read + palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - // use the span length as read size, only the elements defined by the span must be read - palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } + // pin the buffer so DMA can find it where its supposed to be + readBuffer->Pin(); } + } - if (readBuffer == NULL) - { - // nothing to read, have to zero this - palI2c->ReadSize = 0; - } + if (readBuffer == NULL) + { + // nothing to read, have to zero this + palI2c->ReadSize = 0; + } - // check if this is a long running operation - isLongRunningOperation = IsLongRunningOperation( - palI2c->WriteSize, - palI2c->ReadSize, - palI2c->ByteTime, - (uint32_t &)estimatedDurationMiliseconds); + // check if this is a long running operation + isLongRunningOperation = IsLongRunningOperation( + palI2c->WriteSize, + palI2c->ReadSize, + palI2c->ByteTime, + (uint32_t &)estimatedDurationMiliseconds); - if (isLongRunningOperation) - { - // if this is a long running operation, set a timeout equal to the estimated transaction duration in - // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below - hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); + if (isLongRunningOperation) + { + // if this is a long running operation, set a timeout equal to the estimated transaction duration in + // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below + hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); + + NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + } - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + // this is going to be used to check for the right event in case of simultaneous I2C transaction + if (!isLongRunningOperation || stack.m_customState == 1) + { + + // get slave address from connection settings field + i2cTransfer.addr = (uint16_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4 + << 1; - // protect the buffers from GC so DMA can find them where they are supposed to be - CLR_RT_ProtectFromGC gcWriteBuffer(*writeBuffer); - CLR_RT_ProtectFromGC gcReadBuffer(*readBuffer); + if (writeBuffer != NULL) + { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); } - // this is going to be used to check for the right event in case of simultaneous I2C transaction - if (!isLongRunningOperation || stack.m_customState == 1) + if (readBuffer != NULL) { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); + } + } - // get slave address from connection settings field - i2cTransfer.addr = - (uint16_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4 << 1; + if (isLongRunningOperation) + { + // this is a long running operation and hasn't started yet + // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it + if (stack.m_customState == 1) + { + // spawn working thread to perform the I2C transaction - if (writeBuffer != NULL) + // 1. allocate memory for I2C thread + palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); + + if (palI2c->WorkingThreadStack == NULL) { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); + NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } - if (readBuffer != NULL) + // 2. create thread + uint16_t status = tx_thread_create( + palI2c->WorkingThread, +#if !defined(BUILD_RTM) + (CHAR *)"I2C Thread", +#else + NULL, +#endif + I2CWorkingThread_entry, + (uint32_t)palI2c, + palI2c->WorkingThreadStack, + I2C_THREAD_STACK_SIZE, + I2C_THREAD_PRIORITY, + I2C_THREAD_PRIORITY, + TX_NO_TIME_SLICE, + TX_AUTO_START); + + if (status != TX_SUCCESS) { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); + NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } + + // bump custom state + stack.m_customState = 2; } + } + else + { + // this is NOT a long running operation + // perform I2C transaction - if (isLongRunningOperation) + if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) { - // this is a long running operation and hasn't started yet - // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it - if (stack.m_customState == 1) - { - // spawn working thread to perform the I2C transaction - - // 1. allocate memory for I2C thread - palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); + // this is a Write/Read transaction + i2cTransfer.flags = I2C_FLAG_WRITE_READ; - if (palI2c->WorkingThreadStack == NULL) - { - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // 2. create thread - uint16_t status = tx_thread_create( - palI2c->WorkingThread, -#if !defined(BUILD_RTM) - (CHAR *)"I2C Thread", -#else - NULL, -#endif - I2CWorkingThread_entry, - (uint32_t)palI2c, - palI2c->WorkingThreadStack, - I2C_THREAD_STACK_SIZE, - I2C_THREAD_PRIORITY, - I2C_THREAD_PRIORITY, - TX_NO_TIME_SLICE, - TX_AUTO_START); - - if (status != TX_SUCCESS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } + i2cTransfer.buf[0].data = palI2c->WriteBuffer; + i2cTransfer.buf[0].len = palI2c->WriteSize; + i2cTransfer.buf[1].data = palI2c->ReadBuffer; + i2cTransfer.buf[1].len = palI2c->ReadSize; - // bump custom state - stack.m_customState = 2; - } + // Perform the transfer and return status from the transfer + transactionResult = I2CSPM_Transfer(palI2c->Configuration->port, &i2cTransfer); } else { - // this is NOT a long running operation - // perform I2C transaction - - if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) + if (palI2c->ReadSize == 0) { - // this is a Write/Read transaction - i2cTransfer.flags = I2C_FLAG_WRITE_READ; + // this is Write only transaction + i2cTransfer.flags = I2C_FLAG_WRITE; i2cTransfer.buf[0].data = palI2c->WriteBuffer; i2cTransfer.buf[0].len = palI2c->WriteSize; - i2cTransfer.buf[1].data = palI2c->ReadBuffer; - i2cTransfer.buf[1].len = palI2c->ReadSize; // Perform the transfer and return status from the transfer transactionResult = I2CSPM_Transfer(palI2c->Configuration->port, &i2cTransfer); } else { - if (palI2c->ReadSize == 0) - { - // this is Write only transaction - i2cTransfer.flags = I2C_FLAG_WRITE; - - i2cTransfer.buf[0].data = palI2c->WriteBuffer; - i2cTransfer.buf[0].len = palI2c->WriteSize; - - // Perform the transfer and return status from the transfer - transactionResult = I2CSPM_Transfer(palI2c->Configuration->port, &i2cTransfer); - } - else - { - // this is a Read only transaction - i2cTransfer.flags = I2C_FLAG_READ; - i2cTransfer.buf[0].data = palI2c->ReadBuffer; - i2cTransfer.buf[0].len = palI2c->ReadSize; + // this is a Read only transaction + i2cTransfer.flags = I2C_FLAG_READ; + i2cTransfer.buf[0].data = palI2c->ReadBuffer; + i2cTransfer.buf[0].len = palI2c->ReadSize; - // Perform the transfer and return status from the transfer - transactionResult = I2CSPM_Transfer(palI2c->Configuration->port, &i2cTransfer); - } + // Perform the transfer and return status from the transfer + transactionResult = I2CSPM_Transfer(palI2c->Configuration->port, &i2cTransfer); } } + } - while (eventResult) + while (eventResult) + { + if (!isLongRunningOperation) { - if (!isLongRunningOperation) - { - // this is not a long running operation so nothing to do here - break; - } - - if (palI2c->WorkingThread->tx_thread_state == TX_TERMINATED) - { - // I2C working thread is now complete - break; - } + // this is not a long running operation so nothing to do here + break; + } - // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + if (palI2c->WorkingThread->tx_thread_state == TX_TERMINATED) + { + // I2C working thread is now complete + break; } + // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + } + + if (isLongRunningOperation) + { + // pop timeout heap block from stack + stack.PopValue(); + } + + if (eventResult || !isLongRunningOperation) + { + // event occurred + // OR this is NOT a long running operation + + // create the return object (I2cTransferResult) + // only at this point we are sure that there will be a return from this thread so it's OK to use the + // managed stack + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + result = top.Dereference(); + FAULT_ON_NULL(result); + if (isLongRunningOperation) { - // pop timeout heap block from stack - stack.PopValue(); + // get transaction result from I2C struct + transactionResult = palI2c->TransactionResult; + + // delete thread + tx_thread_delete(palI2c->WorkingThread); + + // free stack memory + platform_free(palI2c->WorkingThreadStack); + + // clear pointers + palI2c->WorkingThread = NULL; + palI2c->WorkingThreadStack = NULL; } - if (eventResult || !isLongRunningOperation) + // get the result from the working thread execution + if (transactionResult != i2cTransferDone) { - // event occurred - // OR this is NOT a long running operation - - // create the return object (I2cTransferResult) - // only at this point we are sure that there will be a return from this thread so it's OK to use the - // managed stack - CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); - result = top.Dereference(); - FAULT_ON_NULL(result); - - if (isLongRunningOperation) + // figure out what was the error and set the status field + switch (transactionResult) { - // get transaction result from I2C struct - transactionResult = palI2c->TransactionResult; - - // delete thread - tx_thread_delete(palI2c->WorkingThread); + case i2cTransferNack: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); + break; + + case i2cTransferBusErr: + case i2cTransferArbLost: + case i2cTransferUsageFault: + case i2cTransferSwFault: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); + break; + + default: + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_UnknownError); + } - // free stack memory - platform_free(palI2c->WorkingThreadStack); + // set the bytes transferred count to 0 because we don't have a way to know how many bytes were + // actually sent/received + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); + } + else + { + // successful transaction + // set the result field + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); - // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; - } + // set the bytes transferred field + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( + (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); + } + } - // get the result from the working thread execution - if (transactionResult != i2cTransferDone) - { - // figure out what was the error and set the status field - switch (transactionResult) - { - case i2cTransferNack: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); - break; - - case i2cTransferBusErr: - case i2cTransferArbLost: - case i2cTransferUsageFault: - case i2cTransferSwFault: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); - break; - - default: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_UnknownError); - } + NANOCLR_CLEANUP(); - // set the bytes transferred count to 0 because we don't have a way to know how many bytes were - // actually sent/received - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); - } - else - { - // successful transaction - // set the result field - result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); + if (hr != CLR_E_THREAD_WAITING) + { + // un-pin the buffers + if (writeBuffer != NULL && writeBuffer->IsPinned()) + { + writeBuffer->Unpin(); + } - // set the bytes transferred field - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( - (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); - } + if (readBuffer != NULL && readBuffer->IsPinned()) + { + readBuffer->Unpin(); } } - NANOCLR_NOCLEANUP(); + NANOCLR_CLEANUP_END(); } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp index 7344734546..bbdd226407 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp @@ -105,6 +105,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Read___I4_ // dereference the data buffer from the argument dataBuffer = stack.Arg1().DereferenceArray(); FAULT_ON_NULL_ARG(dataBuffer); + dataBuffer->Pin(); offset = stack.Arg2().NumericByRef().s4; count = stack.Arg3().NumericByRef().s4; @@ -199,7 +200,18 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Read___I4_ // set result with count of bytes received stack.SetResult_I4(UsbStream_PAL.RxBytesReceived); - NANOCLR_NOCLEANUP(); + NANOCLR_CLEANUP(); + + if (hr != CLR_E_THREAD_WAITING) + { + // need to clean up the buffer, if this was not rescheduled + if (dataBuffer != NULL && dataBuffer->IsPinned()) + { + dataBuffer->Unpin(); + } + } + + NANOCLR_CLEANUP_END(); } HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Write___VOID__SZARRAY_U1__I4__I4( @@ -235,6 +247,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Write___VO // dereference the data buffer from the argument dataBuffer = stack.Arg1().DereferenceArray(); FAULT_ON_NULL_ARG(dataBuffer); + dataBuffer->Pin(); offset = stack.Arg2().NumericByRef().s4; count = stack.Arg3().NumericByRef().s4; @@ -347,7 +360,18 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Write___VO // pop timeout heap block from stack stack.PopValue(); - NANOCLR_NOCLEANUP(); + NANOCLR_CLEANUP(); + + if (isLongRunning && hr != CLR_E_THREAD_WAITING) + { + // need to clean up the buffer, if this was not rescheduled + if (dataBuffer != NULL && dataBuffer->IsPinned()) + { + dataBuffer->Unpin(); + } + } + + NANOCLR_CLEANUP_END(); } HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::get_IsConnected___BOOLEAN( diff --git a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index a2a05393b7..16f43692cf 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -348,199 +348,210 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NativeTransmit___SystemDeviceI2cI2cTransferResult__SystemSpanByte__SystemSpanByte(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); + + uint8_t busIndex; + NF_PAL_I2C *palI2c = NULL; + bool isLongRunningOperation = false; + msg_t transactionResult = MSG_OK; + + CLR_RT_HeapBlock hbTimeout; + CLR_INT64 *timeout; + bool eventResult = true; + uint32_t estimatedDurationMiliseconds; + + CLR_RT_HeapBlock *result; + CLR_RT_HeapBlock *writeSpanByte; + CLR_RT_HeapBlock *readSpanByte; + CLR_RT_HeapBlock *connectionSettings; + CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = NULL; + int readOffset = 0; + int writeOffset = 0; + + // get a pointer to the managed object instance and check that it's not NULL + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); + + // get pointer to connection settings field + connectionSettings = pThis[FIELD___connectionSettings].Dereference(); + + // get bus index + busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; + + // get the driver for the I2C bus + switch (busIndex) { - uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; - bool isLongRunningOperation = false; - msg_t transactionResult = MSG_OK; - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - uint32_t estimatedDurationMiliseconds; - - CLR_RT_HeapBlock *result; - CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - int readOffset = 0; - int writeOffset = 0; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get pointer to connection settings field - CLR_RT_HeapBlock *connectionSettings = pThis[FIELD___connectionSettings].Dereference(); - - // get bus index - busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; - - // get the driver for the I2C bus - switch (busIndex) - { #if (STM32_I2C_USE_I2C1 == TRUE) - case 1: - palI2c = &I2C1_PAL; - break; + case 1: + palI2c = &I2C1_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C2) && (STM32_I2C_USE_I2C2 == TRUE) - case 2: - palI2c = &I2C2_PAL; - break; + case 2: + palI2c = &I2C2_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C3) && (STM32_I2C_USE_I2C3 == TRUE) - case 3: - palI2c = &I2C3_PAL; - break; + case 3: + palI2c = &I2C3_PAL; + break; #endif #if defined(STM32_I2C_USE_I2C4) && (STM32_I2C_USE_I2C4 == TRUE) - case 4: - palI2c = &I2C4_PAL; - break; + case 4: + palI2c = &I2C4_PAL; + break; #endif - default: - // the requested I2C bus is not valid - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - break; - } + default: + // the requested I2C bus is not valid + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + break; + } - // dereference the write and read SpanByte from the arguments - writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + // dereference the write and read SpanByte from the arguments + writeSpanByte = stack.Arg1().Dereference(); + if (writeSpanByte != NULL) + { + // get buffer + writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (writeBuffer != NULL) { - // get buffer - writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) - { - // Get the write offset, only the elements defined by the span must be written, not the whole array - writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // Get the write offset, only the elements defined by the span must be written, not the whole array + writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - // use the span length as write size, only the elements defined by the span must be written - palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } - } + // use the span length as write size, only the elements defined by the span must be written + palI2c->WriteSize = writeSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - if (writeBuffer == NULL) - { - // nothing to write, have to zero this - palI2c->WriteSize = 0; + // pin the buffer so DMA can find it where its supposed to be + writeBuffer->Pin(); } + } - readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (writeBuffer == NULL) + { + // nothing to write, have to zero this + palI2c->WriteSize = 0; + } + + readSpanByte = stack.Arg2().Dereference(); + if (readSpanByte != NULL) + { + // get buffer + readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (readBuffer != NULL) { - // get buffer - readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) - { - // Get the read offset, only the elements defined by the span must be read, not the whole array - readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + // Get the read offset, only the elements defined by the span must be read, not the whole array + readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; - // use the span length as read size, only the elements defined by the span must be read - palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - } - } + // use the span length as read size, only the elements defined by the span must be read + palI2c->ReadSize = readSpanByte[SpanByte::FIELD___length].NumericByRef().s4; - if (readBuffer == NULL) - { - // nothing to read, have to zero this - palI2c->ReadSize = 0; + // pin the buffer so DMA can find it where its supposed to be + readBuffer->Pin(); } + } - // check if this is a long running operation - isLongRunningOperation = IsLongRunningOperation( - palI2c->WriteSize, - palI2c->ReadSize, - palI2c->ByteTime, - (uint32_t &)estimatedDurationMiliseconds); + if (readBuffer == NULL) + { + // nothing to read, have to zero this + palI2c->ReadSize = 0; + } - if (isLongRunningOperation) - { - // if this is a long running operation, set a timeout equal to the estimated transaction duration in - // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below - hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); + // check if this is a long running operation + isLongRunningOperation = IsLongRunningOperation( + palI2c->WriteSize, + palI2c->ReadSize, + palI2c->ByteTime, + (uint32_t &)estimatedDurationMiliseconds); - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + if (isLongRunningOperation) + { + // if this is a long running operation, set a timeout equal to the estimated transaction duration in + // milliseconds this value has to be in ticks to be properly loaded by SetupTimeoutFromTicks() below + hbTimeout.SetInteger((CLR_INT64)estimatedDurationMiliseconds * TIME_CONVERSION__TO_MILLISECONDS); - // protect the buffers from GC so DMA can find them where they are supposed to be - CLR_RT_ProtectFromGC gcWriteBuffer(*writeBuffer); - CLR_RT_ProtectFromGC gcReadBuffer(*readBuffer); - } + NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + } - // this is going to be used to check for the right event in case of simultaneous I2C transaction - if (!isLongRunningOperation || stack.m_customState == 1) - { - // get slave address from connection settings field - palI2c->Address = - (i2caddr_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4; + // this is going to be used to check for the right event in case of simultaneous I2C transaction + if (!isLongRunningOperation || stack.m_customState == 1) + { + // get slave address from connection settings field + palI2c->Address = (i2caddr_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4; - // when using I2Cv1 driver the address needs to be loaded in the I2C driver struct + // when using I2Cv1 driver the address needs to be loaded in the I2C driver struct #if defined(STM32F1XX) || defined(STM32F4XX) || defined(STM32L1XX) - palI2c->Driver->addr = palI2c->Address; + palI2c->Driver->addr = palI2c->Address; #endif - if (writeBuffer != NULL) - { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); - - // flush DMA buffer to ensure cache coherency - // (only required for Cortex-M7) - cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); - } + if (writeBuffer != NULL) + { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); - if (readBuffer != NULL) - { - // grab the pointer to the array by starting and the offset specified in the span - palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); - } + // flush DMA buffer to ensure cache coherency + // (only required for Cortex-M7) + cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); + } - // because the bus access is shared, acquire the appropriate bus - i2cAcquireBus(palI2c->Driver); - i2cStart(palI2c->Driver, &palI2c->Configuration); + if (readBuffer != NULL) + { + // grab the pointer to the array by starting and the offset specified in the span + palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); } - if (isLongRunningOperation) + // because the bus access is shared, acquire the appropriate bus + i2cAcquireBus(palI2c->Driver); + i2cStart(palI2c->Driver, &palI2c->Configuration); + } + + if (isLongRunningOperation) + { + // this is a long running operation and hasn't started yet + // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it + if (stack.m_customState == 1) { - // this is a long running operation and hasn't started yet - // perform I2C transaction using driver's ASYNC API which is launching a thread to perform it - if (stack.m_customState == 1) + // spawn working thread to perform the I2C transaction + palI2c->WorkingThread = + chThdCreateFromHeap(NULL, THD_WORKING_AREA_SIZE(256), "I2CWT", NORMALPRIO, I2CWorkingThread, palI2c); + + if (palI2c->WorkingThread == NULL) { - // spawn working thread to perform the I2C transaction - palI2c->WorkingThread = chThdCreateFromHeap( - NULL, - THD_WORKING_AREA_SIZE(256), - "I2CWT", - NORMALPRIO, - I2CWorkingThread, - palI2c); + NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); + } - if (palI2c->WorkingThread == NULL) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } + // bump custom state + stack.m_customState = 2; + } + } + else + { + // this is NOT a long running operation + // perform I2C transaction using driver's SYNC API - // bump custom state - stack.m_customState = 2; - } + if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) + { + // this is a Write/Read transaction + transactionResult = i2cMasterTransmitTimeout( + palI2c->Driver, + palI2c->Address, + palI2c->WriteBuffer, + palI2c->WriteSize, + palI2c->ReadBuffer, + palI2c->ReadSize, + TIME_MS2I(20)); } else { - // this is NOT a long running operation - // perform I2C transaction using driver's SYNC API - - if (palI2c->ReadSize != 0 && palI2c->WriteSize != 0) + if (palI2c->ReadSize == 0) { - // this is a Write/Read transaction + // this is Write only transaction transactionResult = i2cMasterTransmitTimeout( palI2c->Driver, palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - palI2c->ReadBuffer, - palI2c->ReadSize, + NULL, + 0, TIME_MS2I(20)); } else @@ -665,5 +676,116 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } } - NANOCLR_NOCLEANUP(); + + while (eventResult) + { + if (!isLongRunningOperation) + { + // this is not a long running operation so nothing to do here + break; + } + + if (palI2c->WorkingThread->state == CH_STATE_FINAL) + { + // I2C working thread is now complete + break; + } + + // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + } + + if (isLongRunningOperation) + { + // pop timeout heap block from stack + stack.PopValue(); + } + + if (eventResult || !isLongRunningOperation) + { + // event occurred + // OR this is NOT a long running operation + + i2cReleaseBus(palI2c->Driver); + + // create the return object (I2cTransferResult) + // only at this point we are sure that there will be a return from this thread so it's OK to use the + // managed stack + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + result = top.Dereference(); + FAULT_ON_NULL(result); + + if (isLongRunningOperation) + { + // ChibiOS requirement: need to call chThdWait for I2C working thread in order to have it's memory + // released to the heap, otherwise it won't be returned + transactionResult = chThdWait(palI2c->WorkingThread); + } + + // get the result from the working thread execution + if (transactionResult != MSG_OK) + { + // error in transaction + int errors = i2cGetErrors(palI2c->Driver); + + // figure out what was the error and set the status field + switch (errors) + { + case I2C_ACK_FAILURE: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); + break; + + case I2C_TIMEOUT: + result[I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); + break; + + default: + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_UnknownError); + } + + // set the bytes transferred count to 0 because we don't have a way to know how many bytes were + // actually sent/received + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); + } + else + { + // successful transaction + // set the result field + result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); + + // set the bytes transferred field + result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( + (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); + } + + if (palI2c->ReadSize > 0) + { + // invalidate cache over read buffer to ensure that content from DMA is read + // (only required for Cortex-M7) + cacheBufferInvalidate(palI2c->ReadBuffer, palI2c->ReadSize); + } + } + + NANOCLR_CLEANUP(); + + if (hr != CLR_E_THREAD_WAITING) + { + // un-pin the buffers + if (writeBuffer != NULL && writeBuffer->IsPinned()) + { + writeBuffer->Unpin(); + } + + if (readBuffer != NULL && readBuffer->IsPinned()) + { + readBuffer->Unpin(); + } + } + + NANOCLR_CLEANUP_END(); } diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 035fe906bf..be08282165 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -139,150 +139,166 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NativeTransmit___SystemDeviceI2cI2cTransferResult__SystemSpanByte__SystemSpanByte(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - { - uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - uint32_t estimatedDurationMiliseconds; + uint8_t busIndex; + NF_PAL_I2C *palI2c = NULL; - CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - CLR_RT_HeapBlock *result; + CLR_RT_HeapBlock hbTimeout; + CLR_INT64 *timeout; + bool eventResult = true; + uint32_t estimatedDurationMiliseconds; - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); + CLR_RT_HeapBlock *result; + CLR_RT_HeapBlock *writeSpanByte; + CLR_RT_HeapBlock *readSpanByte; + CLR_RT_HeapBlock *connectionSettings; + CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = NULL; - // get pointer to connection settings field - CLR_RT_HeapBlock *connectionSettings = pThis[FIELD___connectionSettings].Dereference(); + // get a pointer to the managed object instance and check that it's not NULL + CLR_RT_HeapBlock *pThis = stack.This(); + FAULT_ON_NULL(pThis); - // get bus index - busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; + // get pointer to connection settings field + connectionSettings = pThis[FIELD___connectionSettings].Dereference(); - // get the driver for the I2C bus - switch (busIndex) - { - case 1: - palI2c = &I2C1_PAL; - break; + // get bus index + busIndex = (uint8_t)connectionSettings[I2cConnectionSettings::FIELD___busId].NumericByRef().s4; - default: - // the requested I2C bus is not valid - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - break; - } + // get the driver for the I2C bus + switch (busIndex) + { + case 1: + palI2c = &I2C1_PAL; + break; - // dereference the write and read SpanByte from the arguments - writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) - { - // get buffer - writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) - { - // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array - palI2c->i2cTransaction.writeCount = writeBuffer->m_numOfElements; - } - } + default: + // the requested I2C bus is not valid + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + break; + } - if (writeBuffer == NULL) + // dereference the write and read SpanByte from the arguments + writeSpanByte = stack.Arg1().Dereference(); + if (writeSpanByte != NULL) + { + // get buffer + writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (writeBuffer != NULL) { - // nothing to write, have to zero this - palI2c->i2cTransaction.writeCount = 0; + // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array + palI2c->i2cTransaction.writeCount = writeBuffer->m_numOfElements; } + } - readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) - { - // get buffer - readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) - { - // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array - palI2c->i2cTransaction.readCount = readBuffer->m_numOfElements; - } - } + if (writeBuffer == NULL) + { + // nothing to write, have to zero this + palI2c->i2cTransaction.writeCount = 0; + } - if (readBuffer == NULL) + readSpanByte = stack.Arg2().Dereference(); + if (readSpanByte != NULL) + { + // get buffer + readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); + if (readBuffer != NULL) { - // nothing to read, have to zero this - palI2c->i2cTransaction.readCount = 0; + // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array + palI2c->i2cTransaction.readCount = readBuffer->m_numOfElements; } + } - // set a timeout to an infinite timeout - // the catch is that the working thread MUST ALWAYS return at some point - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); + if (readBuffer == NULL) + { + // nothing to read, have to zero this + palI2c->i2cTransaction.readCount = 0; + } - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); + // set a timeout to an infinite timeout + // the catch is that the working thread MUST ALWAYS return at some point + // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite + hbTimeout.SetInteger((CLR_INT64)-1); - // protect the buffers from GC so DMA can find them where they are supposed to be - CLR_RT_ProtectFromGC gcWriteBuffer(*writeBuffer); - CLR_RT_ProtectFromGC gcReadBuffer(*readBuffer); + NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - if (writeBuffer != NULL) + // pin the buffers so DMA can find them where they are supposed to be + if (writeBuffer != NULL) + { + writeBuffer->Pin(); + palI2c->i2cTransaction.writeBuf = (uint8_t *)writeBuffer->GetFirstElement(); + } + + if (readBuffer != NULL) + { + readBuffer->Pin(); + palI2c->i2cTransaction.readBuf = (uint8_t *)readBuffer->GetFirstElement(); + } + + // perform I2C transaction using driver's callback which will set the appropriate event on completion + if (stack.m_customState == 1) + { + I2C_transfer(palI2c->i2c, &palI2c->i2cTransaction); + + // bump custom state + stack.m_customState = 2; + } + + while (eventResult) + { + // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); + + if (eventResult) { - palI2c->i2cTransaction.writeBuf = (uint8_t *)writeBuffer->GetFirstElement(); - } + // event occurred - if (readBuffer != NULL) + // create the return object (I2cTransferResult) + // only at this point we are sure that there will be a return from this thread so it's OK to use the + // managed stack + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + result = top.Dereference(); + FAULT_ON_NULL(result); + + // successful transaction + // set the result field + result[Library_win_dev_i2c_native_Windows_Devices_I2c_I2cTransferResult::FIELD___status].SetInteger( + (CLR_UINT32)I2cTransferStatus_FullTransfer); + + // set the bytes transferred field + result[Library_win_dev_i2c_native_Windows_Devices_I2c_I2cTransferResult::FIELD___bytesTransferred] + .SetInteger((CLR_UINT32)(palI2c->i2cTransaction.writeCount + palI2c->i2cTransaction.readCount)); + + // done here + break; + } + else { - palI2c->i2cTransaction.readBuf = (uint8_t *)readBuffer->GetFirstElement(); + NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); } + } - // perform I2C transaction using driver's callback which will set the appropriate event on completion - if (stack.m_customState == 1) - { - I2C_transfer(palI2c->i2c, &palI2c->i2cTransaction); + // pop timeout heap block from stack + stack.PopValue(); - // bump custom state - stack.m_customState = 2; - } + NANOCLR_CLEANUP(); - while (eventResult) + if (hr != CLR_E_THREAD_WAITING) + { + // un-pin the buffers + if (writeBuffer != NULL && writeBuffer->IsPinned()) { - // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); - - if (eventResult) - { - // event occurred - - // create the return object (I2cTransferResult) - // only at this point we are sure that there will be a return from this thread so it's OK to use the - // managed stack - CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); - result = top.Dereference(); - FAULT_ON_NULL(result); - - // successful transaction - // set the result field - result[Library_win_dev_i2c_native_Windows_Devices_I2c_I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_FullTransfer); - - // set the bytes transferred field - result[Library_win_dev_i2c_native_Windows_Devices_I2c_I2cTransferResult::FIELD___bytesTransferred] - .SetInteger((CLR_UINT32)(palI2c->i2cTransaction.writeCount + palI2c->i2cTransaction.readCount)); - - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } + writeBuffer->Unpin(); } - // pop timeout heap block from stack - stack.PopValue(); + if (readBuffer != NULL && readBuffer->IsPinned()) + { + readBuffer->Unpin(); + } } - NANOCLR_NOCLEANUP(); + + NANOCLR_CLEANUP_END(); } From eeb4eeb9d41c40e83722904ac17de097d0638cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 9 Jan 2025 15:17:01 +0000 Subject: [PATCH 078/168] Proper handling thread creation failure (#3063) (cherry picked from commit 3fd2ac0a22fd356aef8a74ec3c0b319cf30e2b16) --- .../sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp | 6 +++++- .../sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp | 6 +++++- ...dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index db8d19823b..0cf7fb6ad0 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -580,7 +580,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (status != TX_SUCCESS) { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); + // failed to create the thread + // free stack memory + platform_free(palI2c->WorkingThreadStack); + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } // bump custom state diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 564ce25287..b83732fc89 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -583,7 +583,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (status != TX_SUCCESS) { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); + // failed to create the thread + // free stack memory + platform_free(palI2c->WorkingThreadStack); + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } // bump custom state diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp index 5f6a5e0a37..fd79ba0737 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp @@ -471,7 +471,11 @@ HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) if (status != TX_SUCCESS) { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); + // failed to create the thread + // free stack memory + platform_free(workingThreadStack); + + NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } // bump custom state From 0278a361e5ac3d271b981553bc1ad890a7cb800b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 17 Jan 2025 14:26:10 +0000 Subject: [PATCH 079/168] Fix format string to output x64 addresses (#3067) ***NO_CI*** (cherry picked from commit ea4e0d85944640522e082862e0ba3ed4c0d06fc9) --- src/CLR/Core/Core.h | 6 +++++- src/CLR/Core/GarbageCollector_Info.cpp | 28 +++++++++++++++++--------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/CLR/Core/Core.h b/src/CLR/Core/Core.h index 6dc35c9ac0..b1c715c60e 100644 --- a/src/CLR/Core/Core.h +++ b/src/CLR/Core/Core.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -21,4 +21,8 @@ // #include #include +#ifdef _WIN64 +#include +#endif + #endif // NANOCLR_CORE_H diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index c15b37638d..8ef6f195ec 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -138,7 +138,11 @@ void CLR_RT_GarbageCollector::ValidateBlockNotInFreeList(CLR_RT_DblLinkedList &l if (ptr <= dst && dst < ptrEnd) { #ifdef _WIN64 - CLR_Debug::Printf("Pointer into free list!! %I64X %I64X %I64X\r\n", dst, ptr, ptrEnd); + CLR_Debug::Printf( + "Pointer into free list!! 0x%016" PRIxPTR " 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", + (uintptr_t)dst, + (uintptr_t)ptr, + (uintptr_t)ptrEnd); #else CLR_Debug::Printf("Pointer into free list!! %08x %08x %08x\r\n", dst, ptr, ptrEnd); #endif @@ -225,7 +229,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) if (s_mapOldToRecord.find(ref) != s_mapOldToRecord.end()) { #ifdef _WIN64 - CLR_Debug::Printf("Duplicate base OLD: %I64X\r\n", ref); + CLR_Debug::Printf("Duplicate base OLD: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else CLR_Debug::Printf("Duplicate base OLD: %08x\r\n", ref); #endif @@ -238,7 +242,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node *)dst, false)) { #ifdef _WIN64 - CLR_Debug::Printf("Some data points into a free list: %I64X\r\n", dst); + CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); #else CLR_Debug::Printf("Some data points into a free list: %08x\r\n", dst); #endif @@ -302,7 +306,7 @@ void CLR_RT_GarbageCollector::TestPointers_Remap() if (s_mapNewToRecord.find(ref) != s_mapNewToRecord.end()) { #ifdef _WIN64 - CLR_Debug::Printf("Duplicate base NEW: %I64X\r\n", ref); + CLR_Debug::Printf("Duplicate base NEW: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else CLR_Debug::Printf("Duplicate base NEW: %08x\r\n", ref); #endif @@ -334,7 +338,10 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) if (ptr->newPtr != dst) { #ifdef _WIN64 - CLR_Debug::Printf("Bad pointer: %I64X %I64X\r\n", ptr->newPtr, dst); + CLR_Debug::Printf( + "Bad pointer: 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", + (uintptr_t)ptr->newPtr, + (uintptr_t)dst); #else CLR_Debug::Printf("Bad pointer: %08x %08x\r\n", ptr->newPtr, dst); #endif @@ -343,7 +350,10 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) else if (ptr->data != *dst) { #ifdef _WIN64 - CLR_Debug::Printf("Bad data: %I64X %I64X\r\n", ptr->data, *dst); + CLR_Debug::Printf( + "Bad data: 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", + (uintptr_t)ptr->data, + (uintptr_t)*dst); #else CLR_Debug::Printf("Bad data: %08x %08x\r\n", ptr->data, *dst); #endif @@ -354,7 +364,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node *)dst, false)) { #ifdef _WIN64 - CLR_Debug::Printf("Some data points into a free list: %I64X\r\n", dst); + CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); #else CLR_Debug::Printf("Some data points into a free list: %08x\r\n", dst); #endif @@ -367,7 +377,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) else { #ifdef _WIN64 - CLR_Debug::Printf("Bad base: 0x%0I64X\r\n", ref); + CLR_Debug::Printf("Bad base: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else CLR_Debug::Printf("Bad base: 0x%08x\r\n", ref); #endif From 484a27c59e0736fd8c25e3f9e62a1ff4c4794b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 20 Jan 2025 10:55:38 +0000 Subject: [PATCH 080/168] Stack trace is now generated despite debugger state (#3068) ***NO_CI*** (cherry picked from commit 814487bbac9d340225855bd0698f5ad318633de2) --- src/CLR/CorLib/corlib_native_System_Exception.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index eab40f6ce8..1888ca5cd3 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -197,8 +197,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & #if defined(NANOCLR_TRACE_EXCEPTIONS) - if (CLR_EE_DBG_IS(NoStackTraceInExceptions) || CLR_EE_DBG_IS_NOT(Enabled) || CLR_EE_IS(Compaction_Pending) || - g_CLR_RT_ExecutionEngine.m_fPerformGarbageCollection) + if (CLR_EE_DBG_IS(NoStackTraceInExceptions)) { // stack trace is DISABLED or... // no debugger is attached or... @@ -208,8 +207,11 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & (void)dst; (void)array; - // null the array that would hold the stack trace - obj[FIELD___stackTrace].SetObjectReference(nullptr); + // create an empty array for the stack trace + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( + obj[FIELD___stackTrace], + depth, + g_CLR_RT_WellKnownTypes.m_UInt8)); } else { @@ -247,10 +249,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & if (!g_CLR_RT_ExecutionEngine.m_fShuttingDown) #endif { - if (CLR_EE_DBG_IS_NOT(NoStackTraceInExceptions) && CLR_EE_DBG_IS(Enabled)) - { - CLR_RT_DUMP::EXCEPTION(*stack, ref); - } + CLR_RT_DUMP::EXCEPTION(*stack, ref); } } From b0562da9deb785327cacc7298ebb04f165bfe17b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 20 Jan 2025 18:53:44 +0000 Subject: [PATCH 081/168] Rework test of pointers at GC to use malloc instead of C++ constructors (#3069) ***NO_CI*** (cherry picked from commit bcc65c62191dc47914a4d3c4f756fe0982753b02) --- src/CLR/Core/GarbageCollector_Info.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index 8ef6f195ec..dff23b5ab8 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -214,7 +214,12 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) if (dst) { - RelocationRecord *ptr = new RelocationRecord(); + RelocationRecord *ptr = (RelocationRecord *)platform_malloc(sizeof(RelocationRecord)); + + if (!ptr) + { + return false; + } s_lstRecords.push_back(ptr); @@ -233,6 +238,8 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) #else CLR_Debug::Printf("Duplicate base OLD: %08x\r\n", ref); #endif + // need to free the memory allocated for the record + platform_free(ptr); NANOCLR_DEBUG_STOP(); } @@ -247,6 +254,9 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) CLR_Debug::Printf("Some data points into a free list: %08x\r\n", dst); #endif + // need to free the memory allocated for the record + platform_free(ptr); + NANOCLR_DEBUG_STOP(); } } @@ -263,7 +273,8 @@ void CLR_RT_GarbageCollector::TestPointers_PopulateOld() { RelocationRecord *ptr = *itLst; - delete ptr; + // need to free the memory allocated for the record + platform_free(ptr); } s_lstRecords.clear(); From 9b3b7652e39142922d78890c44afe1cbe35e572d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Jan 2025 02:59:09 +0000 Subject: [PATCH 082/168] Fix output of heap allocation info (#3072) ***NO_CI*** (cherry picked from commit bd4d2803cef5b3022ed914502a4a6ff0e45d9b19) --- src/CLR/Core/Execution.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 80ba8a708a..66c286813f 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -181,8 +181,8 @@ HRESULT CLR_RT_ExecutionEngine::AllocateHeaps() CLR_Debug::Printf("Heap Cluster information\r\n"); #ifdef _WIN64 - CLR_Debug::Printf("Start: 0x%" PRIx64 "\r\n", (uint64_t)heapFirstFree); - CLR_Debug::Printf("Free: 0x%" PRIx64 "\r\n", (uint64_t)heapFree); + CLR_Debug::Printf("Start: 0x%" PRIx64 "\r\n", heapFirstFree); + CLR_Debug::Printf("Free: 0x%" PRIx64 "\r\n", heapFree); CLR_Debug::Printf("Block size: %d\r\n", sizeof(struct CLR_RT_HeapBlock)); #else CLR_Debug::Printf("Start: %08x\r\n", (size_t)heapFirstFree); @@ -421,6 +421,7 @@ CLR_UINT32 CLR_RT_ExecutionEngine::PerformGarbageCollection() void CLR_RT_ExecutionEngine::PerformHeapCompaction() { NATIVE_PROFILE_CLR_CORE(); + if (CLR_EE_DBG_IS(NoCompaction)) return; From eff7408549e741fe5741ad9ca5b0b876df633e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Jan 2025 04:21:02 +0000 Subject: [PATCH 083/168] Fix asserts (#3074) ***NO_CI*** (cherry picked from commit a74f2485e2aeeb682a005405c8f43b2781e8ea4a) --- src/CLR/Core/CLR_RT_HeapCluster.cpp | 40 +++++++++++++ src/CLR/Core/GarbageCollector_Compaction.cpp | 23 ++++--- src/CLR/Core/GarbageCollector_Info.cpp | 63 ++++++++++++++++++++ 3 files changed, 119 insertions(+), 7 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index 1432c57d06..e7edca38fa 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -336,18 +336,39 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) { if (ptr < m_payloadStart || ptr >= m_payloadEnd) { +#ifdef _WIN64 + CLR_Debug::Printf( + "Block beyond cluster limits: 0x%016" PRIxPTR " [0x%016" PRIxPTR " : 0x%016" PRIxPTR "-0x%016" PRIxPTR + "]\r\n", + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); + +#else + CLR_Debug::Printf( "Block beyond cluster limits: %08x [%08x : %08x-%08x]\r\n", (size_t)ptr, (size_t)this, (size_t)m_payloadStart, (size_t)m_payloadEnd); +#endif break; } if (ptr->DataType() >= DATATYPE_FIRST_INVALID) { +#ifdef _WIN64 + CLR_Debug::Printf( + "Bad Block Type: 0x%016" PRIxPTR " %02x [0x%016" PRIxPTR " : 0x%016" PRIxPTR "-0x%016" PRIxPTR "]\r\n", + (uintptr_t)ptr, + ptr->DataType(), + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); +#else CLR_Debug::Printf( "Bad Block Type: %08x %02x [%08x : %08x-%08x]\r\n", (size_t)ptr, @@ -355,24 +376,42 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (size_t)this, (size_t)m_payloadStart, (size_t)m_payloadEnd); +#endif break; } if (ptr->DataSize() == 0) { +#ifdef _WIN64 + CLR_Debug::Printf( + "Bad Block null-size: 0x%016" PRIxPTR " [0x%016" PRIxPTR " : 0x%016" PRIxPTR "-0x%016" PRIxPTR "]\r\n", + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); +#else CLR_Debug::Printf( "Bad Block null-size: %08x [%08x : %08x-%08x]\r\n", (size_t)ptr, (size_t)this, (size_t)m_payloadStart, (size_t)m_payloadEnd); +#endif break; } if (ptr + ptr->DataSize() > m_payloadEnd) { +#ifdef _WIN64 + CLR_Debug::Printf( + "Bad Block size: 0x%016" PRIxPTR " [0x%016" PRIxPTR " : 0x%016" PRIxPTR "-0x%016" PRIxPTR "]\r\n", + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); +#else CLR_Debug::Printf( "Bad Block size: %d %08x [%08x : %08x-%08x]\r\n", ptr->DataSize(), @@ -380,6 +419,7 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (size_t)this, (size_t)m_payloadStart, (size_t)m_payloadEnd); +#endif break; } diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 2152ef9675..8536d8eb8a 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -258,11 +258,11 @@ void CLR_RT_GarbageCollector::Heap_Compact() #ifdef DEBUG - _ASSERTE(relocCurrent->m_destination >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); - _ASSERTE(relocCurrent->m_destination < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); - _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.FirstNode()); - _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)g_CLR_RT_ExecutionEngine.m_heap.LastNode()); - _ASSERTE(moveBytes <= (move * sizeof(CLR_RT_HeapBlock))); + _ASSERTE(relocCurrent->m_destination >= (CLR_UINT8 *)freeRegion_hc->m_payloadStart); + _ASSERTE(relocCurrent->m_destination < (CLR_UINT8 *)freeRegion_hc->m_payloadEnd); + _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)freeRegion_hc->m_payloadStart); + _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)freeRegion_hc->m_payloadEnd); + _ASSERTE(moveBytes == (move * sizeof(CLR_RT_HeapBlock))); #endif @@ -543,7 +543,16 @@ void CLR_RT_GarbageCollector::Heap_Relocate(void **ref) #if defined(NANOCLR_TRACE_MEMORY_STATS) if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Verbose) { - CLR_Debug::Printf("\r\nGC: Relocating Heap\r\n"); + if (dst == nullptr) + { + // nothing to do here + CLR_Debug::Printf("\r\nGC: Skipping relocation as referenced object is null.\r\n"); + return; + } + else + { + CLR_Debug::Printf("\r\nGC: Relocating Heap\r\n"); + } } #endif diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index dff23b5ab8..87d493932c 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -101,8 +101,71 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) while (ptr < end) { + // Validate the block and check for memory corruption hc->ValidateBlock(ptr); +#ifndef BUILD_RTM + + // Perform boundary checks + if (ptr + ptr->DataSize() > end) + { + +#ifdef _WIN64 + CLR_Debug::Printf("Block exceeds cluster boundary: 0x%016" PRIxPTR "\r\n", (uintptr_t)ptr); +#else + CLR_Debug::Printf("Block exceeds cluster boundary: %08x\r\n", ptr); +#endif + + NANOCLR_DEBUG_STOP(); + } + + // Check for overlapping blocks, if this is not a class or value type + // First the next block + CLR_RT_HeapBlock_Node const *nextPtr = ptr->Next(); + if ((ptr->DataType() != DATATYPE_VALUETYPE && ptr->DataType() != DATATYPE_CLASS) && nextPtr) + { + // is the next pointer before or after the current block? + if (nextPtr < ptr) + { + // nextPtr is before the current block + if (nextPtr + nextPtr->DataSize() > ptr) + { +#ifdef _WIN64 + CLR_Debug::Printf( + "Overlapping blocks detected. Next block of 0x%016" PRIxPTR " is overlapping it.\r\n", + (uintptr_t)ptr); +#else + CLR_Debug::Printf("Overlapping blocks detected: Next block of %08x is overlapping it.\r\n", ptr); +#endif + } + } + } + + // now the previous block + CLR_RT_HeapBlock_Node const *prevPtr = ptr->Prev(); + if ((ptr->DataType() != DATATYPE_VALUETYPE && ptr->DataType() != DATATYPE_CLASS) && prevPtr) + { + // is the previous pointer before or after the current block? + if (prevPtr < ptr) + { + // previousPtr is before the current block + if (prevPtr + prevPtr->DataSize() > ptr) + { +#ifdef _WIN64 + CLR_Debug::Printf( + "Overlapping blocks detected: Previous block of 0x%016" PRIxPTR " is overlapping it.\r\n", + (uintptr_t)ptr); +#else + CLR_Debug::Printf( + "Overlapping blocks detected: Previous block of %08x is overlapping it.\r\n", + ptr); +#endif + } + } + } + +#endif // !BUILD_RTM + ptr += ptr->DataSize(); } } From 34f79e1946de3f882890bb5b1b24bfa7d8abd87a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 22 Jan 2025 18:13:39 +0000 Subject: [PATCH 084/168] Fix pointers comparison (#3075) ***NO_CI*** (cherry picked from commit fc8a2ad4ad183a7e234755978453592d209de0b9) --- src/CLR/Core/CLR_RT_HeapCluster.cpp | 20 +++++++++++--------- src/CLR/Core/GarbageCollector_Compaction.cpp | 4 ++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index e7edca38fa..a06c47d812 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -12,11 +12,11 @@ void CLR_RT_HeapCluster::HeapCluster_Initialize(CLR_UINT32 size, CLR_UINT32 bloc NATIVE_PROFILE_CLR_CORE(); GenericNode_Initialize(); - size = (size - sizeof(*this)) / sizeof(struct CLR_RT_HeapBlock); + size = (size - sizeof(*this)) / sizeof(CLR_RT_HeapBlock); - m_freeList.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_freeList; - m_payloadStart = (CLR_RT_HeapBlock_Node *)&this[1]; // CLR_RT_HeapBlock_Node* m_payloadStart; - m_payloadEnd = &m_payloadStart[size]; // CLR_RT_HeapBlock_Node* m_payloadEnd; + m_freeList.DblLinkedList_Initialize(); + m_payloadStart = static_cast(&this[1]); + m_payloadEnd = &m_payloadStart[size]; // Scan memory looking for possible objects to salvage CLR_RT_HeapBlock_Node *ptr = m_payloadStart; @@ -26,7 +26,7 @@ void CLR_RT_HeapCluster::HeapCluster_Initialize(CLR_UINT32 size, CLR_UINT32 bloc { if (ptr->DataType() == DATATYPE_WEAKCLASS) { - CLR_RT_HeapBlock_WeakReference *weak = (CLR_RT_HeapBlock_WeakReference *)ptr; + CLR_RT_HeapBlock_WeakReference *weak = (CLR_RT_HeapBlock_WeakReference *)(ptr); if (weak->DataSize() == CONVERTFROMSIZETOHEAPBLOCKS(sizeof(*weak)) && weak->m_targetSerialized != nullptr && (weak->m_identity.m_flags & CLR_RT_HeapBlock_WeakReference::WR_SurviveBoot)) @@ -62,7 +62,7 @@ void CLR_RT_HeapCluster::HeapCluster_Initialize(CLR_UINT32 size, CLR_UINT32 bloc } } - if ((unsigned int)(ptr + blockSize) > (unsigned int)end) + if ((uintptr_t)(ptr + blockSize) > (uintptr_t)end) { blockSize = (CLR_UINT32)(end - ptr); } @@ -208,7 +208,7 @@ void CLR_RT_HeapCluster::RecoverFromGC() NATIVE_PROFILE_CLR_CORE(); CLR_RT_HeapBlock_Node *ptr = m_payloadStart; - CLR_RT_HeapBlock_Node *end = m_payloadEnd; + CLR_RT_HeapBlock_Node const *end = m_payloadEnd; // // Open the free list. @@ -285,12 +285,14 @@ void CLR_RT_HeapCluster::RecoverFromGC() CLR_RT_HeapBlock_Node *CLR_RT_HeapCluster::InsertInOrder(CLR_RT_HeapBlock_Node *node, CLR_UINT32 size) { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_HeapBlock_Node *ptr; + CLR_RT_HeapBlock_Node *ptr = nullptr; NANOCLR_FOREACH_NODE__NODECL(CLR_RT_HeapBlock_Node, ptr, m_freeList) { if (ptr > node) + { break; + } } NANOCLR_FOREACH_NODE_END(); diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 8536d8eb8a..1d4565cd93 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -558,14 +558,14 @@ void CLR_RT_GarbageCollector::Heap_Relocate(void **ref) if (dst >= g_CLR_RT_GarbageCollector.m_relocMinimum && dst < g_CLR_RT_GarbageCollector.m_relocMaximum) { - RelocationRegion *relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; + RelocationRegion const *relocBlocks = g_CLR_RT_GarbageCollector.m_relocBlocks; size_t left = 0; size_t right = g_CLR_RT_GarbageCollector.m_relocCount; while (left < right) { size_t center = (left + right) / 2; - RelocationRegion &relocCurrent = relocBlocks[center]; + RelocationRegion const &relocCurrent = relocBlocks[center]; if (dst < relocCurrent.m_start) { From 583ace5aba5c12b50b88264b22f8d2a6c9c3462b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 23 Jan 2025 15:51:37 +0000 Subject: [PATCH 085/168] Fix usage of uintptr_t accross GC and HeapCluster classes (#3076) ***NO_CI*** (cherry picked from commit a9123433bb3f1b3da5461ca87caddd89f64533df) --- src/CLR/Core/CLR_RT_HeapCluster.cpp | 42 +++++++++++++------------- src/CLR/Core/GarbageCollector_Info.cpp | 36 ++++++++++++++-------- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index a06c47d812..21a779b7c3 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -346,15 +346,15 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (uintptr_t)this, (uintptr_t)m_payloadStart, (uintptr_t)m_payloadEnd); - #else CLR_Debug::Printf( - "Block beyond cluster limits: %08x [%08x : %08x-%08x]\r\n", - (size_t)ptr, - (size_t)this, - (size_t)m_payloadStart, - (size_t)m_payloadEnd); + "Block beyond cluster limits: 0x%08" PRIxPTR " [0x%08" PRIxPTR " : 0x%08" PRIxPTR "-0x%08" PRIxPTR + "]\r\n", + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); #endif break; @@ -372,12 +372,12 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (uintptr_t)m_payloadEnd); #else CLR_Debug::Printf( - "Bad Block Type: %08x %02x [%08x : %08x-%08x]\r\n", - (size_t)ptr, + "Bad Block Type: 0x%08" PRIxPTR " %02x [0x%08" PRIxPTR " : 0x%08" PRIxPTR "-0x%08" PRIxPTR "]\r\n", + (uintptr_t)ptr, ptr->DataType(), - (size_t)this, - (size_t)m_payloadStart, - (size_t)m_payloadEnd); + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); #endif break; @@ -394,11 +394,11 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (uintptr_t)m_payloadEnd); #else CLR_Debug::Printf( - "Bad Block null-size: %08x [%08x : %08x-%08x]\r\n", - (size_t)ptr, - (size_t)this, - (size_t)m_payloadStart, - (size_t)m_payloadEnd); + "Bad Block null-size: 0x%08" PRIxPTR " [0x%08" PRIxPTR " : 0x%08" PRIxPTR "-0x%08" PRIxPTR "]\r\n", + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); #endif break; @@ -415,12 +415,12 @@ void CLR_RT_HeapCluster::ValidateBlock(CLR_RT_HeapBlock *ptr) (uintptr_t)m_payloadEnd); #else CLR_Debug::Printf( - "Bad Block size: %d %08x [%08x : %08x-%08x]\r\n", + "Bad Block size: %d 0x%08" PRIxPTR " [0x%08" PRIxPTR " : 0x%08" PRIxPTR "-0x%08" PRIxPTR "]\r\n", ptr->DataSize(), - (size_t)ptr, - (size_t)this, - (size_t)m_payloadStart, - (size_t)m_payloadEnd); + (uintptr_t)ptr, + (uintptr_t)this, + (uintptr_t)m_payloadStart, + (uintptr_t)m_payloadEnd); #endif break; diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index 87d493932c..0652ea68f5 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -113,7 +113,7 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) #ifdef _WIN64 CLR_Debug::Printf("Block exceeds cluster boundary: 0x%016" PRIxPTR "\r\n", (uintptr_t)ptr); #else - CLR_Debug::Printf("Block exceeds cluster boundary: %08x\r\n", ptr); + CLR_Debug::Printf("Block exceeds cluster boundary: 0x%08" PRIxPTR "\r\n", (uintptr_t)ptr) #endif NANOCLR_DEBUG_STOP(); @@ -135,7 +135,9 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) "Overlapping blocks detected. Next block of 0x%016" PRIxPTR " is overlapping it.\r\n", (uintptr_t)ptr); #else - CLR_Debug::Printf("Overlapping blocks detected: Next block of %08x is overlapping it.\r\n", ptr); + CLR_Debug::Printf( + "Overlapping blocks detected: Next block of 0x%08" PRIxPTR " is overlapping it.\r\n", + (uintptr_t)ptr); #endif } } @@ -157,8 +159,8 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) (uintptr_t)ptr); #else CLR_Debug::Printf( - "Overlapping blocks detected: Previous block of %08x is overlapping it.\r\n", - ptr); + "Overlapping blocks detected: Previous block of 0x%08" PRIxPTR " is overlapping it.\r\n", + (uintptr_t)ptr); #endif } } @@ -207,7 +209,11 @@ void CLR_RT_GarbageCollector::ValidateBlockNotInFreeList(CLR_RT_DblLinkedList &l (uintptr_t)ptr, (uintptr_t)ptrEnd); #else - CLR_Debug::Printf("Pointer into free list!! %08x %08x %08x\r\n", dst, ptr, ptrEnd); + CLR_Debug::Printf( + "Pointer into free list!! 0x%08" PRIxPTR " 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", + (uintptr_t)dst, + (uintptr_t)ptr, + (uintptr_t)ptrEnd); #endif NANOCLR_DEBUG_STOP(); @@ -299,7 +305,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) #ifdef _WIN64 CLR_Debug::Printf("Duplicate base OLD: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else - CLR_Debug::Printf("Duplicate base OLD: %08x\r\n", ref); + CLR_Debug::Printf("Duplicate base OLD: 0x%08" PRIxPTR "\r\n", (uintptr_t)ref); #endif // need to free the memory allocated for the record platform_free(ptr); @@ -314,7 +320,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) #ifdef _WIN64 CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); #else - CLR_Debug::Printf("Some data points into a free list: %08x\r\n", dst); + CLR_Debug::Printf("Some data points into a free list: 0x%08" PRIxPTR "\r\n", (uintptr_t)dst); #endif // need to free the memory allocated for the record @@ -382,7 +388,7 @@ void CLR_RT_GarbageCollector::TestPointers_Remap() #ifdef _WIN64 CLR_Debug::Printf("Duplicate base NEW: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else - CLR_Debug::Printf("Duplicate base NEW: %08x\r\n", ref); + CLR_Debug::Printf("Duplicate base NEW: 0x%08" PRIxPTR "\r\n", (uintptr_t)ref); #endif NANOCLR_DEBUG_STOP(); } @@ -417,7 +423,10 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) (uintptr_t)ptr->newPtr, (uintptr_t)dst); #else - CLR_Debug::Printf("Bad pointer: %08x %08x\r\n", ptr->newPtr, dst); + CLR_Debug::Printf( + "Bad pointer: 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", + (uintptr_t)ptr->newPtr, + (uintptr_t)dst); #endif NANOCLR_DEBUG_STOP(); } @@ -429,7 +438,10 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) (uintptr_t)ptr->data, (uintptr_t)*dst); #else - CLR_Debug::Printf("Bad data: %08x %08x\r\n", ptr->data, *dst); + CLR_Debug::Printf( + "Bad data: 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", + (uintptr_t)ptr->data, + (uintptr_t)*dst); #endif NANOCLR_DEBUG_STOP(); @@ -440,7 +452,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) #ifdef _WIN64 CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); #else - CLR_Debug::Printf("Some data points into a free list: %08x\r\n", dst); + CLR_Debug::Printf("Some data points into a free list: 0x%08" PRIxPTR "\r\n", (uintptr_t)dst); #endif NANOCLR_DEBUG_STOP(); @@ -453,7 +465,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) #ifdef _WIN64 CLR_Debug::Printf("Bad base: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); #else - CLR_Debug::Printf("Bad base: 0x%08x\r\n", ref); + CLR_Debug::Printf("Bad base: 0x0x%08" PRIxPTR "\r\n", (uintptr_t)ref); #endif NANOCLR_DEBUG_STOP(); From e9076633c6d71bd64208d255cee5dd64d6710743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 10 Mar 2025 19:13:50 +0000 Subject: [PATCH 086/168] Fix element name --- src/CLR/CorLib/corlib_native_System_Exception.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index 1888ca5cd3..912c0cf95c 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -211,7 +211,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( obj[FIELD___stackTrace], depth, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); } else { From 20852834d887ead1bec1966c1d6551949e9f0091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 27 Jan 2025 15:01:33 +0000 Subject: [PATCH 087/168] Remove unnecessary memsets from code base (#3079) ***NO_CI*** (cherry picked from commit ceed6d6e613edf8a0eb8750c14b3ff2e616f5f43) --- src/CLR/CorLib/corlib_native_System_Array.cpp | 6 +--- .../CorLib/corlib_native_System_Exception.cpp | 2 +- ...rlib_native_System_Reflection_Assembly.cpp | 2 -- ...lib_native_System_Reflection_FieldInfo.cpp | 3 +- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 4 +-- ...untime_CompilerServices_RuntimeHelpers.cpp | 4 --- .../CorLib/corlib_native_System_String.cpp | 15 ++++------ ...ib_native_System_Threading_Interlocked.cpp | 6 +--- ...orlib_native_System_Threading_SpinWait.cpp | 2 -- .../CorLib/corlib_native_System_TimeSpan.cpp | 4 +-- .../corlib_native_System_WeakReference.cpp | 3 -- src/CLR/Core/CLR_RT_HeapBlock.cpp | 13 +-------- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 7 ++--- src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp | 5 +--- src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp | 3 +- .../Core/CLR_RT_HeapBlock_Delegate_List.cpp | 3 +- src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp | 5 ++-- src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp | 3 -- src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp | 3 -- src/CLR/Core/CLR_RT_StackFrame.cpp | 8 ++--- src/CLR/Core/Execution.cpp | 9 ++---- src/CLR/Core/Interpreter.cpp | 8 ----- .../Core/Serialization/BinaryFormatter.cpp | 23 ++++----------- src/CLR/Core/Thread.cpp | 21 +++++++------- src/CLR/Core/TypeSystem.cpp | 6 ++-- src/CLR/Debugger/Debugger.cpp | 29 ++----------------- ...oFramework_Runtime_Hardware_SystemInfo.cpp | 5 ---- ...llections_System_Collections_Hashtable.cpp | 7 ++--- ...f_system_text_System_Text_UTF8Encoding.cpp | 6 ++-- 29 files changed, 50 insertions(+), 165 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Array.cpp b/src/CLR/CorLib/corlib_native_System_Array.cpp index 29c2026aa4..9b0909e01d 100644 --- a/src/CLR/CorLib/corlib_native_System_Array.cpp +++ b/src/CLR/CorLib/corlib_native_System_Array.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -15,8 +15,6 @@ HRESULT Library_corlib_native_System_Array::System_Collections_IList_get_Item___ CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - NANOCLR_CHECK_HRESULT(ref.InitializeArrayReference(thisRef, index)); { @@ -40,8 +38,6 @@ HRESULT Library_corlib_native_System_Array::System_Collections_IList_set_Item___ CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - NANOCLR_CHECK_HRESULT(ref.InitializeArrayReference(thisRef, index)); NANOCLR_SET_AND_LEAVE(stack.Arg2().StoreToReference(ref, 0)); diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index 912c0cf95c..91fc84e6bd 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -53,7 +53,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S CLR_RT_HeapBlock tmpArray; CLR_RT_HeapBlock *pThis; - tmpArray.SetObjectReference(nullptr); + tmpArray.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(tmpArray); pThis = stack.This(); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 2059002d13..d1889614c0 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -294,8 +294,6 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::Load___STATIC__SystemR header = (CLR_RECORD_ASSEMBLY *)array->GetFirstElement(); - memset(&hbTimeout, 0, sizeof(struct CLR_RT_HeapBlock)); - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout hbTimeout.SetInteger((CLR_INT64)2 * CLR_RT_Thread::c_TimeQuantum_Milliseconds * TIME_CONVERSION__TO_MILLISECONDS); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index 96b91ddad0..93edb0961b 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -20,7 +20,6 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::SetValue___VOID__OBJE CLR_RT_HeapBlock &srcVal = stack.Arg2(); CLR_RT_HeapBlock val; - memset(&val, 0, sizeof(struct CLR_RT_HeapBlock)); val.Assign(srcVal); CLR_RT_ProtectFromGC gc(val); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index b3c48074a5..7fb193b56b 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -86,8 +86,6 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetValue___OBJ CLR_RT_HeapBlock *obj; CLR_RT_HeapBlock dst; - memset(&dst, 0, sizeof(struct CLR_RT_HeapBlock)); - NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_FieldInfo::Initialize(stack, instFD, instTD, obj)); fd = instFD.target; diff --git a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp index 47d38aa6b7..d133818bad 100644 --- a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp +++ b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp @@ -145,8 +145,6 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers:: CLR_RT_HeapBlock tmp; CLR_UINT32 *ptr = (CLR_UINT32 *)ptrDst; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - for (; lenSrc; lenSrc--, ptr++) { NANOCLR_CHECK_HRESULT(tmp.SetFloatIEEE754(*ptr)); @@ -161,8 +159,6 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers:: CLR_RT_HeapBlock tmp; CLR_UINT64 *ptr = (CLR_UINT64 *)ptrDst; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - for (; lenSrc; lenSrc--, ptr++) { NANOCLR_CHECK_HRESULT(tmp.SetDoubleIEEE754(*ptr)); diff --git a/src/CLR/CorLib/corlib_native_System_String.cpp b/src/CLR/CorLib/corlib_native_System_String.cpp index c3bec96bc5..f0e9b7c45a 100644 --- a/src/CLR/CorLib/corlib_native_System_String.cpp +++ b/src/CLR/CorLib/corlib_native_System_String.cpp @@ -206,8 +206,7 @@ HRESULT Library_corlib_native_System_String::_ctor___VOID__CHAR__I4(CLR_RT_Stack { CLR_RT_HeapBlock tmp; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - tmp.SetObjectReference(nullptr); + tmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(tmp); NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmp, len, g_CLR_RT_WellKnownTypes.Char)); @@ -865,8 +864,7 @@ HRESULT Library_corlib_native_System_String::ChangeCase(CLR_RT_StackFrame &stack CLR_RT_HeapBlock_Array *arrayTmp; CLR_RT_HeapBlock refTmp; - memset(&refTmp, 0, sizeof(struct CLR_RT_HeapBlock)); - refTmp.SetObjectReference(nullptr); + refTmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -907,8 +905,7 @@ HRESULT Library_corlib_native_System_String::Substring(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock_Array *arrayTmp; CLR_RT_HeapBlock refTmp; - memset(&refTmp, 0, sizeof(struct CLR_RT_HeapBlock)); - refTmp.SetObjectReference(nullptr); + refTmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -949,8 +946,7 @@ HRESULT Library_corlib_native_System_String::Trim( CLR_RT_HeapBlock refTmp; CLR_RT_HeapBlock_Array *arrayTmp; - memset(&refTmp, 0, sizeof(struct CLR_RT_HeapBlock)); - refTmp.SetObjectReference(nullptr); + refTmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -1063,8 +1059,7 @@ HRESULT Library_corlib_native_System_String::Split(CLR_RT_StackFrame &stack, CLR { CLR_RT_HeapBlock refSrc; - memset(&refSrc, 0, sizeof(struct CLR_RT_HeapBlock)); - refSrc.SetObjectReference(nullptr); + refSrc.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refSrc); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refSrc, arraySrc, 0, -1)); diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp index 25e49dba72..d5b689d17c 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Interlocked.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -11,7 +11,6 @@ HRESULT Library_corlib_native_System_Threading_Interlocked::Increment___STATIC__ NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - memset(&heapLocation, 0, sizeof(struct CLR_RT_HeapBlock)); NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; @@ -32,7 +31,6 @@ HRESULT Library_corlib_native_System_Threading_Interlocked::Decrement___STATIC__ NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - memset(&heapLocation, 0, sizeof(struct CLR_RT_HeapBlock)); NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; @@ -54,7 +52,6 @@ HRESULT Library_corlib_native_System_Threading_Interlocked::Exchange___STATIC__I NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - memset(&heapLocation, 0, sizeof(struct CLR_RT_HeapBlock)); NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; @@ -78,7 +75,6 @@ HRESULT Library_corlib_native_System_Threading_Interlocked::CompareExchange___ST NANOCLR_HEADER(); { CLR_RT_HeapBlock heapLocation; - memset(&heapLocation, 0, sizeof(struct CLR_RT_HeapBlock)); NANOCLR_CHECK_HRESULT(heapLocation.LoadFromReference(stack.Arg0())); signed int &location = heapLocation.NumericByRef().s4; diff --git a/src/CLR/CorLib/corlib_native_System_Threading_SpinWait.cpp b/src/CLR/CorLib/corlib_native_System_Threading_SpinWait.cpp index 44f474fa3f..69c946527f 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_SpinWait.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_SpinWait.cpp @@ -55,8 +55,6 @@ HRESULT Library_corlib_native_System_Threading_SpinWait::Spin(CLR_RT_StackFrame bool longRunning; bool eventResult = true; - memset(&hbTimeout, 0, sizeof(struct CLR_RT_HeapBlock)); - if (isTimeSpan) { timeout = Library_corlib_native_System_TimeSpan::GetValuePtr(stack.Arg0()); diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index 50f6782531..433f40d8de 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -149,11 +149,9 @@ HRESULT Library_corlib_native_System_TimeSpan::Compare___STATIC__I4__SystemTimeS CLR_RT_HeapBlock resLeft; CLR_RT_HeapBlock resRight; - memset(&resLeft, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&resRight, 0, sizeof(struct CLR_RT_HeapBlock)); - pLeft = Library_corlib_native_System_TimeSpan::GetValuePtr(stack); FAULT_ON_NULL(pLeft); + pRight = Library_corlib_native_System_TimeSpan::GetValuePtr(stack.Arg1()); FAULT_ON_NULL(pRight); diff --git a/src/CLR/CorLib/corlib_native_System_WeakReference.cpp b/src/CLR/CorLib/corlib_native_System_WeakReference.cpp index 663395c798..7920ad7ca6 100644 --- a/src/CLR/CorLib/corlib_native_System_WeakReference.cpp +++ b/src/CLR/CorLib/corlib_native_System_WeakReference.cpp @@ -124,9 +124,6 @@ HRESULT CLR_RT_HeapBlock_WeakReference::GetTarget(CLR_RT_HeapBlock &targetRefere CLR_RT_HeapBlock input; CLR_RT_HeapBlock output; - memset(&input, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&output, 0, sizeof(struct CLR_RT_HeapBlock)); - input.SetObjectReference(m_targetSerialized); output.SetObjectReference(nullptr); diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 7d50f50efd..5f0e5174d5 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -430,8 +430,6 @@ HRESULT CLR_RT_HeapBlock::LoadFromReference(CLR_RT_HeapBlock &ref) CLR_RT_HeapBlock *obj; NanoCLRDataType dt = ref.DataType(); - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - if (dt == DATATYPE_ARRAY_BYREF) { CLR_RT_HeapBlock_Array *array = ref.m_data.arrayReference.array; @@ -575,8 +573,6 @@ HRESULT CLR_RT_HeapBlock::StoreToReference(CLR_RT_HeapBlock &ref, int size) NanoCLRDataType dtElem = (NanoCLRDataType)array->m_typeOfElement; CLR_RT_HeapBlock blk; - memset(&blk, 0, sizeof(struct CLR_RT_HeapBlock)); - blk.Assign(*this); NANOCLR_CHECK_HRESULT(blk.Convert( @@ -698,8 +694,6 @@ HRESULT CLR_RT_HeapBlock::Reassign(const CLR_RT_HeapBlock &value) CLR_RT_HeapBlock *obj; CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - if (this->DataType() == DATATYPE_BYREF) { obj = this->Dereference(); @@ -852,8 +846,6 @@ HRESULT CLR_RT_HeapBlock::PerformBoxing(const CLR_RT_TypeDef_Instance &cls) CLR_RT_HeapBlock *obj = this; NanoCLRDataType dt = obj->DataType(); - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - // // System.DateTime and System.TimeSpan are real value types, so sometimes they are passed by reference. // @@ -1687,10 +1679,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C CLR_RT_HeapBlock hbLeft; CLR_RT_HeapBlock hbRight; - memset(&hbLeft, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&hbRight, 0, sizeof(struct CLR_RT_HeapBlock)); - - if (left.ReflectionDataConst().kind != right.ReflectionDataConst().kind) + if (left.ReflectionDataConst().m_kind != right.ReflectionDataConst().m_kind) { ptrLeft = FixReflectionForType(left, hbLeft); ptrRight = FixReflectionForType(right, hbRight); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index f169aa7485..e9734df9ff 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -399,10 +399,7 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( CLR_RT_HeapBlock ref; CLR_RT_HeapBlock elem; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&elem, 0, sizeof(struct CLR_RT_HeapBlock)); - - elem.SetObjectReference(nullptr); + elem.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(elem); NANOCLR_CHECK_HRESULT(descDst.InitializeFromObject(*arrayDst)); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp index 228efaa982..5c9cd65968 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_ArrayList.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -46,7 +46,6 @@ HRESULT CLR_RT_HeapBlock_ArrayList::Add(CLR_RT_HeapBlock *value, CLR_INT32 &inde // Protect value from GC, in case EnsureCapacity triggers one CLR_RT_HeapBlock valueHB; - memset(&valueHB, 0, sizeof(struct CLR_RT_HeapBlock)); valueHB.SetObjectReference(value); CLR_RT_ProtectFromGC gc(valueHB); @@ -95,7 +94,6 @@ HRESULT CLR_RT_HeapBlock_ArrayList::Insert(CLR_INT32 index, CLR_RT_HeapBlock *va // Protect value from GC, in case EnsureCapacity triggers one CLR_RT_HeapBlock valueHB; - memset(&valueHB, 0, sizeof(struct CLR_RT_HeapBlock)); valueHB.SetObjectReference(value); CLR_RT_ProtectFromGC gc(valueHB); @@ -171,7 +169,6 @@ HRESULT CLR_RT_HeapBlock_ArrayList::SetCapacity(CLR_UINT32 newCapacity) CLR_RT_HeapBlock newItemsHB; CLR_RT_HeapBlock_Array *newItems; - memset(&newItemsHB, 0, sizeof(struct CLR_RT_HeapBlock)); CLR_RT_ProtectFromGC gc(newItemsHB); if (newCapacity < size) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp index 9740d80ded..f8d920c4b8 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp @@ -55,8 +55,7 @@ HRESULT CLR_RT_HeapBlock_Delegate::CreateInstance( dlg->m_numOfStackFrames = length; #endif - memset(&dlg->m_object, 0, sizeof(struct CLR_RT_HeapBlock)); - dlg->m_object.SetObjectReference(nullptr); + dlg->m_object.SetObjectReference(NULL); #if defined(NANOCLR_APPDOMAINS) dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp index 5912a13b87..36401d8494 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate_List.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -92,7 +92,6 @@ HRESULT CLR_RT_HeapBlock_Delegate_List::Change( { CLR_RT_HeapBlock intermediate; - memset(&intermediate, 0, sizeof(struct CLR_RT_HeapBlock)); intermediate.Assign(delegateSrc); CLR_RT_ProtectFromGC gc(intermediate); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp index 0df97362f7..4cb2ef96e5 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Lock.cpp @@ -23,9 +23,8 @@ HRESULT CLR_RT_HeapBlock_Lock::CreateInstance( lock = EVENTCACHE_EXTRACT_NODE(g_CLR_RT_EventCache, CLR_RT_HeapBlock_Lock, DATATYPE_LOCK_HEAD); CHECK_ALLOCATION(lock); - lock->m_owningThread = th; // CLR_RT_Thread* m_owningThread; - // - memset(&lock->m_resource, 0, sizeof(struct CLR_RT_HeapBlock)); + lock->m_owningThread = th; // CLR_RT_Thread* m_owningThread; + // lock->m_resource.Assign(resource); // CLR_RT_HeapBlock m_resource; // lock->m_owners.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_owners; diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp index db8f799e2f..4750349146 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Queue.cpp @@ -50,12 +50,9 @@ HRESULT CLR_RT_HeapBlock_Queue::Enqueue(CLR_RT_HeapBlock *value) // Set new capacity CLR_RT_HeapBlock newArrayHB; - memset(&newArrayHB, 0, sizeof(struct CLR_RT_HeapBlock)); - // Protect value from GC, in case CreateInstance triggers one CLR_RT_HeapBlock valueHB; - memset(&valueHB, 0, sizeof(struct CLR_RT_HeapBlock)); valueHB.SetObjectReference(value); CLR_RT_ProtectFromGC gc(valueHB); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp index 966175148a..e337ac79db 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Stack.cpp @@ -49,12 +49,9 @@ HRESULT CLR_RT_HeapBlock_Stack::Push(CLR_RT_HeapBlock *value) CLR_RT_HeapBlock newArrayHB; CLR_RT_HeapBlock_Array *newArray; - memset(&newArrayHB, 0, sizeof(struct CLR_RT_HeapBlock)); - // Protect value from GC, in case CreateInstance triggers one CLR_RT_HeapBlock valueHB; - memset(&valueHB, 0, sizeof(struct CLR_RT_HeapBlock)); valueHB.SetObjectReference(value); CLR_RT_ProtectFromGC gc(valueHB); diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index 0f06f276c7..c57aa3bc17 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -578,8 +578,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( CLR_RT_StackFrame *stackSub; CLR_RT_HeapBlock tmp; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - tmp.SetObjectReference(nullptr); + tmp.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(tmp); if (mdR->flags & CLR_RECORD_METHODDEF::MD_Constructor) @@ -759,10 +758,7 @@ HRESULT CLR_RT_StackFrame::HandleSynchronized(bool fAcquire, bool fGlobal) CLR_RT_HeapBlock *obj; CLR_RT_HeapBlock ref; CLR_RT_HeapBlock **ppGlobalLock; - CLR_RT_HeapBlock *pGlobalLock; - - memset(&refType, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); + CLR_RT_HeapBlock const *pGlobalLock; if (fGlobal) { diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 66c286813f..32127c6007 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -626,8 +626,6 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS CLR_RT_HeapBlock ref; CLR_RT_Thread *thMain = nullptr; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - if (NANOCLR_INDEX_IS_INVALID(g_CLR_RT_TypeSystem.m_entryPoint)) { #if !defined(BUILD_RTM) || defined(VIRTUAL_DEVICE) @@ -949,8 +947,7 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; - memset(&refDlg, 0, sizeof(struct CLR_RT_HeapBlock)); - refDlg.SetObjectReference(nullptr); + refDlg.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(refDlg); if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, nullptr))) @@ -1047,8 +1044,7 @@ void CLR_RT_ExecutionEngine::SpawnFinalizer() { CLR_RT_HeapBlock delegate; - memset(&delegate, 0, sizeof(struct CLR_RT_HeapBlock)); - delegate.SetObjectReference(nullptr); + delegate.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(delegate); #if defined(NANOCLR_APPDOMAINS) @@ -2355,7 +2351,6 @@ HRESULT CLR_RT_ExecutionEngine::CloneObject(CLR_RT_HeapBlock &reference, const C // CLR_RT_HeapBlock safeSource; - memset(&safeSource, 0, sizeof(struct CLR_RT_HeapBlock)); safeSource.SetObjectReference(obj); CLR_RT_ProtectFromGC gc(safeSource); diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 789c28abe7..bdc5eba532 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -2308,7 +2308,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // CLR_RT_HeapBlock safeSource; - memset(&safeSource, 0, sizeof(struct CLR_RT_HeapBlock)); safeSource.Assign(evalPos[0]); CLR_RT_ProtectFromGC gc(safeSource); @@ -2797,7 +2796,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { CLR_RT_HeapBlock safeSource; - memset(&safeSource, 0, sizeof(struct CLR_RT_HeapBlock)); safeSource.Assign(evalPos[0]); CLR_RT_ProtectFromGC gc(safeSource); @@ -2909,8 +2907,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - NANOCLR_CHECK_HRESULT(ref.InitializeArrayReference(evalPos[0], evalPos[1].NumericByRef().s4)); NANOCLR_CHECK_HRESULT(evalPos[0].LoadFromReference(ref)); @@ -2954,8 +2950,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) { // Save the pointer to the object to load/copy and protect it from GC. CLR_RT_HeapBlock safeSource; - - memset(&safeSource, 0, sizeof(struct CLR_RT_HeapBlock)); safeSource.Assign(evalPos[0]); CLR_RT_ProtectFromGC gc(safeSource); @@ -3057,8 +3051,6 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) // CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - NANOCLR_CHECK_HRESULT(ref.InitializeArrayReference(evalPos[1], evalPos[2].NumericByRef().s4)); int size = 0; diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index b264720b98..041e90857d 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -67,9 +67,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - m_value = nullptr; - m_type = nullptr; - memset(&m_value_tmp, 0, sizeof(struct CLR_RT_HeapBlock)); + m_value = NULL; + m_type = NULL; v = TypeHandler::FixNull(v); if (v) @@ -1443,9 +1442,6 @@ HRESULT CLR_RT_BinaryFormatter::State::GetValue() CLR_RT_HeapBlock ref; CLR_RT_HeapBlock val; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&val, 0, sizeof(struct CLR_RT_HeapBlock)); - ref.InitializeArrayReferenceDirect(*prev->m_array, prev->m_array_CurrentPos - 1); NANOCLR_CHECK_HRESULT(val.LoadFromReference(ref)); @@ -1479,8 +1475,6 @@ HRESULT CLR_RT_BinaryFormatter::State::SetValueAndDestroyInstance() if (prev->m_array_NeedProcessing) { CLR_RT_HeapBlock ref; - - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); ref.InitializeArrayReferenceDirect(*prev->m_array, prev->m_array_CurrentPos - 1); NANOCLR_CHECK_HRESULT(AssignAndFixBoxing(ref)); @@ -1804,10 +1798,8 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B ptr->m_states.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_states; // EVENT HEAP - // NO RELOCATION - list of CLR_RT_BinaryFormatter::State // - ptr->m_fDeserialize = (buf != nullptr); // bool m_fDeserialize; - memset(&ptr->m_value, 0, sizeof(struct CLR_RT_HeapBlock)); - ptr->m_value.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_value; - ptr->m_value.SetObjectReference(nullptr); // CLR_RT_HeapBlock + ptr->m_fDeserialize = (buf != NULL); // bool m_fDeserialize; + ptr->m_value.SetObjectReference(NULL); // CLR_RT_HeapBlock m_value; ptr->m_value_desc.TypeDescriptor_Initialize(); // CLR_RT_TypeDescriptor m_value_desc; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(ptr->m_stream, buf, len)); @@ -1873,8 +1865,7 @@ HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_Heap CLR_RT_HeapBlock cls; CLR_UINT32 flags = 0; - memset(&cls, 0, sizeof(struct CLR_RT_HeapBlock)); - cls.SetObjectReference(nullptr); + cls.SetObjectReference(NULL); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; @@ -1927,9 +1918,7 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( NANOCLR_HEADER(); CLR_RT_HeapBlock cls; - - memset(&cls, 0, sizeof(struct CLR_RT_HeapBlock)); - cls.SetObjectReference(nullptr); + cls.SetObjectReference(NULL); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index 58683db102..f4bbf25e4a 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -216,17 +216,16 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, th->Initialize(); - th->m_pid = pid; // int m_pid; - th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; - th->m_flags = flags; // CLR_UINT32 m_flags; - th->m_executionCounter = 0; // int m_executionCounter; - th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; - // - th->m_dlg = nullptr; // CLR_RT_HeapBlock_Delegate* m_dlg; - memset(&th->m_currentException, 0, sizeof(struct CLR_RT_HeapBlock)); - th->m_currentException.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_currentException; - // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; - th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; + th->m_pid = pid; // int m_pid; + th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; + th->m_flags = flags; // CLR_UINT32 m_flags; + th->m_executionCounter = 0; // int m_executionCounter; + th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; + // + th->m_dlg = NULL; // CLR_RT_HeapBlock_Delegate* m_dlg; + th->m_currentException.SetObjectReference(NULL); // CLR_RT_HeapBlock m_currentException; + // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; + th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; // // //--// diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 03b2a7dac5..3666acfa3a 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -6419,8 +6419,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has no fields, no properties and only default constructor m_lastValue.m_mode = Value::c_DefaultConstructor; - m_lastValue.m_name = nullptr; - memset(&m_lastValue.m_value, 0, sizeof(struct CLR_RT_HeapBlock)); + m_lastValue.m_name = NULL; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(m_lastValue.m_value, m_td)); @@ -6435,8 +6434,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has a constructor with parameter(s) m_lastValue.m_mode = Value::c_ConstructorArgument; - m_lastValue.m_name = nullptr; - memset(&m_lastValue.m_value, 0, sizeof(struct CLR_RT_HeapBlock)); + m_lastValue.m_name = NULL; // get type NANOCLR_CHECK_HRESULT(m_parser.Advance(m_res)); diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 409284d272..edbaa8506e 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2112,9 +2112,7 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT NANOCLR_HEADER(); CLR_RT_HeapBlock ref; - - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - ref.SetObjectReference(nullptr); + ref.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(ref); CLR_RT_Thread *realThread = (pid != 0) ? CLR_DBG_Debugger::GetThreadFromPid(pid) : nullptr; @@ -2576,8 +2574,6 @@ static bool SetBlockHelper(CLR_RT_HeapBlock *blk, NanoCLRDataType dt, CLR_UINT8 NanoCLRDataType dtDst; CLR_RT_HeapBlock src; - memset(&src, 0, sizeof(struct CLR_RT_HeapBlock)); - dtDst = blk->DataType(); src.SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(dt, 0, 1)); @@ -2627,9 +2623,6 @@ static CLR_RT_HeapBlock *GetScratchPad_Helper(int index) CLR_RT_HeapBlock tmp; CLR_RT_HeapBlock ref; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - tmp.SetObjectReference(array); if (SUCCEEDED(ref.InitializeArrayReference(tmp, index))) @@ -2649,8 +2642,6 @@ bool CLR_DBG_Debugger::Debugging_Value_ResizeScratchPad(WP_Message *msg) auto *cmd = (CLR_DBG_Commands::Debugging_Value_ResizeScratchPad *)msg->m_payload; CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - if (cmd->m_size == 0) { g_CLR_RT_ExecutionEngine.m_scratchPadArray = nullptr; @@ -2750,8 +2741,6 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_TypeDef_Instance td; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - if (cmd->m_kind != CLR_DBG_Commands::Debugging_Value_GetStack::c_EvalStack && IsBlockEnumMaybe(blk)) { CLR_UINT32 iElement = cmd->m_index; @@ -2876,11 +2865,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) CLR_RT_FieldDef_Instance inst; CLR_UINT32 offset; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&td, 0, sizeof(CLR_RT_TypeDef_Instance)); - memset(&inst, 0, sizeof(CLR_RT_FieldDef_Instance)); - - if (blk != nullptr && cmd->m_offset > 0) + if (blk != NULL && cmd->m_offset > 0) { if (FAILED(desc.InitializeFromObject(*blk))) { @@ -2988,9 +2973,6 @@ bool CLR_DBG_Debugger::Debugging_Value_GetArray(WP_Message *msg) CLR_RT_TypeDef_Instance *pTD = nullptr; CLR_RT_TypeDef_Instance td; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - tmp.SetObjectReference(cmd->m_heapblock); if (SUCCEEDED(ref.InitializeArrayReference(tmp, cmd->m_index))) @@ -3076,8 +3058,6 @@ bool CLR_DBG_Debugger::Debugging_Value_SetArray(WP_Message *msg) CLR_RT_HeapBlock_Array *array = cmd->m_heapblock; CLR_RT_HeapBlock tmp; - memset(&tmp, 0, sizeof(struct CLR_RT_HeapBlock)); - tmp.SetObjectReference(cmd->m_heapblock); // @@ -3087,8 +3067,6 @@ bool CLR_DBG_Debugger::Debugging_Value_SetArray(WP_Message *msg) { CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - if (SUCCEEDED(ref.InitializeArrayReference(tmp, cmd->m_index))) { if (SUCCEEDED(tmp.LoadFromReference(ref))) @@ -3336,8 +3314,7 @@ static HRESULT Assign_Helper(CLR_RT_HeapBlock *blkDst, CLR_RT_HeapBlock *blkSrc) AnalyzeObject aoSrc; CLR_RT_HeapBlock srcVal; - memset(&srcVal, 0, sizeof(struct CLR_RT_HeapBlock)); - srcVal.SetObjectReference(nullptr); + srcVal.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(srcVal); NANOCLR_CHECK_HRESULT(AnalyzeObject_Helper(blkDst, aoDst)); diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp index bffe401bda..4b7298601c 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp +++ b/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp @@ -21,11 +21,6 @@ HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_SystemInfo:: NFReleaseInfo releaseInfo; - memset(&hbMajor, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&hbMinor, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&hbBuild, 0, sizeof(struct CLR_RT_HeapBlock)); - memset(&hbRevision, 0, sizeof(struct CLR_RT_HeapBlock)); - Target_GetReleaseInfo(releaseInfo); hbMajor.SetInteger(releaseInfo.Version.usMajor); diff --git a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp index 1bc3c4f985..7311df3da3 100644 --- a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp +++ b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp @@ -245,9 +245,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::InsertNative CLR_RT_TypeDef_Index bucketTypeDef; CLR_RT_HeapBlock newBucket; - memset(&newBucket, 0, sizeof(struct CLR_RT_HeapBlock)); - - if (bucket == nullptr) + if (bucket == NULL) { // find type, don't bother checking the result as it exists for sure g_CLR_RT_TypeSystem.FindTypeDef("Bucket", "System.Collections", bucketTypeDef); @@ -434,7 +432,6 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Expand(CLR_R g_CLR_RT_TypeSystem.FindTypeDef("Bucket", "System.Collections", bucketTypeDef); // create a new array of - memset(&newBucketsHB, 0, sizeof(struct CLR_RT_HeapBlock)); CLR_RT_ProtectFromGC gc(newBucketsHB); if (i == lenghtOfPrimes) @@ -469,8 +466,8 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::Expand(CLR_R // create a new CLR_RT_HeapBlock newBucket; - memset(&newBucket, 0, sizeof(struct CLR_RT_HeapBlock)); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(newBucket, bucketTypeDef)) + newBucketElement->LoadFromReference(newBucket); bucket = newBucketElement->Dereference(); diff --git a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp index 1c01202fbf..cde5e2deb0 100644 --- a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp +++ b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp @@ -101,8 +101,10 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT const char *szText; CLR_RT_HeapBlock ref; - memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - ref.SetObjectReference(nullptr); + CLR_RT_HeapBlock_Array *pArrayBytesCopy; + CLR_RT_HeapBlock_Array *arrTmp; + + ref.SetObjectReference(NULL); CLR_RT_ProtectFromGC gc(ref); CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg1().DereferenceArray(); From f963f16eeb8c88bab2e258661ba606849a36a70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 10 Mar 2025 19:20:31 +0000 Subject: [PATCH 088/168] Fix compiler issues --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 2 +- .../nf_system_text_System_Text_UTF8Encoding.cpp | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 5f0e5174d5..7eeb0da781 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -1679,7 +1679,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C CLR_RT_HeapBlock hbLeft; CLR_RT_HeapBlock hbRight; - if (left.ReflectionDataConst().m_kind != right.ReflectionDataConst().m_kind) + if (left.ReflectionDataConst().kind != right.ReflectionDataConst().kind) { ptrLeft = FixReflectionForType(left, hbLeft); ptrRight = FixReflectionForType(right, hbRight); diff --git a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp index cde5e2deb0..98d8b69343 100644 --- a/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp +++ b/src/nanoFramework.System.Text/nf_system_text_System_Text_UTF8Encoding.cpp @@ -100,19 +100,18 @@ HRESULT Library_nf_system_text_System_Text_UTF8Encoding::Helper__GetChars(CLR_RT NANOCLR_HEADER(); const char *szText; + int cBytesCopy; CLR_RT_HeapBlock ref; CLR_RT_HeapBlock_Array *pArrayBytesCopy; CLR_RT_HeapBlock_Array *arrTmp; - ref.SetObjectReference(NULL); + ref.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(ref); CLR_RT_HeapBlock_Array *pArrayBytes = stack.Arg1().DereferenceArray(); CLR_INT32 byteIdx = fIndexed ? stack.Arg2().NumericByRef().s4 : 0; CLR_INT32 byteCnt = fIndexed ? stack.Arg3().NumericByRef().s4 : pArrayBytes->m_numOfElements; - CLR_RT_HeapBlock_Array *pArrayBytesCopy; - CLR_RT_HeapBlock_Array *arrTmp; - int cBytesCopy; + FAULT_ON_NULL(pArrayBytes); From 17199497f479dabea244a294eaa28611b9e07dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 27 Jan 2025 16:04:19 +0000 Subject: [PATCH 089/168] Fix assert in GC::Heap_Compact (#3080) ***NO_CI*** (cherry picked from commit 35df68885e1683a8267f677ad230753c968cf2af) --- src/CLR/Core/GarbageCollector_Compaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 1d4565cd93..b9815cd47d 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -260,8 +260,8 @@ void CLR_RT_GarbageCollector::Heap_Compact() _ASSERTE(relocCurrent->m_destination >= (CLR_UINT8 *)freeRegion_hc->m_payloadStart); _ASSERTE(relocCurrent->m_destination < (CLR_UINT8 *)freeRegion_hc->m_payloadEnd); - _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)freeRegion_hc->m_payloadStart); - _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)freeRegion_hc->m_payloadEnd); + _ASSERTE(relocCurrent->m_start >= (CLR_UINT8 *)currentSource_hc->m_payloadStart); + _ASSERTE(relocCurrent->m_start < (CLR_UINT8 *)currentSource_hc->m_payloadEnd); _ASSERTE(moveBytes == (move * sizeof(CLR_RT_HeapBlock))); #endif From 07e8015fdf888d7c36f461414d8926cadf0d6f9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Jan 2025 19:08:58 +0000 Subject: [PATCH 090/168] Fix base64 encode/decode and To/From Base64 string (#3082) ***NO_CI*** (cherry picked from commit 4e9cd7416d0df07d25eccf63ddd68f783ae85457) --- .../CorLib/corlib_native_System_Convert.cpp | 35 ++-- src/CLR/Helpers/Base64/base64.c | 12 +- src/CLR/Helpers/Base64/base64.h | 13 +- targets/win32/nanoCLR/base64.cpp | 159 +++++++++++------- 4 files changed, 128 insertions(+), 91 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Convert.cpp b/src/CLR/CorLib/corlib_native_System_Convert.cpp index 86ea16c95f..aeb36642e5 100644 --- a/src/CLR/CorLib/corlib_native_System_Convert.cpp +++ b/src/CLR/CorLib/corlib_native_System_Convert.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // Portions Copyright (C) 2002-2019 Free Software Foundation, Inc. All rights reserved. @@ -596,13 +596,13 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S #if (SUPPORT_ANY_BASE_CONVERSION == TRUE) size_t outputLength; - char *outArray = nullptr; + unsigned char *outArray = nullptr; char *outArrayWitLineBreak = nullptr; uint8_t *inArrayPointer = nullptr; uint8_t lineBreakCount; uint16_t offsetIndex = 0; - uint8_t count = 0; - uint16_t result; + size_t count = 0; + int result; CLR_RT_HeapBlock_Array *inArray = stack.Arg0().DereferenceArray(); size_t offset = (size_t)stack.Arg1().NumericByRef().s4; @@ -611,14 +611,14 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S FAULT_ON_NULL_ARG(inArray); - inArrayPointer = (uint8_t *)inArray->GetFirstElement(); + inArrayPointer = inArray->GetFirstElement(); inArrayPointer += (offset * sizeof(uint8_t)); // compute base64 string length outputLength = 4 * ((length + 2) / 3); // need malloc with base64 string length plus string terminator (+1) - outArray = (char *)platform_malloc(outputLength + 1); + outArray = (unsigned char *)platform_malloc(outputLength + 1); // check if have allocation if (outArray == nullptr) @@ -628,8 +628,7 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S // perform the operation // need to tweak the parameter with the output length because it includes room for the terminator - result = - mbedtls_base64_encode((unsigned char *)outArray, (outputLength + 1), &outputLength, inArrayPointer, length); + result = mbedtls_base64_encode(outArray, (outputLength + 1), &outputLength, inArrayPointer, length); if (result != 0) { @@ -646,7 +645,7 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S // break outArrayWitLineBreak = (char *)platform_malloc(outputLength + (lineBreakCount * 2) + 2); - for (int i = 0; i <= lineBreakCount; i++) + for (size_t i = 0; i <= lineBreakCount; i++) { // how many chars to copy if (outputLength > 76) @@ -695,7 +694,7 @@ HRESULT Library_corlib_native_System_Convert::ToBase64String___STATIC__STRING__S { // set a return result in the stack argument using the appropriate SetResult according to the variable type (a // string here) - NANOCLR_CHECK_HRESULT(stack.SetResult_String(outArray)); + NANOCLR_CHECK_HRESULT(stack.SetResult_String((const char *)outArray)); } // need to free memory from arrays @@ -723,10 +722,10 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY CLR_RT_HeapBlock_String *inString = nullptr; size_t outputLength; - char *outArray = nullptr; + unsigned char *outArray = nullptr; CLR_UINT8 *returnArray; - uint16_t result; - uint32_t length; + int result; + size_t length; inString = stack.Arg0().DereferenceString(); FAULT_ON_NULL(inString); @@ -739,19 +738,21 @@ HRESULT Library_corlib_native_System_Convert::FromBase64String___STATIC__SZARRAY outputLength = length / 4 * 3; // alloc output array - outArray = (char *)platform_malloc(outputLength + 1); + outArray = (unsigned char *)platform_malloc(outputLength + 1); // check malloc success if (outArray == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } + memset(outArray, 0, outputLength + 1); + // perform the operation // need to tweak the parameter with the output length because it includes room for the terminator result = mbedtls_base64_decode( - (unsigned char *)outArray, - (size_t)(outputLength + 1), - (size_t *)&outputLength, + outArray, + (outputLength + 1), + &outputLength, (const unsigned char *)inString->StringText(), length); diff --git a/src/CLR/Helpers/Base64/base64.c b/src/CLR/Helpers/Base64/base64.c index 179243d2de..cbc25eeeb0 100644 --- a/src/CLR/Helpers/Base64/base64.c +++ b/src/CLR/Helpers/Base64/base64.c @@ -18,16 +18,6 @@ #include "base64.h" -// from MbedTLS common.h -#define MBEDTLS_BYTE_0( x ) ( (uint8_t) ( ( x ) & 0xff ) ) -#define MBEDTLS_BYTE_1( x ) ( (uint8_t) ( ( ( x ) >> 8 ) & 0xff ) ) -#define MBEDTLS_BYTE_2( x ) ( (uint8_t) ( ( ( x ) >> 16 ) & 0xff ) ) -#define MBEDTLS_BYTE_3( x ) ( (uint8_t) ( ( ( x ) >> 24 ) & 0xff ) ) -#define MBEDTLS_BYTE_4( x ) ( (uint8_t) ( ( ( x ) >> 32 ) & 0xff ) ) -#define MBEDTLS_BYTE_5( x ) ( (uint8_t) ( ( ( x ) >> 40 ) & 0xff ) ) -#define MBEDTLS_BYTE_6( x ) ( (uint8_t) ( ( ( x ) >> 48 ) & 0xff ) ) -#define MBEDTLS_BYTE_7( x ) ( (uint8_t) ( ( ( x ) >> 56 ) & 0xff ) ) - unsigned char mbedtls_ct_uchar_mask_of_range( unsigned char low, unsigned char high, unsigned char c ) @@ -237,4 +227,4 @@ __nfweak int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *ole return( 0 ); } -// clang-format on \ No newline at end of file +// clang-format on diff --git a/src/CLR/Helpers/Base64/base64.h b/src/CLR/Helpers/Base64/base64.h index af7efd89c8..f858463c84 100644 --- a/src/CLR/Helpers/Base64/base64.h +++ b/src/CLR/Helpers/Base64/base64.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) The Mbed TLS Contributors. All Rights Reserved. // See LICENSE file in the project root for full license information. @@ -15,9 +15,14 @@ // thus there will be no duplicate code // ////////////////////////////////////////////////////////////////////////////////////////////// -#define BASE64_SIZE_T_MAX ((size_t)-1) /* SIZE_T_MAX is not standard */ -#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A /**< Output buffer too small. */ -#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C /**< Invalid character in input. */ +#define BASE64_SIZE_T_MAX ((size_t) - 1) /* SIZE_T_MAX is not standard */ +#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A /**< Output buffer too small. */ +#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C /**< Invalid character in input. */ + +// from MbedTLS common.h +#define MBEDTLS_BYTE_0(x) ((uint8_t)((x) & 0xff)) +#define MBEDTLS_BYTE_1(x) ((uint8_t)(((x) >> 8) & 0xff)) +#define MBEDTLS_BYTE_2(x) ((uint8_t)(((x) >> 16) & 0xff)) #ifdef __cplusplus extern "C" diff --git a/targets/win32/nanoCLR/base64.cpp b/targets/win32/nanoCLR/base64.cpp index 877feeab19..25a656edea 100644 --- a/targets/win32/nanoCLR/base64.cpp +++ b/targets/win32/nanoCLR/base64.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) The Mbed TLS Contributors. All Rights Reserved. // See LICENSE file in the project root for full license information. @@ -101,6 +101,46 @@ static unsigned char mbedtls_base64_table_lookup( return result; } +unsigned char mbedtls_ct_uchar_mask_of_range(unsigned char low, unsigned char high, unsigned char c) +{ + /* low_mask is: 0 if low <= c, 0x...ff if low > c */ + unsigned low_mask = ((unsigned)c - low) >> 8; + /* high_mask is: 0 if c <= high, 0x...ff if c > high */ + unsigned high_mask = ((unsigned)high - c) >> 8; + return ~(low_mask | high_mask) & 0xff; +} + +unsigned char mbedtls_ct_base64_enc_char(unsigned char value) +{ + unsigned char digit = 0; + /* For each range of values, if value is in that range, mask digit with + * the corresponding value. Since value can only be in a single range, + * only at most one masking will change digit. */ + digit |= mbedtls_ct_uchar_mask_of_range(0, 25, value) & ('A' + value); + digit |= mbedtls_ct_uchar_mask_of_range(26, 51, value) & ('a' + value - 26); + digit |= mbedtls_ct_uchar_mask_of_range(52, 61, value) & ('0' + value - 52); + digit |= mbedtls_ct_uchar_mask_of_range(62, 62, value) & '+'; + digit |= mbedtls_ct_uchar_mask_of_range(63, 63, value) & '/'; + return digit; +} + +signed char mbedtls_ct_base64_dec_value(unsigned char c) +{ + unsigned char val = 0; + /* For each range of digits, if c is in that range, mask val with + * the corresponding value. Since c can only be in a single range, + * only at most one masking will change val. Set val to one plus + * the desired value so that it stays 0 if c is in none of the ranges. */ + val |= mbedtls_ct_uchar_mask_of_range('A', 'Z', c) & (c - 'A' + 0 + 1); + val |= mbedtls_ct_uchar_mask_of_range('a', 'z', c) & (c - 'a' + 26 + 1); + val |= mbedtls_ct_uchar_mask_of_range('0', '9', c) & (c - '0' + 52 + 1); + val |= mbedtls_ct_uchar_mask_of_range('+', '+', c) & (c - '+' + 62 + 1); + val |= mbedtls_ct_uchar_mask_of_range('/', '/', c) & (c - '/' + 63 + 1); + /* At this point, val is 0 if c is an invalid digit and v+1 if c is + * a digit with the value v. */ + return val - 1; +} + __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen) { size_t i, n; @@ -110,7 +150,7 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen if (slen == 0) { *olen = 0; - return (0); + return 0; } n = slen / 3 + (slen % 3 != 0); @@ -118,7 +158,7 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen if (n > (BASE64_SIZE_T_MAX - 1) / 4) { *olen = BASE64_SIZE_T_MAX; - return (MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL); + return MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL; } n *= 4; @@ -126,7 +166,7 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen if ((dlen < n + 1) || (nullptr == dst)) { *olen = n + 1; - return (MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL); + return MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL; } n = (slen / 3) * 3; @@ -137,17 +177,10 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen C2 = *src++; C3 = *src++; - *p++ = mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), ((C1 >> 2) & 0x3F)); - - *p++ = - mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), ((((C1 & 3) << 4) + (C2 >> 4)) & 0x3F)); - - *p++ = mbedtls_base64_table_lookup( - base64_enc_map, - sizeof(base64_enc_map), - ((((C2 & 15) << 2) + (C3 >> 6)) & 0x3F)); - - *p++ = mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), (C3 & 0x3F)); + *p++ = mbedtls_ct_base64_enc_char((C1 >> 2) & 0x3F); + *p++ = mbedtls_ct_base64_enc_char((((C1 & 3) << 4) + (C2 >> 4)) & 0x3F); + *p++ = mbedtls_ct_base64_enc_char((((C2 & 15) << 2) + (C3 >> 6)) & 0x3F); + *p++ = mbedtls_ct_base64_enc_char(C3 & 0x3F); } if (i < slen) @@ -155,14 +188,12 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen C1 = *src++; C2 = ((i + 1) < slen) ? *src++ : 0; - *p++ = mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), ((C1 >> 2) & 0x3F)); - - *p++ = - mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), ((((C1 & 3) << 4) + (C2 >> 4)) & 0x3F)); + *p++ = mbedtls_ct_base64_enc_char((C1 >> 2) & 0x3F); + *p++ = mbedtls_ct_base64_enc_char((((C1 & 3) << 4) + (C2 >> 4)) & 0x3F); if ((i + 1) < slen) { - *p++ = mbedtls_base64_table_lookup(base64_enc_map, sizeof(base64_enc_map), (((C2 & 15) << 2) & 0x3F)); + *p++ = mbedtls_ct_base64_enc_char(((C2 & 15) << 2) & 0x3F); } else { @@ -180,20 +211,23 @@ __nfweak int mbedtls_base64_encode(unsigned char *dst, size_t dlen, size_t *olen __nfweak int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen, const unsigned char *src, size_t slen) { - size_t i, n; - uint32_t j, x; + size_t i; /* index in source */ + size_t n; /* number of digits or trailing = in source */ + uint32_t x; /* value accumulator */ + unsigned accumulated_digits = 0; + unsigned equals = 0; + int spaces_present = 0; unsigned char *p; - unsigned char dec_map_lookup; /* First pass: check for validity and get output length */ - for (i = n = j = 0; i < slen; i++) + for (i = n = 0; i < slen; i++) { /* Skip spaces before checking for EOL */ - x = 0; + spaces_present = 0; while (i < slen && src[i] == ' ') { ++i; - ++x; + spaces_present = 1; } /* Spaces at end of buffer are OK */ @@ -213,35 +247,41 @@ __nfweak int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen } /* Space inside a line is an error */ - if (x != 0) + if (spaces_present) { - return (MBEDTLS_ERR_BASE64_INVALID_CHARACTER); + return MBEDTLS_ERR_BASE64_INVALID_CHARACTER; } - if (src[i] == '=' && ++j > 2) + if (src[i] > 127) { - return (MBEDTLS_ERR_BASE64_INVALID_CHARACTER); + return MBEDTLS_ERR_BASE64_INVALID_CHARACTER; } - dec_map_lookup = mbedtls_base64_table_lookup(base64_dec_map, sizeof(base64_dec_map), src[i]); - - if (src[i] > 127 || dec_map_lookup == 127) + if (src[i] == '=') { - return (MBEDTLS_ERR_BASE64_INVALID_CHARACTER); + if (++equals > 2) + { + return MBEDTLS_ERR_BASE64_INVALID_CHARACTER; + } } - - if (dec_map_lookup < 64 && j != 0) + else { - return (MBEDTLS_ERR_BASE64_INVALID_CHARACTER); + if (equals != 0) + { + return MBEDTLS_ERR_BASE64_INVALID_CHARACTER; + } + if (mbedtls_ct_base64_dec_value(src[i]) < 0) + { + return MBEDTLS_ERR_BASE64_INVALID_CHARACTER; + } } - n++; } if (n == 0) { *olen = 0; - return (0); + return 0; } /* The following expression is to calculate the following formula without @@ -249,47 +289,48 @@ __nfweak int mbedtls_base64_decode(unsigned char *dst, size_t dlen, size_t *olen * n = ( ( n * 6 ) + 7 ) >> 3; */ n = (6 * (n >> 3)) + ((6 * (n & 0x7) + 7) >> 3); - n -= j; + n -= equals; if (dst == nullptr || dlen < n) { *olen = n; - return (MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL); + return MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL; } - for (j = 3, n = x = 0, p = dst; i > 0; i--, src++) + equals = 0; + for (x = 0, p = dst; i > 0; i--, src++) { if (*src == '\r' || *src == '\n' || *src == ' ') { continue; } - dec_map_lookup = mbedtls_base64_table_lookup(base64_dec_map, sizeof(base64_dec_map), *src); - - mbedtls_base64_cond_assign_uint32(&j, j - 1, mbedtls_base64_eq(dec_map_lookup, 64)); - x = (x << 6) | (dec_map_lookup & 0x3F); - - if (++n == 4) + x = x << 6; + if (*src == '=') { - n = 0; - if (j > 0) - { - *p++ = (unsigned char)(x >> 16); - } + ++equals; + } + else + { + x |= mbedtls_ct_base64_dec_value(*src); + } - if (j > 1) + if (++accumulated_digits == 4) + { + accumulated_digits = 0; + *p++ = MBEDTLS_BYTE_2(x); + if (equals <= 1) { - *p++ = (unsigned char)(x >> 8); + *p++ = MBEDTLS_BYTE_1(x); } - - if (j > 2) + if (equals <= 0) { - *p++ = (unsigned char)(x); + *p++ = MBEDTLS_BYTE_0(x); } } } *olen = p - dst; - return (0); + return 0; } From 0f5da96725bdbc8c26934478c12db864a38c5a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 28 Jan 2025 23:19:19 +0000 Subject: [PATCH 091/168] Improve output messages (#3083) ***NO_CI*** (cherry picked from commit 5c79bef03c3a806516c50d153d630048ee8aeea2) --- src/CLR/Core/GarbageCollector.cpp | 9 ++++++--- src/CLR/Core/GarbageCollector_Compaction.cpp | 2 +- src/CLR/Core/TypeSystem.cpp | 19 ++++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index e0b700f596..d5d712c267 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -144,7 +144,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() #if defined(NANOCLR_GC_VERBOSE) if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\n\r\n Memory: Start %s\r\n", HAL_Time_CurrentDateTimeToString()); + CLR_Debug::Printf("\r\n\r\nGC: Start %s\r\n", HAL_Time_CurrentDateTimeToString()); } #endif @@ -269,7 +269,10 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() #if defined(NANOCLR_GC_VERBOSE) if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\n\r\n Memory: End %s\r\n", HAL_Time_CurrentDateTimeToString()); + CLR_Debug::Printf( + "\r\n\r\nGC: (Run #%d) End %s\r\n", + m_numberOfGarbageCollections, + HAL_Time_CurrentDateTimeToString()); } #endif diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index b9815cd47d..2ab6f90b1e 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -39,7 +39,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() #if defined(NANOCLR_TRACE_MEMORY_STATS) if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\n\r\nGC: heap compaction completed\r\n"); + CLR_Debug::Printf("\r\n\r\nGC: (Run %d) heap compaction completed\r\n", m_numberOfCompactions); } #endif diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 3666acfa3a..a2d62523c6 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2444,11 +2444,20 @@ HRESULT CLR_RT_Assembly::CreateInstance(const CLR_RECORD_ASSEMBLY *header, CLR_R header->SizeOfTable(TBL_MethodSpec) + header->SizeOfTable(TBL_TypeSpec) + header->SizeOfTable(TBL_Attributes) + header->SizeOfTable(TBL_Signatures); - CLR_Debug::Printf( - " (%d RAM - %d ROM - %d METADATA)\r\n\r\n", - iTotalRamSize, - header->TotalSize(), - iMetaData); + CLR_Debug::Printf(" (%d RAM - %d ROM - %d METADATA)", iTotalRamSize, header->TotalSize(), iMetaData); + +#if defined(NANOCLR_GC_VERBOSE) + if (s_CLR_RT_fTrace_Memory >= c_CLR_RT_Trace_Info) + { +#ifdef _WIN64 + + CLR_Debug::Printf(" @ 0x%016" PRIxPTR "", (uintptr_t)assm); +#else + CLR_Debug::Printf(" @ 0x%08 PRIxPTR ", (uintptr_t)assm); +#endif + } +#endif + CLR_Debug::Printf("\r\n\r\n"); CLR_Debug::Printf( " AssemblyRef = %6d bytes (%5d elements)\r\n", From 23739b9e76dbdec8105a9a247dee11ff9c5ee17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 10 Mar 2025 19:29:07 +0000 Subject: [PATCH 092/168] Rework `DateTime` and `TimeSpan` (#3084) ***NO_CI*** --- src/CLR/CorLib/corlib_native.h | 10 ++-- .../CorLib/corlib_native_System_Convert.cpp | 15 ++--- .../CorLib/corlib_native_System_DateTime.cpp | 55 +++++-------------- .../CorLib/corlib_native_System_TimeSpan.cpp | 17 +----- src/CLR/Core/TypeSystemLookup.cpp | 6 +- 5 files changed, 29 insertions(+), 74 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index 56f9415a55..b272b9d743 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -467,7 +467,6 @@ struct Library_corlib_native_System_TimeSpan //--// - static CLR_INT64 *NewObject(CLR_RT_HeapBlock &ref); static CLR_INT64 *GetValuePtr(CLR_RT_StackFrame &stack); static CLR_INT64 *GetValuePtr(CLR_RT_HeapBlock &ref); @@ -491,12 +490,11 @@ struct Library_corlib_native_System_DateTime NANOCLR_NATIVE_DECLARE(_ctor___VOID__I4__I4__I4__I4__I4__I4__I4); NANOCLR_NATIVE_DECLARE(GetDateTimePart___I4__SystemDateTimeDateTimePart); NANOCLR_NATIVE_DECLARE(DaysInMonth___STATIC__I4__I4__I4); - NANOCLR_NATIVE_DECLARE(get_UtcNow___STATIC__SystemDateTime); - NANOCLR_NATIVE_DECLARE(get_Today___STATIC__SystemDateTime); + NANOCLR_NATIVE_DECLARE(GetUtcNowAsTicks___STATIC__I8); + NANOCLR_NATIVE_DECLARE(GetTodayAsTicks___STATIC__I8); //--// - static CLR_INT64 *NewObject(CLR_RT_HeapBlock &ref); static CLR_INT64 *GetValuePtr(CLR_RT_StackFrame &stack); static CLR_INT64 *GetValuePtr(CLR_RT_HeapBlock &ref); @@ -508,7 +506,7 @@ struct Library_corlib_native_System_Convert { NANOCLR_NATIVE_DECLARE(NativeToInt64___STATIC__I8__STRING__BOOLEAN__I8__I8__I4__BOOLEAN__BYREF_BOOLEAN); NANOCLR_NATIVE_DECLARE(NativeToDouble___STATIC__R8__STRING__BOOLEAN__BYREF_BOOLEAN); - NANOCLR_NATIVE_DECLARE(NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN); + NANOCLR_NATIVE_DECLARE(NativeToDateTime___STATIC__VOID__STRING__BOOLEAN__BYREF_BOOLEAN__BYREF_SystemDateTime); NANOCLR_NATIVE_DECLARE(ToBase64String___STATIC__STRING__SZARRAY_U1__I4__I4__BOOLEAN); NANOCLR_NATIVE_DECLARE(FromBase64String___STATIC__SZARRAY_U1__STRING); diff --git a/src/CLR/CorLib/corlib_native_System_Convert.cpp b/src/CLR/CorLib/corlib_native_System_Convert.cpp index aeb36642e5..eced985658 100644 --- a/src/CLR/CorLib/corlib_native_System_Convert.cpp +++ b/src/CLR/CorLib/corlib_native_System_Convert.cpp @@ -519,12 +519,12 @@ HRESULT Library_corlib_native_System_Convert::NativeToDouble___STATIC__R8__STRIN NANOCLR_CLEANUP_END(); } -HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN( - CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_Convert:: + NativeToDateTime___STATIC__VOID__STRING__BOOLEAN__BYREF_BOOLEAN__BYREF_SystemDateTime(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_INT64 *pRes; + CLR_INT64 *pTicks; char *str = (char *)stack.Arg0().RecoverString(); char *conversionResult = nullptr; @@ -534,14 +534,9 @@ HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemD // grab parameter with flag to throw on failure bool throwOnFailure = (bool)stack.Arg1().NumericByRefConst().u1; - CLR_RT_HeapBlock &ref = stack.PushValue(); - // check string parameter for null FAULT_ON_NULL_ARG(str); - pRes = Library_corlib_native_System_DateTime::NewObject(ref); - FAULT_ON_NULL(pRes); - // try 'u' Universal time with sortable format (yyyy-MM-dd' 'HH:mm:ss) conversionResult = Nano_strptime(str, "%Y-%m-%d %H:%M:%SZ", &ticks); if (conversionResult == nullptr) @@ -570,7 +565,9 @@ HRESULT Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemD } else { - *pRes = ticks; + // get pointer to DateTime value type in parameter 3 + pTicks = DateTime::GetValuePtr(stack.Arg3()); + *pTicks = ticks; } NANOCLR_CLEANUP(); diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 90d84c5681..7b658e50fa 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -7,6 +7,11 @@ #include "CorLib.h" #include +///////////////////////////////////////////////////////////////////////// +// !!! KEEP IN SYNC WITH DateTime._ticksAtOrigin (in managed code) !!! // +///////////////////////////////////////////////////////////////////////// +#define TICKS_AT_ORIGIN 504911232000000000 + /////////////////////////////////////////////////////////////////////// // !!! KEEP IN SYNC WITH DateTime.DateTimePart (in managed code) !!! // /////////////////////////////////////////////////////////////////////// @@ -147,60 +152,30 @@ HRESULT Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4( NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_DateTime::GetUtcNowAsTicks___STATIC__I8(CLR_RT_StackFrame &stack) { - NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_INT64 *val; - - CLR_RT_HeapBlock &ref = stack.PushValue(); - - val = Library_corlib_native_System_DateTime::NewObject(ref); - FAULT_ON_NULL(val); - - // load with full date&time - // including UTC flag - *val = (CLR_INT64)(HAL_Time_CurrentDateTime(false) | s_UTCMask); + CLR_INT64 value = HAL_Time_CurrentDateTime(false); + value += TICKS_AT_ORIGIN; + stack.SetResult_I8(value); - NANOCLR_NOCLEANUP(); + NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_DateTime::GetTodayAsTicks___STATIC__I8(CLR_RT_StackFrame &stack) { - NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock &ref = stack.PushValue(); - - CLR_INT64 *val = NewObject(ref); - - // load with date part only - // including UTC flag - *val = (CLR_INT64)(HAL_Time_CurrentDateTime(true) | s_UTCMask); + CLR_INT64 value = HAL_Time_CurrentDateTime(true); + value += TICKS_AT_ORIGIN; + stack.SetResult_I8(value); NANOCLR_NOCLEANUP_NOLABEL(); } //--// -CLR_INT64 *Library_corlib_native_System_DateTime::NewObject(CLR_RT_HeapBlock &ref) -{ - NATIVE_PROFILE_CLR_CORE(); - - CLR_RT_TypeDescriptor dtType; - - // initialize type descriptor - dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.DateTime); - - // create an instance of - g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls); - - return GetValuePtr(ref); -} - -//--// - CLR_INT64 *Library_corlib_native_System_DateTime::GetValuePtr(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); diff --git a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp index 433f40d8de..7d5c29fad9 100644 --- a/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp +++ b/src/CLR/CorLib/corlib_native_System_TimeSpan.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -178,21 +178,6 @@ HRESULT Library_corlib_native_System_TimeSpan::Equals___STATIC__BOOLEAN__SystemT //--// -CLR_INT64 *Library_corlib_native_System_TimeSpan::NewObject(CLR_RT_HeapBlock &ref) -{ - NATIVE_PROFILE_CLR_CORE(); - - CLR_RT_TypeDescriptor dtType; - - // initialize type descriptor - dtType.InitializeFromType(g_CLR_RT_WellKnownTypes.TimeSpan); - - // create an instance of - g_CLR_RT_ExecutionEngine.NewObject(ref, dtType.m_handlerCls); - - return GetValuePtr(ref); -} - CLR_INT64 *Library_corlib_native_System_TimeSpan::GetValuePtr(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index cc546bae1e..a61c9816f9 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -86,8 +86,8 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(DateTime ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(TimeSpan ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(DateTime ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(TimeSpan ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT From e979361174f3830dbd08bad2b8fdeeca02ec5a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 31 Jan 2025 06:01:18 +0000 Subject: [PATCH 093/168] Fix printf (#3086) (cherry picked from commit fff9673979beb37fcbf349ff8a164600c6d8705c) --- src/CLR/Diagnostics/Info.cpp | 27 +++++++++++++------------ src/CLR/Diagnostics/Info_Safeprintf.cpp | 24 +++++++++++++++++----- src/CLR/Helpers/nanoprintf/nanoprintf.c | 25 +++++++++++++---------- 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 4c9a4f379e..7fb01d6cf8 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -223,20 +223,22 @@ int CLR_Debug::PrintfV(const char *format, va_list arg) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); -#if defined(VIRTUAL_DEVICE) - char buffer[512]; - char *szBuffer = buffer; - int16_t bufferSize = MAXSTRLEN(buffer); - size_t iBuffer = bufferSize; -#else // this should be more than enough for the existing output needs const int16_t c_BufferSize = 512; char *buffer = (char *)platform_malloc(c_BufferSize); + + // sanity check for successfull allocation + if (buffer == NULL) + { + return 0; + } + char *szBuffer = buffer; - size_t iBuffer = c_BufferSize; - int16_t bufferSize = c_BufferSize; -#endif + // need to leave space for the null terminator + size_t bufferSize = c_BufferSize - 1; + size_t iBuffer = bufferSize; + memset(buffer, 0, c_BufferSize); #if !defined(BUILD_RTM) bool fRes = @@ -254,12 +256,11 @@ int CLR_Debug::PrintfV(const char *format, va_list arg) SaveMessage(outputString); #endif -#ifndef VIRTUAL_DEVICE - if (buffer != nullptr) + + if (buffer != NULL) { platform_free(buffer); } -#endif return (int)iBuffer; } diff --git a/src/CLR/Diagnostics/Info_Safeprintf.cpp b/src/CLR/Diagnostics/Info_Safeprintf.cpp index ff705e8808..54a9da93ab 100644 --- a/src/CLR/Diagnostics/Info_Safeprintf.cpp +++ b/src/CLR/Diagnostics/Info_Safeprintf.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -15,11 +15,25 @@ bool CLR_SafeSprintfV(char *&szBuffer, size_t &iBuffer, const char *format, va_l bool fRes = (chars >= 0); if (fRes == false) + { chars = (int)iBuffer; - - szBuffer += chars; - szBuffer[0] = 0; - iBuffer -= chars; + } + + // fix up the buffer and buffer size + // add terminator char + // mind if there was an overflow in the print operation + if (chars <= (int)iBuffer) + { + szBuffer += chars; + szBuffer[0] = 0; + iBuffer -= chars; + } + else + { + szBuffer += iBuffer; + szBuffer[0] = 0; + iBuffer = 0; + } return fRes; } diff --git a/src/CLR/Helpers/nanoprintf/nanoprintf.c b/src/CLR/Helpers/nanoprintf/nanoprintf.c index e500132815..a25294c366 100644 --- a/src/CLR/Helpers/nanoprintf/nanoprintf.c +++ b/src/CLR/Helpers/nanoprintf/nanoprintf.c @@ -1079,7 +1079,14 @@ static printf_t doprnt(void *context, void (*func)(char c, void *context), size_ #ifdef BASIC_PRINTF_ONLY func(c); // Basic output function. #else - func(c, context); // Output function. +// [NF_CHANGE] + // only print if there is space in the buffer + if (count < n) + { + func(c, context); // Output function. + } +// [END NF_CHANGE] + #endif #ifdef PRINTF_T ++count; @@ -1105,7 +1112,13 @@ static printf_t doprnt(void *context, void (*func)(char c, void *context), size_ #ifdef BASIC_PRINTF_ONLY func(convert); // Basic output function. #else +// [NF_CHANGE] + // only print if there is space in the buffer + if (count < n) + { func(convert, context); // Output function. + } +// [END NF_CHANGE] #endif #ifdef PRINTF_T ++count; @@ -1258,16 +1271,6 @@ printf_t vsnprintf_(char *buffer, size_t bufsz, char const *format, va_list vlis // Perform the actual formatting operation count = doprnt(&buffer, putbuf, bufsz, format, vlistCopy); - // append null terminator - if(count < bufsz) - { - buffer[count] = '\0'; - } - else - { - buffer[bufsz - 1] = '\0'; - } - // Clean up the copied variable argument list va_end(vlistCopy); From 489c1dafd87c5df5e3c5ac68d6851627df252b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 31 Jan 2025 13:08:06 +0000 Subject: [PATCH 094/168] Replace dynamic allocation of print buffer (#3087) (cherry picked from commit cb91c37acfa79f30e3abef57a4c8c35ddbd572fe) --- src/CLR/Diagnostics/Info.cpp | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/CLR/Diagnostics/Info.cpp b/src/CLR/Diagnostics/Info.cpp index 7fb01d6cf8..e2b5f59f3c 100644 --- a/src/CLR/Diagnostics/Info.cpp +++ b/src/CLR/Diagnostics/Info.cpp @@ -224,21 +224,15 @@ int CLR_Debug::PrintfV(const char *format, va_list arg) NATIVE_PROFILE_CLR_DIAGNOSTICS(); // this should be more than enough for the existing output needs + // TODO: expose this in the build system to allow better adjustment according to the target const int16_t c_BufferSize = 512; - char *buffer = (char *)platform_malloc(c_BufferSize); - - // sanity check for successfull allocation - if (buffer == NULL) - { - return 0; - } - + char buffer[c_BufferSize]; char *szBuffer = buffer; + // need to leave space for the null terminator size_t bufferSize = c_BufferSize - 1; size_t iBuffer = bufferSize; - memset(buffer, 0, c_BufferSize); #if !defined(BUILD_RTM) bool fRes = @@ -256,12 +250,6 @@ int CLR_Debug::PrintfV(const char *format, va_list arg) SaveMessage(outputString); #endif - - if (buffer != NULL) - { - platform_free(buffer); - } - return (int)iBuffer; } From 876efdc605727d49b8c5f0c2eaa523fa1fe40361 Mon Sep 17 00:00:00 2001 From: Robin Jones Date: Fri, 7 Feb 2025 14:18:54 +0000 Subject: [PATCH 095/168] Improve root namespace for vxproj files (#3089) ***NO_CI*** (cherry picked from commit 50137253f41c95743d5f23e5ec0c15df45cccd16) --- src/DeviceInterfaces/Networking.Sntp/Networking.Sntp.vcxproj | 2 +- src/DeviceInterfaces/System.Net/System.Net.vcxproj | 2 +- src/System.Device.Gpio/System.Device.Gpio.vcxproj | 2 +- src/System.IO.Ports/System.IO.Ports.vcxproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/DeviceInterfaces/Networking.Sntp/Networking.Sntp.vcxproj b/src/DeviceInterfaces/Networking.Sntp/Networking.Sntp.vcxproj index 1e9a69bc82..350ba268fb 100644 --- a/src/DeviceInterfaces/Networking.Sntp/Networking.Sntp.vcxproj +++ b/src/DeviceInterfaces/Networking.Sntp/Networking.Sntp.vcxproj @@ -28,7 +28,7 @@ {84c62efc-dba2-4d47-bb81-322e8902c6d6} Win32Proj - Windows.Storage + nanoFramework.Networking.Sntp 10.0 diff --git a/src/DeviceInterfaces/System.Net/System.Net.vcxproj b/src/DeviceInterfaces/System.Net/System.Net.vcxproj index 800cd106a9..4c0281fbd9 100644 --- a/src/DeviceInterfaces/System.Net/System.Net.vcxproj +++ b/src/DeviceInterfaces/System.Net/System.Net.vcxproj @@ -37,7 +37,7 @@ {87b3b6fb-ae1f-4777-abbf-3e42e0deb336} Win32Proj - Windows.Storage + nanoFramework.Networking 10.0 diff --git a/src/System.Device.Gpio/System.Device.Gpio.vcxproj b/src/System.Device.Gpio/System.Device.Gpio.vcxproj index 8f058b41b2..56b6103919 100644 --- a/src/System.Device.Gpio/System.Device.Gpio.vcxproj +++ b/src/System.Device.Gpio/System.Device.Gpio.vcxproj @@ -29,7 +29,7 @@ {830a7e28-7b2b-4be6-8888-a39775a0092a} Win32Proj - Windows.Storage + nanoFramework.System.Device.Gpio 10.0 diff --git a/src/System.IO.Ports/System.IO.Ports.vcxproj b/src/System.IO.Ports/System.IO.Ports.vcxproj index aabad743de..3ea21bd2de 100644 --- a/src/System.IO.Ports/System.IO.Ports.vcxproj +++ b/src/System.IO.Ports/System.IO.Ports.vcxproj @@ -28,7 +28,7 @@ {46556AFC-C248-4082-ABE6-9B07F4E57579} Win32Proj - Windows.Storage + nanoFramework.System.IO.Ports 10.0 From df18099c8aad37dd854243a1a2a13358b6359374 Mon Sep 17 00:00:00 2001 From: Robin Jones Date: Fri, 7 Feb 2025 20:44:10 +0000 Subject: [PATCH 096/168] Remove deprecated Windows.Storage API (#3090) (cherry picked from commit 3aa6ab750580023607c28f223fff87adb0d6fed9) --- CMake/Modules/FindNF_NativeAssemblies.cmake | 7 - CMake/Modules/FindSystem.IO.FileSystem.cmake | 2 + CMake/Modules/FindWindows.Storage.cmake | 63 - .../FreeRTOS_IMXRT10xx_GCC_options.cmake | 2 - CMakeLists.txt | 12 +- .../Include/nanoHAL_System_IO_FileSystem.h | 12 - src/HAL/Include/nanoHAL_Windows_Storage.h | 74 -- src/HAL/Include/nanoHAL_v2.h | 4 - .../nf_sys_io_filesystem_System_IO_File.cpp | 1 - src/Windows.Storage/Windows.Storage.vcxproj | 166 --- .../Windows.Storage.vcxproj.filters | 42 - src/Windows.Storage/win_storage_native.cpp | 114 -- src/Windows.Storage/win_storage_native.h | 109 -- ...e_Windows_Storage_Devices_SDCard_stubs.cpp | 36 - ...ge_native_Windows_Storage_FileIO_stubs.cpp | 46 - ...tive_Windows_Storage_StorageFile_stubs.cpp | 35 - ...ve_Windows_Storage_StorageFolder_stubs.cpp | 95 -- ..._Windows_Storage_StorageProvider_stubs.cpp | 16 - ...orage_config.h => target_storage_config.h} | 7 +- .../_common/include/Target_Windows_Storage.h | 9 - .../ORGPAL_PALTHREE/target_FileSystem.cpp | 2 +- .../target_storage_config.h} | 7 +- .../ChibiOS/ORGPAL_PALX/target_FileSystem.cpp | 2 +- .../target_storage_config.h} | 7 +- ...orage_config.h => target_storage_config.h} | 7 +- .../_common/Target_System_IO_FileSystem.c | 2 +- .../_common/Target_System_IO_FileSystem.c | 4 +- .../NXP/NXP_MIMXRT1060_EVK/CMakePresets.json | 2 +- .../NXP/NXP_MIMXRT1060_EVK/nanoCLR/main.c | 7 +- .../NXP_MIMXRT1060_EVK/target_FileSystem.cpp | 9 +- .../FreeRTOS/NXP/{_fatfs => _FatFs}/diskio.c | 0 .../NXP/_FatFs/fatfs_FS_Driver.cpp} | 5 +- targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.h | 15 + .../FreeRTOS/NXP/{_fatfs => _FatFs}/ffconf.h | 0 .../NXP/{_fatfs => _FatFs}/ffsystem.c | 0 .../NXP/{_fatfs => _FatFs}/fsl_sd_disk.c | 0 .../NXP/{_fatfs => _FatFs}/fsl_sd_disk.h | 0 targets/FreeRTOS/NXP/_common/CMakeLists.txt | 5 - .../NXP/_common/Target_System_IO_FileSystem.c | 135 ++ .../NXP/_common/Target_Windows_Storage.c | 149 --- .../NXP/_include/Target_Windows_Storage.h | 21 - ..._native_Windows_Storage_Devices_SDCard.cpp | 37 - ..._storage_native_Windows_Storage_FileIO.cpp | 610 --------- ...age_native_Windows_Storage_StorageFile.cpp | 151 --- ...e_native_Windows_Storage_StorageFolder.cpp | 1184 ----------------- ...native_Windows_Storage_StorageProvider.cpp | 16 - .../win_storage_native_target.h | 16 - .../_include/Target_Windows_Storage.h | 9 - targets/netcore/nanoCLR.sln | 15 - .../nanoFramework.nanoCLR.vcxproj | 3 - targets/win32/nanoCLR.sln | 15 - .../CLR_RT_InteropAssembliesTable.cpp | 2 - targets/win32/nanoCLR/nanoCLR.vcxproj | 3 - 53 files changed, 194 insertions(+), 3098 deletions(-) delete mode 100644 CMake/Modules/FindWindows.Storage.cmake delete mode 100644 src/HAL/Include/nanoHAL_Windows_Storage.h delete mode 100644 src/Windows.Storage/Windows.Storage.vcxproj delete mode 100644 src/Windows.Storage/Windows.Storage.vcxproj.filters delete mode 100644 src/Windows.Storage/win_storage_native.cpp delete mode 100644 src/Windows.Storage/win_storage_native.h delete mode 100644 src/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard_stubs.cpp delete mode 100644 src/Windows.Storage/win_storage_native_Windows_Storage_FileIO_stubs.cpp delete mode 100644 src/Windows.Storage/win_storage_native_Windows_Storage_StorageFile_stubs.cpp delete mode 100644 src/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder_stubs.cpp delete mode 100644 src/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider_stubs.cpp rename targets/AzureRTOS/ST/ORGPAL_PALTHREE/{target_windows_storage_config.h => target_storage_config.h} (62%) delete mode 100644 targets/AzureRTOS/_common/include/Target_Windows_Storage.h rename targets/ChibiOS/{ORGPAL_PALX/target_windows_storage_config.h => ORGPAL_PALTHREE/target_storage_config.h} (62%) rename targets/ChibiOS/{ORGPAL_PALTHREE/target_windows_storage_config.h => ORGPAL_PALX/target_storage_config.h} (62%) rename targets/ChibiOS/ST_STM32F769I_DISCOVERY/{target_windows_storage_config.h => target_storage_config.h} (52%) rename targets/FreeRTOS/NXP/{_fatfs => _FatFs}/diskio.c (100%) rename targets/{win32/Include/Target_Windows_Storage.h => FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.cpp} (55%) create mode 100644 targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.h rename targets/FreeRTOS/NXP/{_fatfs => _FatFs}/ffconf.h (100%) rename targets/FreeRTOS/NXP/{_fatfs => _FatFs}/ffsystem.c (100%) rename targets/FreeRTOS/NXP/{_fatfs => _FatFs}/fsl_sd_disk.c (100%) rename targets/FreeRTOS/NXP/{_fatfs => _FatFs}/fsl_sd_disk.h (100%) delete mode 100644 targets/FreeRTOS/NXP/_common/Target_Windows_Storage.c delete mode 100644 targets/FreeRTOS/NXP/_include/Target_Windows_Storage.h delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard.cpp delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFile.cpp delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder.cpp delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider.cpp delete mode 100644 targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_target.h delete mode 100644 targets/TI_SimpleLink/_include/Target_Windows_Storage.h diff --git a/CMake/Modules/FindNF_NativeAssemblies.cmake b/CMake/Modules/FindNF_NativeAssemblies.cmake index bf697344d3..db34e38fa3 100644 --- a/CMake/Modules/FindNF_NativeAssemblies.cmake +++ b/CMake/Modules/FindNF_NativeAssemblies.cmake @@ -29,7 +29,6 @@ option(API_System.Device.Pwm "option for System.Devic option(API_System.IO.Ports "option for System.IO.Ports API") option(API_System.Device.Spi "option for System.Device.Spi API") option(API_System.Runtime.Serialization "option for System.Runtime.Serialization API") -option(API_Windows.Storage "option for Windows.Storage") option(API_nanoFramework.Graphics "option for nanoFramework.Graphics") option(API_nanoFramework.Device.Bluetooth "option for nanoFramework.Device.Bluetooth") option(API_System.Device.UsbStream "option for System.Device.UsbStream API") @@ -453,12 +452,6 @@ if(API_System.Device.UsbStream) PerformSettingsForApiEntry("System.Device.UsbStream") endif() -# Windows.Storage -if(API_Windows.Storage) - ##### API name here (doted name) - PerformSettingsForApiEntry("Windows.Storage") -endif() - # Interop assemblies ParseInteropAssemblies() diff --git a/CMake/Modules/FindSystem.IO.FileSystem.cmake b/CMake/Modules/FindSystem.IO.FileSystem.cmake index 21ba465382..0f3316c095 100644 --- a/CMake/Modules/FindSystem.IO.FileSystem.cmake +++ b/CMake/Modules/FindSystem.IO.FileSystem.cmake @@ -8,6 +8,7 @@ set(BASE_PATH_FOR_THIS_MODULE ${BASE_PATH_FOR_CLASS_LIBRARIES_MODULES}/System.IO if(RTOS_FREERTOS_CHECK) set(PROJECT_COMMON_PATH ${PROJECT_SOURCE_DIR}/targets/FreeRTOS/NXP/_common) + set(FATFS_PLATFORM ${PROJECT_SOURCE_DIR}/targets/FreeRTOS/NXP/_FatFs) else() set(PROJECT_COMMON_PATH ${PROJECT_SOURCE_DIR}/targets/${RTOS}/_common) endif() @@ -75,6 +76,7 @@ foreach(SRC_FILE ${System.IO.FileSystem_SRCS}) # FatFs ${CMAKE_SOURCE_DIR}/targets/${RTOS}/_FatFs + ${FATFS_PLATFORM} CMAKE_FIND_ROOT_PATH_BOTH ) diff --git a/CMake/Modules/FindWindows.Storage.cmake b/CMake/Modules/FindWindows.Storage.cmake deleted file mode 100644 index 43d3ce3ce5..0000000000 --- a/CMake/Modules/FindWindows.Storage.cmake +++ /dev/null @@ -1,63 +0,0 @@ -# -# Copyright (c) .NET Foundation and Contributors -# See LICENSE file in the project root for full license information. -# - -include(FetchContent) -FetchContent_GetProperties(fatfs) - -# native code directory -set(BASE_PATH_FOR_THIS_MODULE "${BASE_PATH_FOR_CLASS_LIBRARIES_MODULES}/Windows.Storage") - - -# set include directories -if(RTOS_CHIBIOS_CHECK) - #list(APPEND Windows.Storage_INCLUDE_DIRS ${chibios_SOURCE_DIR}/ext/fatfs/src) - list(APPEND Windows.Storage_INCLUDE_DIRS ${fatfs_SOURCE_DIR}/source) -elseif(RTOS_ESP32_CHECK) - # TODO: this needs to be changed so it's not platform & target dependent -elseif(RTOS_FREERTOS_CHECK) - list(APPEND Windows.Storage_INCLUDE_DIRS ${fatfs_SOURCE_DIR}/source) - # TODO: this needs to be changed so it's not platform & target dependent -endif() - -list(APPEND Windows.Storage_INCLUDE_DIRS ${TARGET_BASE_LOCATION}/Include) -list(APPEND Windows.Storage_INCLUDE_DIRS ${BASE_PATH_FOR_THIS_MODULE}) -list(APPEND Windows.Storage_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/Windows.Storage) - -# source files -set(Windows.Storage_SRCS - - win_storage_native_Windows_Storage_FileIO.cpp - win_storage_native_Windows_Storage_StorageFile.cpp - win_storage_native_Windows_Storage_StorageFolder.cpp - win_storage_native_Windows_Storage_StorageProvider.cpp - win_storage_native_Windows_Storage_Devices_SDCard.cpp - win_storage_native.cpp -) - -foreach(SRC_FILE ${Windows.Storage_SRCS}) - - set(Windows.Storage_SRC_FILE SRC_FILE-NOTFOUND) - - find_file(Windows.Storage_SRC_FILE ${SRC_FILE} - PATHS - - ${BASE_PATH_FOR_THIS_MODULE} - ${TARGET_BASE_LOCATION} - ${CMAKE_SOURCE_DIR}/src/Windows.Storage - - CMAKE_FIND_ROOT_PATH_BOTH - ) - - if (BUILD_VERBOSE) - message("${SRC_FILE} >> ${Windows.Storage_SRC_FILE}") - endif() - - list(APPEND Windows.Storage_SOURCES ${Windows.Storage_SRC_FILE}) - -endforeach() - -include(FindPackageHandleStandardArgs) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Windows.Storage DEFAULT_MSG Windows.Storage_INCLUDE_DIRS Windows.Storage_SOURCES) diff --git a/CMake/Modules/FreeRTOS_IMXRT10xx_GCC_options.cmake b/CMake/Modules/FreeRTOS_IMXRT10xx_GCC_options.cmake index ffbd38063b..9b145d0812 100644 --- a/CMake/Modules/FreeRTOS_IMXRT10xx_GCC_options.cmake +++ b/CMake/Modules/FreeRTOS_IMXRT10xx_GCC_options.cmake @@ -33,8 +33,6 @@ macro(nf_set_compile_options) # this series has FPU target_compile_definitions(${NFSCO_TARGET} PUBLIC -DPLATFORM_ARM -DCORTEX_USE_FPU=TRUE -DUSE_FPU=TRUE) - # temporarily force inclusion of Windows Storage headers - target_compile_definitions(${NFSCO_TARGET} PUBLIC -DINCLUDE_WINDOWS_STORAGE) endmacro() diff --git a/CMakeLists.txt b/CMakeLists.txt index 4235a14065..f3761d4e27 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,16 +309,11 @@ if(NF_FEATURE_HAS_SDCARD) # this feature currently is supported only on ChibiOS, iMX.RT FreeRTOS and ESP32 FreeRTOS if(NOT RTOS_CHIBIOS_CHECK AND NOT RTOS_FREERTOS_CHECK AND NOT RTOS_ESP32_CHECK) - message(FATAL_ERROR "Support for SD Card is only available for ChibiOS Cortex-M targets, iMX.RT FreeRTOS and ESP32 targets..") + message(FATAL_ERROR "Support for SD Card is only available for ChibiOS Cortex-M targets, iMX.RT FreeRTOS and ESP32 targets.") endif() - if(RTOS_FREERTOS_CHECK) - # ONLY FOR FREERTOS+NXP force inclusion of Windows.Storage API - set(API_Windows.Storage ON CACHE INTERNAL "Forcing Windows.Storage API option to ON") - else() - # all the others RTOSes: force inclusion of System.IO.FileSystem API - set(API_System.IO.FileSystem ON CACHE INTERNAL "Forcing System.IO.FileSystem API option to ON") - endif() + # all RTOSes: force inclusion of System.IO.FileSystem API + set(API_System.IO.FileSystem ON CACHE INTERNAL "Forcing System.IO.FileSystem API option to ON") message(STATUS "Support for SD Card is included") @@ -668,7 +663,6 @@ if( API_nanoFramework.Device.OneWire OR API_System.Device.Gpio OR API_System.IO.Ports OR API_nanoFramework.Device.Can OR - API_Windows.Storage OR API_System.IO.FileSystem) # these APIs requires nanoFramework.Runtime.Events diff --git a/src/HAL/Include/nanoHAL_System_IO_FileSystem.h b/src/HAL/Include/nanoHAL_System_IO_FileSystem.h index d33584f27a..5b8d64eb13 100644 --- a/src/HAL/Include/nanoHAL_System_IO_FileSystem.h +++ b/src/HAL/Include/nanoHAL_System_IO_FileSystem.h @@ -45,18 +45,6 @@ typedef enum StorageEventType #define DRIVE_LETTER_LENGTH sizeof(INDEX0_DRIVE_LETTER) #define DRIVE_PATH_LENGTH sizeof(INDEX0_DRIVE_PATH) -///////////////////////////////////////////////////////////////////////////////////////// -// !!! KEEP IN SYNC WITH Windows.Storage.CreationCollisionOption (in managed code) !!! // -///////////////////////////////////////////////////////////////////////////////////////// - -enum CreationCollisionOption -{ - CreationCollisionOption_GenerateUniqueName = 0, - CreationCollisionOption_ReplaceExisting, - CreationCollisionOption_FailIfExists, - CreationCollisionOption_OpenIfExists -}; - #ifdef __cplusplus extern "C" { diff --git a/src/HAL/Include/nanoHAL_Windows_Storage.h b/src/HAL/Include/nanoHAL_Windows_Storage.h deleted file mode 100644 index 37407009ed..0000000000 --- a/src/HAL/Include/nanoHAL_Windows_Storage.h +++ /dev/null @@ -1,74 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// -#ifndef NANOHAL_WINDOWS_STORAGE_H -#define NANOHAL_WINDOWS_STORAGE_H - -///////////////////////////////////////////////////////////////////////// -// TO BE RENAMED TO SYS.IO.FILESYSTEM after removal of Windows.Storage // -///////////////////////////////////////////////////////////////////////// - -// driver letters and paths -// drive letter for SD Card -#define INDEX0_DRIVE_LETTER "D:" -#define INDEX0_DRIVE_PATH INDEX0_DRIVE_LETTER "\\" -// drive letter for USB mass storage device -#define INDEX1_DRIVE_LETTER "E:" -#define INDEX1_DRIVE_PATH INDEX1_DRIVE_LETTER "\\" -// spare drive letter -#define INDEX2_DRIVE_LETTER "F:" -#define INDEX2_DRIVE_PATH INDEX2_DRIVE_LETTER "\\" -// drive letter for internal drive (SPIFFS) -#define INTERNAL_DRIVE0_LETTER "I:" -#define INTERNAL_DRIVE0_PATH INTERNAL_DRIVE0_LETTER "\\" -// drive letter for second internal drive (SPIFFS) -#define INTERNAL_DRIVE1_LETTER "J:" -#define INTERNAL_DRIVE1_PATH INTERNAL_DRIVE1_LETTER "\\" - -////////////////////////////////////////////////////////////////////////// -// Keep in sync with StorageEventManager.StorageEventType in managed code -// Storage events sub-categories -////////////////////////////////////////////////////////////////////////// -typedef enum StorageEventType -{ - // INVALID - StorageEventType_Invalid = 0x00, - - // removable device inserted - StorageEventType_RemovableDeviceInsertion = 0x01, - - // removable device removed - StorageEventType_RemovableDeviceRemoval = 0x02, - -} StorageEventType; - -// constants to be used throughout the code -#define SUPPORTED_DRIVES_COUNT (2) -#define DRIVE_LETTER_LENGTH sizeof(INDEX0_DRIVE_LETTER) -#define DRIVE_PATH_LENGTH sizeof(INDEX0_DRIVE_PATH) - -///////////////////////////////////////////////////////////////////////////////////////// -// !!! KEEP IN SYNC WITH Windows.Storage.CreationCollisionOption (in managed code) !!! // -///////////////////////////////////////////////////////////////////////////////////////// - -enum CreationCollisionOption -{ - CreationCollisionOption_GenerateUniqueName = 0, - CreationCollisionOption_ReplaceExisting, - CreationCollisionOption_FailIfExists, - CreationCollisionOption_OpenIfExists -}; - -#ifdef __cplusplus -extern "C" -{ -#endif - - void Target_FileSystemInit(void); - -#ifdef __cplusplus -} -#endif - -#endif // NANOHAL_WINDOWS_STORAGE_H diff --git a/src/HAL/Include/nanoHAL_v2.h b/src/HAL/Include/nanoHAL_v2.h index 233a66ef94..46dde0e3a1 100644 --- a/src/HAL/Include/nanoHAL_v2.h +++ b/src/HAL/Include/nanoHAL_v2.h @@ -414,10 +414,6 @@ extern "C" #include #include -#ifdef INCLUDE_WINDOWS_STORAGE -#include -#else #include -#endif #endif // NANOHAL_V2_H diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp index 1bb8065dab..863ee56762 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp @@ -6,7 +6,6 @@ #include "nf_sys_io_filesystem.h" #include -#include extern SYSTEMTIME GetDateTime(uint16_t date, uint16_t time); extern void CombinePathAndName(char *outpath, const char *path1, const char *path2); diff --git a/src/Windows.Storage/Windows.Storage.vcxproj b/src/Windows.Storage/Windows.Storage.vcxproj deleted file mode 100644 index 72c0e6a6d1..0000000000 --- a/src/Windows.Storage/Windows.Storage.vcxproj +++ /dev/null @@ -1,166 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - - - - - - - - - - - - {3cae286f-0ef8-45e4-8111-afa0aa9282b4} - Win32Proj - Windows.Storage - 10.0 - - - - StaticLibrary - true - v143 - Unicode - - - StaticLibrary - false - v143 - true - Unicode - - - StaticLibrary - true - v143 - Unicode - - - StaticLibrary - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - $(BinDir) - $(IntDir) - - - $(BinDir) - $(IntDir) - - - $(BinDir) - $(IntDir) - - - $(BinDir) - $(IntDir) - - - - - - Level3 - Disabled - _DEBUG;_LIB;%(PreprocessorDefinitions) - ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) - - - Windows - - - - - - - Level3 - Disabled - _DEBUG;_LIB;%(PreprocessorDefinitions) - ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) - - - Windows - - - - - Level3 - - - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) - - - Windows - true - true - - - - - Level3 - - - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) - - - Windows - true - true - - - - - - \ No newline at end of file diff --git a/src/Windows.Storage/Windows.Storage.vcxproj.filters b/src/Windows.Storage/Windows.Storage.vcxproj.filters deleted file mode 100644 index 10064caf71..0000000000 --- a/src/Windows.Storage/Windows.Storage.vcxproj.filters +++ /dev/null @@ -1,42 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - \ No newline at end of file diff --git a/src/Windows.Storage/win_storage_native.cpp b/src/Windows.Storage/win_storage_native.cpp deleted file mode 100644 index e277ba8dfc..0000000000 --- a/src/Windows.Storage/win_storage_native.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -// clang-format off - -static const CLR_RT_MethodHandler method_lookup[] = -{ - nullptr, - nullptr, - nullptr, - nullptr, - Library_win_storage_native_Windows_Storage_Devices_SDCard::MountMMCNative___STATIC__VOID__BOOLEAN, - Library_win_storage_native_Windows_Storage_Devices_SDCard::MountSpiNative___STATIC__VOID__I4__I4, - Library_win_storage_native_Windows_Storage_Devices_SDCard::UnmountNative___STATIC__VOID, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - Library_win_storage_native_Windows_Storage_FileIO::WriteBytes___STATIC__VOID__WindowsStorageIStorageFile__SZARRAY_U1, - Library_win_storage_native_Windows_Storage_FileIO::WriteText___STATIC__VOID__WindowsStorageIStorageFile__STRING, - Library_win_storage_native_Windows_Storage_FileIO::ReadBufferNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_SZARRAY_U1, - Library_win_storage_native_Windows_Storage_FileIO::ReadTextNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_STRING, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - Library_win_storage_native_Windows_Storage_StorageFile::DeleteFileNative___VOID, - Library_win_storage_native_Windows_Storage_StorageFile::RenameFileNative___VOID__STRING, - nullptr, - nullptr, - Library_win_storage_native_Windows_Storage_StorageFile::GetFileFromPathNative___STATIC__WindowsStorageStorageFile__STRING__STRING, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - Library_win_storage_native_Windows_Storage_StorageFolder::GetRemovableStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, - Library_win_storage_native_Windows_Storage_StorageFolder::GetInternalStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, - Library_win_storage_native_Windows_Storage_StorageFolder::GetStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder, - Library_win_storage_native_Windows_Storage_StorageFolder::GetStorageFilesNative___SZARRAY_WindowsStorageStorageFile__U4__U4, - Library_win_storage_native_Windows_Storage_StorageFolder::CreateFileNative___WindowsStorageStorageFile__STRING__U4, - Library_win_storage_native_Windows_Storage_StorageFolder::CreateFolderNative___WindowsStorageStorageFolder__STRING__U4, - Library_win_storage_native_Windows_Storage_StorageFolder::DeleteFolderNative___VOID, - Library_win_storage_native_Windows_Storage_StorageFolder::RenameFolderNative___VOID__STRING, - Library_win_storage_native_Windows_Storage_StorageFolder::GetFolderNative___WindowsStorageStorageFolder__STRING, - NULL, - NULL, - Library_win_storage_native_Windows_Storage_StorageProvider::FormatVolume___VOID__STRING, - NULL, -}; - -const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Storage = -{ - "Windows.Storage", - 0xF0C37E1B, - method_lookup, - { 100, 0, 3, 0 } -}; - -// clang-format on diff --git a/src/Windows.Storage/win_storage_native.h b/src/Windows.Storage/win_storage_native.h deleted file mode 100644 index 2e1816fb20..0000000000 --- a/src/Windows.Storage/win_storage_native.h +++ /dev/null @@ -1,109 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#ifndef WIN_STORAGE_NATIVE_H -#define WIN_STORAGE_NATIVE_H - -#include -#include - -typedef enum __nfpack KnownFolderId -{ - KnownFolderId_RemovableDevices = 10, - KnownFolderId_InternalDevices = 14, -} KnownFolderId; - -struct Library_win_storage_native_Windows_Storage_Devices_SDCard -{ - static const int FIELD_STATIC___mounted = 0; - - NANOCLR_NATIVE_DECLARE(MountMMCNative___STATIC__VOID__BOOLEAN); - NANOCLR_NATIVE_DECLARE(MountSpiNative___STATIC__VOID__I4__I4); - NANOCLR_NATIVE_DECLARE(UnmountNative___STATIC__VOID); - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_FileIO -{ - NANOCLR_NATIVE_DECLARE(WriteBytes___STATIC__VOID__WindowsStorageIStorageFile__SZARRAY_U1); - NANOCLR_NATIVE_DECLARE(WriteText___STATIC__VOID__WindowsStorageIStorageFile__STRING); - NANOCLR_NATIVE_DECLARE(ReadBufferNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_SZARRAY_U1); - NANOCLR_NATIVE_DECLARE(ReadTextNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_STRING); - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_RemovableDeviceEventArgs -{ - static const int FIELD___path = 1; - static const int FIELD___event = 2; - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_StorageEventManager -{ - static const int FIELD_STATIC__RemovableDeviceInserted = 1; - static const int FIELD_STATIC__RemovableDeviceRemoved = 2; - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_StorageEventManager__StorageEvent -{ - static const int FIELD__EventType = 3; - static const int FIELD__DriveIndex = 4; - static const int FIELD__Time = 5; - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_StorageFile -{ - static const int FIELD___dateCreated = 1; - static const int FIELD___name = 2; - static const int FIELD___path = 3; - - NANOCLR_NATIVE_DECLARE(DeleteFileNative___VOID); - NANOCLR_NATIVE_DECLARE(RenameFileNative___VOID__STRING); - NANOCLR_NATIVE_DECLARE(GetFileFromPathNative___STATIC__WindowsStorageStorageFile__STRING__STRING); - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_StorageFolder -{ - static const int FIELD___knownFolderId = 1; - static const int FIELD___dateCreated = 2; - static const int FIELD___name = 3; - static const int FIELD___path = 4; - - NANOCLR_NATIVE_DECLARE(GetRemovableStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder); - NANOCLR_NATIVE_DECLARE(GetInternalStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder); - NANOCLR_NATIVE_DECLARE(GetStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder); - NANOCLR_NATIVE_DECLARE(GetStorageFilesNative___SZARRAY_WindowsStorageStorageFile__U4__U4); - NANOCLR_NATIVE_DECLARE(CreateFileNative___WindowsStorageStorageFile__STRING__U4); - NANOCLR_NATIVE_DECLARE(CreateFolderNative___WindowsStorageStorageFolder__STRING__U4); - NANOCLR_NATIVE_DECLARE(DeleteFolderNative___VOID); - NANOCLR_NATIVE_DECLARE(RenameFolderNative___VOID__STRING); - NANOCLR_NATIVE_DECLARE(GetFolderNative___WindowsStorageStorageFolder__STRING); - - //--// -}; - -struct Library_win_storage_native_Windows_Storage_StorageProvider -{ - static const int FIELD___displayName = 1; - static const int FIELD___id = 2; - - NANOCLR_NATIVE_DECLARE(FormatVolume___VOID__STRING); - - //--// -}; - -extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Storage; - -#endif // WIN_STORAGE_NATIVE_H diff --git a/src/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard_stubs.cpp b/src/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard_stubs.cpp deleted file mode 100644 index dd59c79ce4..0000000000 --- a/src/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard_stubs.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::MountMMCNative___STATIC__VOID__BOOLEAN( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::MountSpiNative___STATIC__VOID__I4__I4( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::UnmountNative___STATIC__VOID( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/src/Windows.Storage/win_storage_native_Windows_Storage_FileIO_stubs.cpp b/src/Windows.Storage/win_storage_native_Windows_Storage_FileIO_stubs.cpp deleted file mode 100644 index 0962187277..0000000000 --- a/src/Windows.Storage/win_storage_native_Windows_Storage_FileIO_stubs.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - WriteBytes___STATIC__VOID__WindowsStorageIStorageFile__SZARRAY_U1(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO::WriteText___STATIC__VOID__WindowsStorageIStorageFile__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - ReadBufferNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_SZARRAY_U1(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - ReadTextNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_STRING(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFile_stubs.cpp b/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFile_stubs.cpp deleted file mode 100644 index 1d7faac68e..0000000000 --- a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFile_stubs.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile::DeleteFileNative___VOID(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile::RenameFileNative___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile:: - GetFileFromPathNative___STATIC__WindowsStorageStorageFile__STRING__STRING(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder_stubs.cpp b/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder_stubs.cpp deleted file mode 100644 index eae2b52650..0000000000 --- a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder_stubs.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetRemovableStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetInternalStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetStorageFilesNative___SZARRAY_WindowsStorageStorageFile__U4__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - CreateFileNative___WindowsStorageStorageFile__STRING__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - CreateFolderNative___WindowsStorageStorageFolder__STRING__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::DeleteFolderNative___VOID(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::RenameFolderNative___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::GetFolderNative___WindowsStorageStorageFolder__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider_stubs.cpp b/src/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider_stubs.cpp deleted file mode 100644 index c7a64649ad..0000000000 --- a/src/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider_stubs.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native.h" - -HRESULT Library_win_storage_native_Windows_Storage_StorageProvider::FormatVolume___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_windows_storage_config.h b/targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_storage_config.h similarity index 62% rename from targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_windows_storage_config.h rename to targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_storage_config.h index 7bc1934cbc..170480e58a 100644 --- a/targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_windows_storage_config.h +++ b/targets/AzureRTOS/ST/ORGPAL_PALTHREE/target_storage_config.h @@ -3,11 +3,16 @@ // See LICENSE file in the project root for full license information. // +#ifndef _TARGET_STORAGE_CONFIG_H_ +#define _TARGET_STORAGE_CONFIG_H_ + // the following macro maps the SD card driver #define SD_CARD_DRIVER SDCD1 -// maps the SD Card detect GPIO definition (in Target_Windows_Storage.c) to board GPIO line (in board.h) +// maps the SD Card detect GPIO definition (in target config storage) to board GPIO line (in board.h) #define SDCARD_LINE_DETECT LINE_SD_CARD_DETECT // the following macro maps the USB mass storage device driver #define USB_MSD_DRIVER USBHD2 + +#endif // _TARGET_STORAGE_CONFIG_H_ diff --git a/targets/AzureRTOS/_common/include/Target_Windows_Storage.h b/targets/AzureRTOS/_common/include/Target_Windows_Storage.h deleted file mode 100644 index 7a235c1dcf..0000000000 --- a/targets/AzureRTOS/_common/include/Target_Windows_Storage.h +++ /dev/null @@ -1,9 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#ifndef _TARGET_WINDOWS_STORAGE_H_ -#define _TARGET_WINDOWS_STORAGE_H_ - -#endif //_TARGET_WINDOWS_STORAGE_H_ diff --git a/targets/ChibiOS/ORGPAL_PALTHREE/target_FileSystem.cpp b/targets/ChibiOS/ORGPAL_PALTHREE/target_FileSystem.cpp index a158f1cc6d..b7bfef7bb1 100644 --- a/targets/ChibiOS/ORGPAL_PALTHREE/target_FileSystem.cpp +++ b/targets/ChibiOS/ORGPAL_PALTHREE/target_FileSystem.cpp @@ -18,7 +18,7 @@ extern FILESYSTEM_DRIVER_INTERFACE g_FATFS_FILE_SYSTEM_DriverInterface; extern STREAM_DRIVER_INTERFACE g_LITTLEFS_STREAM_DriverInterface; #if HAL_USE_SDC -#include +#include extern "C" void SdCardDetectCallback(void *arg); #endif diff --git a/targets/ChibiOS/ORGPAL_PALX/target_windows_storage_config.h b/targets/ChibiOS/ORGPAL_PALTHREE/target_storage_config.h similarity index 62% rename from targets/ChibiOS/ORGPAL_PALX/target_windows_storage_config.h rename to targets/ChibiOS/ORGPAL_PALTHREE/target_storage_config.h index 7bc1934cbc..776135b6f1 100644 --- a/targets/ChibiOS/ORGPAL_PALX/target_windows_storage_config.h +++ b/targets/ChibiOS/ORGPAL_PALTHREE/target_storage_config.h @@ -3,11 +3,16 @@ // See LICENSE file in the project root for full license information. // +#ifndef _TARGET_STORAGE_CONFIG_H_ +#define _TARGET_STORAGE_CONFIG_H_ + // the following macro maps the SD card driver #define SD_CARD_DRIVER SDCD1 -// maps the SD Card detect GPIO definition (in Target_Windows_Storage.c) to board GPIO line (in board.h) +// maps the SD Card detect GPIO definition (target storage config) to board GPIO line (in board.h) #define SDCARD_LINE_DETECT LINE_SD_CARD_DETECT // the following macro maps the USB mass storage device driver #define USB_MSD_DRIVER USBHD2 + +#endif // _TARGET_STORAGE_CONFIG_H_ diff --git a/targets/ChibiOS/ORGPAL_PALX/target_FileSystem.cpp b/targets/ChibiOS/ORGPAL_PALX/target_FileSystem.cpp index 102fcd3049..fcc2f6df56 100644 --- a/targets/ChibiOS/ORGPAL_PALX/target_FileSystem.cpp +++ b/targets/ChibiOS/ORGPAL_PALX/target_FileSystem.cpp @@ -18,7 +18,7 @@ extern FILESYSTEM_DRIVER_INTERFACE g_FATFS_FILE_SYSTEM_DriverInterface; extern STREAM_DRIVER_INTERFACE g_LITTLEFS_STREAM_DriverInterface; #if HAL_USE_SDC -#include +#include extern "C" void SdCardDetectCallback(void *arg); #endif diff --git a/targets/ChibiOS/ORGPAL_PALTHREE/target_windows_storage_config.h b/targets/ChibiOS/ORGPAL_PALX/target_storage_config.h similarity index 62% rename from targets/ChibiOS/ORGPAL_PALTHREE/target_windows_storage_config.h rename to targets/ChibiOS/ORGPAL_PALX/target_storage_config.h index 7bc1934cbc..776135b6f1 100644 --- a/targets/ChibiOS/ORGPAL_PALTHREE/target_windows_storage_config.h +++ b/targets/ChibiOS/ORGPAL_PALX/target_storage_config.h @@ -3,11 +3,16 @@ // See LICENSE file in the project root for full license information. // +#ifndef _TARGET_STORAGE_CONFIG_H_ +#define _TARGET_STORAGE_CONFIG_H_ + // the following macro maps the SD card driver #define SD_CARD_DRIVER SDCD1 -// maps the SD Card detect GPIO definition (in Target_Windows_Storage.c) to board GPIO line (in board.h) +// maps the SD Card detect GPIO definition (target storage config) to board GPIO line (in board.h) #define SDCARD_LINE_DETECT LINE_SD_CARD_DETECT // the following macro maps the USB mass storage device driver #define USB_MSD_DRIVER USBHD2 + +#endif // _TARGET_STORAGE_CONFIG_H_ diff --git a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_windows_storage_config.h b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_storage_config.h similarity index 52% rename from targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_windows_storage_config.h rename to targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_storage_config.h index 4974ef05fd..44498689ec 100644 --- a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_windows_storage_config.h +++ b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_storage_config.h @@ -3,8 +3,13 @@ // See LICENSE file in the project root for full license information. // +#ifndef _TARGET_STORAGE_CONFIG_H_ +#define _TARGET_STORAGE_CONFIG_H_ + // maps the SD Card driver #define SD_CARD_DRIVER SDCD2 -// maps the SD Card detect GPIO definition (in Target_Windows_Storage.c) to board GPIO line (in board.h) +// maps the SD Card detect GPIO definition (target storage config) to board GPIO line (in board.h) #define SDCARD_LINE_DETECT LINE_SD_DETECT + +#endif // _TARGET_STORAGE_CONFIG_H_ diff --git a/targets/ChibiOS/_common/Target_System_IO_FileSystem.c b/targets/ChibiOS/_common/Target_System_IO_FileSystem.c index 6da207a831..e1bc6688df 100644 --- a/targets/ChibiOS/_common/Target_System_IO_FileSystem.c +++ b/targets/ChibiOS/_common/Target_System_IO_FileSystem.c @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/targets/ESP32/_common/Target_System_IO_FileSystem.c b/targets/ESP32/_common/Target_System_IO_FileSystem.c index 1d82762774..f6e24278f8 100644 --- a/targets/ESP32/_common/Target_System_IO_FileSystem.c +++ b/targets/ESP32/_common/Target_System_IO_FileSystem.c @@ -36,8 +36,8 @@ #include -// #include -#include +#include +#include #if !defined(CONFIG_IDF_TARGET_ESP32C3) && (HAL_USE_SDC == TRUE) diff --git a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/CMakePresets.json b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/CMakePresets.json index 307bbfaac0..6ed1d80f7c 100644 --- a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/CMakePresets.json +++ b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/CMakePresets.json @@ -25,7 +25,7 @@ "LWIP_VERSION": "", "NF_BUILD_RTM": "OFF", "NF_FEATURE_DEBUGGER": "ON", - "NF_FEATURE_HAS_SDCARD": "ON", + "NF_FEATURE_HAS_SDCARD": "OFF", "NF_FEATURE_RTC": "ON", "NF_FEATURE_HAS_CONFIG_BLOCK": "ON", "NF_SECURITY_MBEDTLS": "OFF", diff --git a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/nanoCLR/main.c b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/nanoCLR/main.c index 3b24eecd10..756df36803 100644 --- a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/nanoCLR/main.c +++ b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/nanoCLR/main.c @@ -20,7 +20,7 @@ #include "Target_BlockStorage_iMXRTFlashDriver.h" #include "CLR_Startup_Thread.h" -extern void SdCardThread(void * argument); +// TODO extern void SdCardThread(void * argument); // configure heap memory __attribute__((section(".noinit.$SRAM_OC.ucHeap"))) uint8_t ucHeap[configTOTAL_HEAP_SIZE]; @@ -40,10 +40,11 @@ int main(void) xTaskCreate(ReceiverThread, "ReceiverThread", 2048, NULL, configMAX_PRIORITIES - 1, NULL); xTaskCreate(CLRStartupThread, "CLRStartupThread", 8192, NULL, configMAX_PRIORITIES - 2, NULL); - xTaskCreate(SdCardThread, "SDCardThread", configMINIMAL_STACK_SIZE + 100, NULL, configMAX_PRIORITIES - 2, NULL); + // TODO xTaskCreate(SdCardThread, "SDCardThread", configMINIMAL_STACK_SIZE + 100, NULL, configMAX_PRIORITIES - 2, + // NULL); vTaskStartScheduler(); for (;;) ; return 0; -} \ No newline at end of file +} diff --git a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/target_FileSystem.cpp b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/target_FileSystem.cpp index fb9db56c94..e22cf48e1c 100644 --- a/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/target_FileSystem.cpp +++ b/targets/FreeRTOS/NXP/NXP_MIMXRT1060_EVK/target_FileSystem.cpp @@ -18,7 +18,7 @@ // extern FILESYSTEM_DRIVER_INTERFACE g_FATFS_FILE_SYSTEM_DriverInterface; // #if HAL_USE_SDC -// #include +// #include // extern "C" void SdCardDetectCallback(void *arg); // #endif @@ -65,8 +65,7 @@ void FS_AddVolumes() void FS_MountRemovableVolumes() { -// #if HAL_USE_SDC -// SdCardDetectCallback(&SD_CARD_DRIVER); -// #endif - + // #if HAL_USE_SDC + // SdCardDetectCallback(&SD_CARD_DRIVER); + // #endif } diff --git a/targets/FreeRTOS/NXP/_fatfs/diskio.c b/targets/FreeRTOS/NXP/_FatFs/diskio.c similarity index 100% rename from targets/FreeRTOS/NXP/_fatfs/diskio.c rename to targets/FreeRTOS/NXP/_FatFs/diskio.c diff --git a/targets/win32/Include/Target_Windows_Storage.h b/targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.cpp similarity index 55% rename from targets/win32/Include/Target_Windows_Storage.h rename to targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.cpp index fb818bf872..5e883c48b8 100644 --- a/targets/win32/Include/Target_Windows_Storage.h +++ b/targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.cpp @@ -3,7 +3,4 @@ // See LICENSE file in the project root for full license information. // -#ifndef TARGET_WINDOWS_STORAGE_H -#define TARGET_WINDOWS_STORAGE_H - -#endif //TARGET_WINDOWS_STORAGE_H +// TODO: complete migration to System.IO.FileSystem diff --git a/targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.h b/targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.h new file mode 100644 index 0000000000..d73e53ee59 --- /dev/null +++ b/targets/FreeRTOS/NXP/_FatFs/fatfs_FS_Driver.h @@ -0,0 +1,15 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +#ifndef FATFS_FS_DRIVER_H +#define FATFS_FS_DRIVER_H + +#include +#include +#include + +// TODO: complete migration to System.IO.FileSystem + +#endif // FATFS_FS_DRIVER_H diff --git a/targets/FreeRTOS/NXP/_fatfs/ffconf.h b/targets/FreeRTOS/NXP/_FatFs/ffconf.h similarity index 100% rename from targets/FreeRTOS/NXP/_fatfs/ffconf.h rename to targets/FreeRTOS/NXP/_FatFs/ffconf.h diff --git a/targets/FreeRTOS/NXP/_fatfs/ffsystem.c b/targets/FreeRTOS/NXP/_FatFs/ffsystem.c similarity index 100% rename from targets/FreeRTOS/NXP/_fatfs/ffsystem.c rename to targets/FreeRTOS/NXP/_FatFs/ffsystem.c diff --git a/targets/FreeRTOS/NXP/_fatfs/fsl_sd_disk.c b/targets/FreeRTOS/NXP/_FatFs/fsl_sd_disk.c similarity index 100% rename from targets/FreeRTOS/NXP/_fatfs/fsl_sd_disk.c rename to targets/FreeRTOS/NXP/_FatFs/fsl_sd_disk.c diff --git a/targets/FreeRTOS/NXP/_fatfs/fsl_sd_disk.h b/targets/FreeRTOS/NXP/_FatFs/fsl_sd_disk.h similarity index 100% rename from targets/FreeRTOS/NXP/_fatfs/fsl_sd_disk.h rename to targets/FreeRTOS/NXP/_FatFs/fsl_sd_disk.h diff --git a/targets/FreeRTOS/NXP/_common/CMakeLists.txt b/targets/FreeRTOS/NXP/_common/CMakeLists.txt index 9b5b05a4e9..95bdcb2521 100644 --- a/targets/FreeRTOS/NXP/_common/CMakeLists.txt +++ b/targets/FreeRTOS/NXP/_common/CMakeLists.txt @@ -83,11 +83,6 @@ if(NF_FEATURE_HAS_ACCESSIBLE_STORAGE) list(APPEND TARGET_NXP_COMMON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/targetHAL_StorageOperation.cpp) endif() -# have to include the Win.Storage target for NXP until it's completely migrated to the new file system -list(APPEND TARGET_NXP_COMMON_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/Target_Windows_Storage.c -) - # List of the required FatFs include files. list(APPEND TARGET_NXP_COMMON_INCLUDE_DIRS ${fatfs_SOURCE_DIR}/source) list(APPEND TARGET_NXP_COMMON_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/targets/FreeRTOS/NXP/_fatfs) diff --git a/targets/FreeRTOS/NXP/_common/Target_System_IO_FileSystem.c b/targets/FreeRTOS/NXP/_common/Target_System_IO_FileSystem.c index 1291f1daea..2906f1262f 100644 --- a/targets/FreeRTOS/NXP/_common/Target_System_IO_FileSystem.c +++ b/targets/FreeRTOS/NXP/_common/Target_System_IO_FileSystem.c @@ -12,3 +12,138 @@ extern void FS_UnmountVolume(const char *rootName); // need to declare this here as extern extern void PostManagedEvent(uint8_t category, uint8_t subCategory, uint16_t data1, uint32_t data2); + +// code ported from old Target_Windows_Storage.c +// TODO: complete migration to System.IO.FileSystem +// // #include "fsl_sd.h" + +// // // need to declare this here as extern +// // extern void PostManagedEvent(uint8_t category, uint8_t subCategory, uint16_t data1, uint32_t data2); + +// // #define SD_CARD_DRIVE_INDEX "0" +// // #define SD_CARD_DRIVE_INDEX_NUMERIC (0) + +// // /////////////////////////////////////////// +// // // code specific to SD Card + +// // // FS for SD Card mounted and ready +// // bool sdCardFileSystemReady; + +// // static FATFS sdCard_FS; + +// // /*! +// // * call back function for SD card detect. +// // * +// // * @param isInserted true, indicate the card is insert. +// // * false, indicate the card is remove. +// // * @param userData +// // */ +// // static void SDCARD_DetectCallBack(bool isInserted, void *userData); + +// // /*! Card descriptor. */ +// // sd_card_t g_sd; + +// // /*! SDMMC host detect card configuration */ +// // static const sdmmchost_detect_card_t s_sdCardDetect = { +// // #ifndef BOARD_SD_DETECT_TYPE +// // .cdType = kSDMMCHOST_DetectCardByGpioCD, +// // #else +// // .cdType = BOARD_SD_DETECT_TYPE, +// // #endif +// // .cdTimeOut_ms = (~0U), +// // .cardInserted = SDCARD_DetectCallBack, +// // .cardRemoved = SDCARD_DetectCallBack, +// // }; + +// // /*! SD card detect flag */ +// // static bool s_cardInserted = false; +// // /*! Card semaphore */ +// // static SemaphoreHandle_t s_CardDetectSemaphore = NULL; + +// // static void SDCARD_DetectCallBack(bool isInserted, void *userData) +// // { +// // (void)userData; +// // s_cardInserted = isInserted; +// // xSemaphoreGiveFromISR(s_CardDetectSemaphore, NULL); +// // } + +// // static void CardDetectTask(void *pvParameters) +// // { +// // (void)pvParameters; + +// // while (true) +// // { +// // if (!s_cardInserted) +// // { +// // /* power off card */ +// // SD_PowerOffCard(g_sd.host.base, g_sd.usrParam.pwr); +// // } + +// // /* take card detect semaphore */ +// // xSemaphoreTake(s_CardDetectSemaphore, portMAX_DELAY); +// // vTaskDelay(100 / portTICK_PERIOD_MS); +// // if (s_cardInserted) +// // { +// // //Card inserted. +// // /* power on the card */ +// // SD_PowerOnCard(g_sd.host.base, g_sd.usrParam.pwr); +// // /* Init card. */ +// // if (SD_CardInit(&g_sd)) +// // { +// // //SD card init failed. +// // continue; +// // } + +// // FRESULT err = f_mount(&sdCard_FS, "0", 1U); +// // if (err != FR_OK) { +// // vTaskDelay(1000 / portTICK_PERIOD_MS); +// // SD_CardDeinit(&g_sd); +// // continue; +// // } +// // sdCardFileSystemReady = true; + +// // // post event to managed app +// // PostManagedEvent( EVENT_STORAGE, 0, StorageEventType_RemovableDeviceInsertion, +// SD_CARD_DRIVE_INDEX_NUMERIC ); +// // } +// // else +// // { +// // SD_CardDeinit(&g_sd); + +// // //Card removed +// // sdCardFileSystemReady = false; + +// // // post event to managed app +// // PostManagedEvent( EVENT_STORAGE, 0, StorageEventType_RemovableDeviceRemoval, +// SD_CARD_DRIVE_INDEX_NUMERIC ); +// // } +// // } +// // } + +// // void SdCardThread(void * argument) +// // { +// // (void)argument; + +// // s_CardDetectSemaphore = xSemaphoreCreateBinary(); + +// // sdCardFileSystemReady = false; + +// // g_sd.host.base = SD_HOST_BASEADDR; +// // g_sd.host.sourceClock_Hz = SD_HOST_CLK_FREQ; +// // g_sd.usrParam.cd = &s_sdCardDetect; + +// // NVIC_SetPriority(SD_HOST_IRQ, 5U); + +// // /* SD host init function */ +// // if (SD_HostInit(&g_sd) != kStatus_Success) +// // { +// // //SD host init fail +// // vTaskDelete(NULL); +// // return; +// // } + +// // xTaskCreate(CardDetectTask, "CardDetectTask", configMINIMAL_STACK_SIZE + 500, NULL, configMAX_PRIORITIES - 2, +// NULL); + +// // vTaskDelete(NULL); +// // } diff --git a/targets/FreeRTOS/NXP/_common/Target_Windows_Storage.c b/targets/FreeRTOS/NXP/_common/Target_Windows_Storage.c deleted file mode 100644 index 8f0f46c390..0000000000 --- a/targets/FreeRTOS/NXP/_common/Target_Windows_Storage.c +++ /dev/null @@ -1,149 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "FreeRTOS.h" -#include "semphr.h" -#include "task.h" - -#include "ff.h" -#include -#include -#include - -#include "fsl_sd.h" - - -// need to declare this here as extern -extern void PostManagedEvent(uint8_t category, uint8_t subCategory, uint16_t data1, uint32_t data2); - -#define SD_CARD_DRIVE_INDEX "0" -#define SD_CARD_DRIVE_INDEX_NUMERIC (0) - - -/////////////////////////////////////////// -// code specific to SD Card - -// FS for SD Card mounted and ready -bool sdCardFileSystemReady; - -static FATFS sdCard_FS; - -/*! -* call back function for SD card detect. -* -* @param isInserted true, indicate the card is insert. -* false, indicate the card is remove. -* @param userData -*/ -static void SDCARD_DetectCallBack(bool isInserted, void *userData); - -/*! Card descriptor. */ -sd_card_t g_sd; - -/*! SDMMC host detect card configuration */ -static const sdmmchost_detect_card_t s_sdCardDetect = { -#ifndef BOARD_SD_DETECT_TYPE - .cdType = kSDMMCHOST_DetectCardByGpioCD, -#else - .cdType = BOARD_SD_DETECT_TYPE, -#endif - .cdTimeOut_ms = (~0U), - .cardInserted = SDCARD_DetectCallBack, - .cardRemoved = SDCARD_DetectCallBack, -}; - -/*! SD card detect flag */ -static bool s_cardInserted = false; -/*! Card semaphore */ -static SemaphoreHandle_t s_CardDetectSemaphore = NULL; - -static void SDCARD_DetectCallBack(bool isInserted, void *userData) -{ - (void)userData; - s_cardInserted = isInserted; - xSemaphoreGiveFromISR(s_CardDetectSemaphore, NULL); -} - -static void CardDetectTask(void *pvParameters) -{ - (void)pvParameters; - - while (true) - { - if (!s_cardInserted) - { - /* power off card */ - SD_PowerOffCard(g_sd.host.base, g_sd.usrParam.pwr); - } - - /* take card detect semaphore */ - xSemaphoreTake(s_CardDetectSemaphore, portMAX_DELAY); - vTaskDelay(100 / portTICK_PERIOD_MS); - if (s_cardInserted) - { - //Card inserted. - /* power on the card */ - SD_PowerOnCard(g_sd.host.base, g_sd.usrParam.pwr); - /* Init card. */ - if (SD_CardInit(&g_sd)) - { - //SD card init failed. - continue; - } - - FRESULT err = f_mount(&sdCard_FS, "0", 1U); - if (err != FR_OK) { - vTaskDelay(1000 / portTICK_PERIOD_MS); - SD_CardDeinit(&g_sd); - continue; - } - sdCardFileSystemReady = true; - - // post event to managed app - PostManagedEvent( EVENT_STORAGE, 0, StorageEventType_RemovableDeviceInsertion, SD_CARD_DRIVE_INDEX_NUMERIC ); - } - else - { - SD_CardDeinit(&g_sd); - - //Card removed - sdCardFileSystemReady = false; - - // post event to managed app - PostManagedEvent( EVENT_STORAGE, 0, StorageEventType_RemovableDeviceRemoval, SD_CARD_DRIVE_INDEX_NUMERIC ); - } - } -} - -void SdCardThread(void * argument) -{ - (void)argument; - - s_CardDetectSemaphore = xSemaphoreCreateBinary(); - - sdCardFileSystemReady = false; - - g_sd.host.base = SD_HOST_BASEADDR; - g_sd.host.sourceClock_Hz = SD_HOST_CLK_FREQ; - g_sd.usrParam.cd = &s_sdCardDetect; - - NVIC_SetPriority(SD_HOST_IRQ, 5U); - - /* SD host init function */ - if (SD_HostInit(&g_sd) != kStatus_Success) - { - //SD host init fail - vTaskDelete(NULL); - return; - } - - xTaskCreate(CardDetectTask, "CardDetectTask", configMINIMAL_STACK_SIZE + 500, NULL, configMAX_PRIORITIES - 2, NULL); - - vTaskDelete(NULL); -} - - -/////////////////////////////////////////// - diff --git a/targets/FreeRTOS/NXP/_include/Target_Windows_Storage.h b/targets/FreeRTOS/NXP/_include/Target_Windows_Storage.h deleted file mode 100644 index 3015ff8340..0000000000 --- a/targets/FreeRTOS/NXP/_include/Target_Windows_Storage.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#ifndef TARGET_WINDOWS_STORAGE_H -#define TARGET_WINDOWS_STORAGE_H - -#ifdef __cplusplus -extern "C" { -#endif - - // declaration of storage working threads - void SdCardThread(void * argument); - -#ifdef __cplusplus -} -#endif - - -#endif // TARGET_WINDOWS_STORAGE_H diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard.cpp b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard.cpp deleted file mode 100644 index 23268d9a55..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_Devices_SDCard.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native_target.h" - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::MountMMCNative___STATIC__VOID__BOOLEAN(CLR_RT_StackFrame& stack) -{ - NANOCLR_HEADER(); - (void)stack; - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::MountSpiNative___STATIC__VOID__I4__I4(CLR_RT_StackFrame& stack) -{ - NANOCLR_HEADER(); - (void)stack; - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} - - -HRESULT Library_win_storage_native_Windows_Storage_Devices_SDCard::UnmountNative___STATIC__VOID(CLR_RT_StackFrame& stack) -{ - NANOCLR_HEADER(); - (void)stack; - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp deleted file mode 100644 index e752c9874f..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_FileIO.cpp +++ /dev/null @@ -1,610 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native_target.h" - -// defining these types here to make it shorter and improve code readability -typedef Library_win_storage_native_Windows_Storage_StorageFolder StorageFolder; -typedef Library_win_storage_native_Windows_Storage_StorageFile StorageFile; - -////////////////////////////////////////// - -struct FileIOFileOperation -{ - const char *FileName; - char *Content; - uint32_t ContentLength; -}; - -// this is the FileIO working thread -static volatile FRESULT threadOperationResult; - -// ReadText working thread -static void ReadTextWorkingThread(void *arg) -{ - - FileIOFileOperation *fileIoOperation = reinterpret_cast(arg); - - FIL file; - - // need an extra one for the terminator - uint32_t readLength = fileIoOperation->ContentLength + 1; - - // open file (which is supposed to already exist) - // need to use FA_OPEN_EXISTING because we are reading an existing file content from start - threadOperationResult = f_open(&file, fileIoOperation->FileName, FA_OPEN_EXISTING | FA_READ); - - if (threadOperationResult != FR_OK) - { - // free memory - platform_free(fileIoOperation); - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - vTaskDelete(NULL); - } - - // read string - if (!(f_gets((TCHAR *)fileIoOperation->Content, readLength, &file))) - { - threadOperationResult = (FRESULT)f_error(&file); - } - - // close file - f_close(&file); - - // free memory - platform_free(fileIoOperation); - - // fire event for FileIO operation complete - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - - vTaskDelete(NULL); -} - -// WriteText working thread -static void WriteTextWorkingThread(void *arg) -{ - - FileIOFileOperation *fileIoOperation = reinterpret_cast(arg); - - FIL file; - - // open file (which is supposed to already exist) - // need to use FA_OPEN_ALWAYS because we are writting the file content from start - threadOperationResult = f_open(&file, fileIoOperation->FileName, FA_OPEN_ALWAYS | FA_WRITE); - - if (threadOperationResult != FR_OK) - { - // free memory - platform_free(fileIoOperation); - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - vTaskDelete(NULL); - } - - if (f_puts(fileIoOperation->Content, &file) != (int)fileIoOperation->ContentLength) - { - threadOperationResult = FR_DISK_ERR; - } - - // close file - f_close(&file); - - // free memory - platform_free(fileIoOperation); - - // fire event for FileIO operation complete - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - - vTaskDelete(NULL); -} - -// WriteBinary working thread -static void WriteBinaryWorkingThread(void *arg) -{ - UINT bytesWritten; - - FileIOFileOperation *fileIoOperation = reinterpret_cast(arg); - - FIL file; - - // open file (which is supposed to already exist) - // need to use FA_OPEN_ALWAYS because we are writting the file content from start - threadOperationResult = f_open(&file, fileIoOperation->FileName, FA_OPEN_ALWAYS | FA_WRITE); - - if (threadOperationResult != FR_OK) - { - // free memory - platform_free(fileIoOperation); - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - vTaskDelete(NULL); - } - - threadOperationResult = f_write(&file, fileIoOperation->Content, fileIoOperation->ContentLength, &bytesWritten); - if (bytesWritten != fileIoOperation->ContentLength) - { - threadOperationResult = FR_DISK_ERR; - } - // close file - f_close(&file); - - // free memory - platform_free(fileIoOperation); - - // fire event for FileIO operation complete - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - - vTaskDelete(NULL); -} - -// ReadBinary working thread -static void ReadBinaryWorkingThread(void *arg) -{ - - FileIOFileOperation *fileIoOperation = reinterpret_cast(arg); - - FIL file; - - // need an extra one for the terminator - UINT bytesRead = fileIoOperation->ContentLength + 1; - - // open file (which is supposed to already exist) - // need to use FA_OPEN_EXISTING because we are reading an existing file content from start - threadOperationResult = f_open(&file, fileIoOperation->FileName, FA_OPEN_EXISTING | FA_READ); - - if (threadOperationResult != FR_OK) - { - // free memory - platform_free(fileIoOperation); - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - vTaskDelete(NULL); - } - - threadOperationResult = f_read(&file, fileIoOperation->Content, fileIoOperation->ContentLength, &bytesRead); - - if (bytesRead != fileIoOperation->ContentLength) - { - threadOperationResult = FR_DISK_ERR; - } - - // close file - f_close(&file); - - platform_free(fileIoOperation); - - // fire event for FileIO operation complete - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - - vTaskDelete(NULL); -} - -//////////////////////////////////////////////// -// Developer notes: -// Depending on the content size these operations have the potential to be a long running ones as the string or buffer -// is written to the storage. Despite we are not (yet!) async this is better handled by spawning a thread where the -// actual data transfer occurs and not blocking the execution. The underlying RTOS inheritably takes care of making this -// happen "in the background". When the operation is completed a CLR event is fired and the thread execution resumes. -// Being hard to estimate the expected duration of the operation (depends on storage hardware, CPU clock, transfer -// speed, etc) the timeout is set to an infinite timeout the catch is that the working thread MUST ALWAYS return at some -// point -//////////////////////////////////////////////// - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - WriteBytes___STATIC__VOID__WindowsStorageIStorageFile__SZARRAY_U1(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_HeapBlock_Array *bufferArray; - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - - const TCHAR *filePath; - - char *buffer; - uint32_t bufferLength; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the buffer - bufferArray = stack.Arg1().DereferenceArray(); - - buffer = (char *)bufferArray->GetFirstElement(); - - bufferLength = bufferArray->m_numOfElements; - - // get a pointer to the file path - filePath = (TCHAR *)pThis[StorageFile::FIELD___path].DereferenceString()->StringText(); - - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); - - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - - if (stack.m_customState == 1) - { - // protect the content buffer from GC so the working thread can access those - CLR_RT_ProtectFromGC gcContent(*bufferArray); - - // setup FileIO operation - FileIOFileOperation *fileIoOperation = - reinterpret_cast(platform_malloc(sizeof(FileIOFileOperation))); - - // fileIoOperation->File = file; - fileIoOperation->FileName = filePath; - fileIoOperation->Content = buffer; - fileIoOperation->ContentLength = bufferLength; - - // spawn working thread to perform the write transaction - BaseType_t ret; - ret = xTaskCreate( - WriteBinaryWorkingThread, - "WriteBin", - configMINIMAL_STACK_SIZE + 600, - fileIoOperation, - configMAX_PRIORITIES - 2, - NULL); - - if (ret != pdPASS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; - } - - while (eventResult) - { - // non-blocking wait allowing other threads to run while we wait for the write operation to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_StorageIo, eventResult)); - - if (eventResult) - { - // event occurred - - if (threadOperationResult == FR_DISK_ERR) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - else if (threadOperationResult == FR_NO_FILE) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else if (threadOperationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } - // pop timeout heap block from stack - stack.PopValue(); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO::WriteText___STATIC__VOID__WindowsStorageIStorageFile__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_HeapBlock_String *content; - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - - const TCHAR *filePath; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the content - content = stack.Arg1().DereferenceString(); - - // get a pointer to the file path - filePath = (TCHAR *)pThis[StorageFile::FIELD___path].DereferenceString()->StringText(); - - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); - - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - - if (stack.m_customState == 1) - { - // protect the StorageFile and the content buffer from GC so the working thread can access those - CLR_RT_ProtectFromGC gcStorageFile(*pThis); - CLR_RT_ProtectFromGC gcContent(*content); - - // setup FileIO operation - FileIOFileOperation *fileIoOperation = - reinterpret_cast(platform_malloc(sizeof(FileIOFileOperation))); - - fileIoOperation->FileName = filePath; - fileIoOperation->Content = (char *)content->StringText(); - fileIoOperation->ContentLength = hal_strlen_s(fileIoOperation->Content); - - // spawn working thread to perform the write transaction - BaseType_t ret; - ret = xTaskCreate( - WriteTextWorkingThread, - "WriteText", - configMINIMAL_STACK_SIZE + 400, - fileIoOperation, - configMAX_PRIORITIES - 2, - NULL); - - if (ret != pdPASS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; - } - - while (eventResult) - { - // non-blocking wait allowing other threads to run while we wait for the write operation to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_StorageIo, eventResult)); - - if (eventResult) - { - // event occurred - if (threadOperationResult == FR_DISK_ERR) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - else if (threadOperationResult == FR_NO_FILE) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else if (threadOperationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } - // pop timeout heap block from stack - stack.PopValue(); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - ReadBufferNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_SZARRAY_U1(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - - const TCHAR *filePath; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); - - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - - // get a pointer to the file path - filePath = (TCHAR *)pThis[StorageFile::FIELD___path].DereferenceString()->StringText(); - - if (stack.m_customState == 1) - { - // get file details - static FILINFO fileInfo; - f_stat(filePath, &fileInfo); - - CLR_RT_HeapBlock buffer; - buffer.SetObjectReference(NULL); - CLR_RT_ProtectFromGC gc2(buffer); - - // create a new byte array with the appropriate size (and type) - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(buffer, (CLR_INT32)fileInfo.fsize, g_CLR_RT_WellKnownTypes.m_UInt8)); - - // store this to the argument passed byref - NANOCLR_CHECK_HRESULT(buffer.StoreToReference(stack.Arg1(), 0)); - - // get a pointer to the buffer array to improve readability on the code ahead - CLR_RT_HeapBlock_Array *bufferArray = buffer.DereferenceArray(); - - // setup FileIO operation - FileIOFileOperation *fileIoOperation = - reinterpret_cast(platform_malloc(sizeof(FileIOFileOperation))); - - fileIoOperation->FileName = filePath; - fileIoOperation->Content = (char *)bufferArray->GetFirstElement(); - fileIoOperation->ContentLength = bufferArray->m_numOfElements; - - // spawn working thread to perform the read transaction - BaseType_t ret; - ret = xTaskCreate( - ReadBinaryWorkingThread, - "ReadBin", - configMINIMAL_STACK_SIZE + 600, - fileIoOperation, - configMAX_PRIORITIES - 2, - NULL); - - if (ret != pdPASS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; - } - - while (eventResult) - { - // non-blocking wait allowing other threads to run while we wait for the write operation to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_StorageIo, eventResult)); - - if (eventResult) - { - // event occurred - - if (threadOperationResult == FR_DISK_ERR) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - else if (threadOperationResult == FR_NO_FILE) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else if (threadOperationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } - // pop timeout heap block from stack - stack.PopValue(); - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_FileIO:: - ReadTextNative___STATIC__VOID__WindowsStorageIStorageFile__BYREF_STRING(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - - const TCHAR *filePath; - - static FILINFO fileInfo; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); - - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - - // get a pointer to the file path - filePath = (TCHAR *)pThis[StorageFile::FIELD___path].DereferenceString()->StringText(); - - if (stack.m_customState == 1) - { - // protect the StorageFile and the content buffer from GC so the working thread can access those - CLR_RT_ProtectFromGC gcStorageFile(*pThis); - - // get file details - f_stat(filePath, &fileInfo); - - // create a new string object with the appropriate size - CLR_RT_HeapBlock hbText; - hbText.SetObjectReference(NULL); - CLR_RT_ProtectFromGC gc(hbText); - - CLR_RT_HeapBlock_String *textString = - CLR_RT_HeapBlock_String::CreateInstance(hbText, (CLR_UINT32)fileInfo.fsize); - FAULT_ON_NULL(textString); - - // store this to the argument passed byref - NANOCLR_CHECK_HRESULT(hbText.StoreToReference(stack.Arg1(), 0)); - - // setup FileIO operation - FileIOFileOperation *fileIoOperation = (FileIOFileOperation *)platform_malloc(sizeof(FileIOFileOperation)); - - fileIoOperation->FileName = filePath; - fileIoOperation->Content = (char *)textString->StringText(); - fileIoOperation->ContentLength = fileInfo.fsize; - - // spawn working thread to perform the read transaction - BaseType_t ret; - ret = xTaskCreate( - ReadTextWorkingThread, - "ReadText", - configMINIMAL_STACK_SIZE + 300, - fileIoOperation, - configMAX_PRIORITIES - 2, - NULL); - - if (ret != pdPASS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; - } - - while (eventResult) - { - // non-blocking wait allowing other threads to run while we wait for the write operation to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_StorageIo, eventResult)); - - if (eventResult) - { - // event occurred - - if (threadOperationResult == FR_DISK_ERR) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - else if (threadOperationResult == FR_NO_FILE) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else if (threadOperationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } - // pop timeout heap block from stack - stack.PopValue(); - - NANOCLR_NOCLEANUP(); -} diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFile.cpp b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFile.cpp deleted file mode 100644 index 4b8cd4723d..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFile.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native_target.h" - -extern SYSTEMTIME GetDateTime(uint16_t date, uint16_t time); -extern void SaveDateTimeToField(CLR_RT_HeapBlock *hbObj, int fieldIndex, CLR_UINT64 ticks); - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile::DeleteFileNative___VOID(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - const char *workingPath; - FRESULT operationResult; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___path].DereferenceString()->StringText(); - - // Delete folder - operationResult = f_unlink(workingPath); - if (operationResult != FR_OK) - { - // folder doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - - NANOCLR_CLEANUP(); - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile::RenameFileNative___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - const char *workingPath; - const char *desiredPath; - FRESULT operationResult; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___path].DereferenceString()->StringText(); - - // get a pointer to the desired folder path - desiredPath = stack.Arg1().DereferenceString()->StringText(); - - // rename folder - operationResult = f_rename(workingPath, desiredPath); - if (operationResult == FR_INVALID_NAME) - { - // invalid path - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - } - else if (operationResult != FR_OK) - { - // folder doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_FOUND); - } - - NANOCLR_CLEANUP(); - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFile:: - GetFileFromPathNative___STATIC__WindowsStorageStorageFile__STRING__STRING(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index storageFileTypeDef; - CLR_RT_HeapBlock *storageFile; - - const char *filePath; - const char *fileName; - - FRESULT fr; - FILINFO fileInfo; - SYSTEMTIME fileInfoTime; - - // get a pointer to the file path - filePath = stack.Arg0().DereferenceString()->StringText(); - - // get a pointer to the file name - fileName = stack.Arg1().DereferenceString()->StringText(); - - fr = f_stat(filePath, &fileInfo); - if (fr == FR_OK) - { - // is this a file? - if (!(fileInfo.fattrib & AM_DIR)) - { - // path represents a file, we are good - - // compose return object - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFile", "Windows.Storage", storageFileTypeDef); - - // create a - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), storageFileTypeDef)); - - // get a handle to the storage file - storageFile = stack.TopValue().Dereference(); - - // file name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFile[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___name], - fileName)); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFile[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___path], - filePath)); - - // get the date time details and fill in the managed field - // compute directory date - fileInfoTime = GetDateTime(fileInfo.fdate, fileInfo.ftime); - - // Save fileInfoTime DateTime to storageFile date created field... - SaveDateTimeToField( - storageFile, - Library_win_storage_native_Windows_Storage_StorageFile::FIELD___dateCreated, - HAL_Time_ConvertFromSystemTime(&fileInfoTime)); - } - else - { - // path exists but it's a folder - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - } - else if (fr == FR_NO_FILE) - { - // file doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else - { - // IO error - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - - NANOCLR_NOCLEANUP(); -} diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder.cpp b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder.cpp deleted file mode 100644 index 4a2c7b20c8..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageFolder.cpp +++ /dev/null @@ -1,1184 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native_target.h" - -// flags for file system ready -extern bool sdCardFileSystemReady; - -void CombinePath(char *outpath, const char *path1, const char *path2) -{ - strcat(outpath, path1); - - // Add "\" to path if required - if (outpath[hal_strlen_s(outpath) - 1] != '\\') - { - strcat(outpath, "\\"); - } - strcat(outpath, path2); -} - -SYSTEMTIME GetDateTime(uint16_t date, uint16_t time) -{ - SYSTEMTIME fileTime; - - memset(&fileTime, 0, sizeof(SYSTEMTIME)); - - // date (bit15:9) Year origin from 1980 (0..127) - fileTime.wYear = (date >> 9) + 1980; - // date (bit8:5) Month (1..12) - fileTime.wMonth = (date >> 5) & 0x000F; - // date (bit4:0) Day (1..31) - fileTime.wDay = date & 0x001F; - - // time (bit15:11) Hour (0..23) - fileTime.wHour = (time >> 11) & 0x001F; - // time (bit10:5) Minute (0..59) - fileTime.wMinute = (time >> 5) & 0x003F; - // time (bit4:0) Second / 2 (0..29) - fileTime.wSecond = time & 0x001F; - - return fileTime; -} - -// Save a DateTime (ticks) to DateTime field in object -void SaveDateTimeToField(CLR_RT_HeapBlock *hbObj, int fieldIndex, CLR_UINT64 ticks) -{ - CLR_RT_HeapBlock &dateFieldRef = hbObj[fieldIndex]; - CLR_INT64 *pRes = Library_corlib_native_System_DateTime::GetValuePtr(dateFieldRef); - if (pRes) - { - // ...and set it - *pRes = ticks; - } -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetRemovableStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - uint32_t driveCount = 0; - - CLR_RT_HeapBlock *storageFolder; - CLR_RT_TypeDef_Index storageFolderTypeDef; - CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - - // is the SD card file system ready? - if (sdCardFileSystemReady) - { - // add count - driveCount++; - } - - // start composing the reply - // find type definition, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, driveCount, storageFolderTypeDef)); - - if (driveCount > 0) - { - // there are driver present and enumerated - - // get a pointer to the first object in the array (which is of type ) - storageFolder = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); - - // create an instance of - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*storageFolder, storageFolderTypeDef)); - - // loop until we've loaded all the possible drives - // because we are iterating through an enum, need to use its integer values - for (uint16_t driveIterator = 0; driveIterator < driveCount; driveIterator++) - { - char workingDrive[sizeof(DRIVE_PATH_LENGTH)]; - // fill the folder name and path - switch (driveIterator) - { - case 0: - memcpy(workingDrive, INDEX0_DRIVE_PATH, DRIVE_PATH_LENGTH); - break; - - case 1: - memcpy(workingDrive, INDEX1_DRIVE_PATH, DRIVE_PATH_LENGTH); - break; - - default: - // shouldn't reach here - NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); - break; - } - - // dereference the object in order to reach its fields - CLR_RT_HeapBlock *hbObj = storageFolder->Dereference(); - - // set the managed fields - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___name], - workingDrive)); - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path], - workingDrive)); - - // malloc stringBuffer to work with FS - char *stringBuffer = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (stringBuffer == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - else - { - // clear buffer - memset(stringBuffer, 0, FF_LFN_BUF + 1); - - // read the drive volume label - // don't bother checking the result, if anything goes wrong we'll end up with an empty string which is - // OK - f_getlabel(workingDrive, stringBuffer, NULL); - - // add the driver letter separated it with an empty space, if the volume label isn't empty - if (*stringBuffer != '\0') - { - strcat(stringBuffer, " "); - } - strcat(stringBuffer, "("); - strcat(stringBuffer, workingDrive); - strcat(stringBuffer, ")"); - - // set the field with the volume label - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___name], - stringBuffer)); - - // free stringBuffer - platform_free(stringBuffer); - } - - // move pointer to the next folder item - storageFolder++; - } - } - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetInternalStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - { - - CLR_RT_TypeDef_Index storageFolderTypeDef; - CLR_RT_HeapBlock &top = stack.PushValue(); - - // start composing the reply - // find type definition, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create an empty array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, 0, storageFolderTypeDef)); - } - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetStorageFoldersNative___SZARRAY_WindowsStorageStorageFolder(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index storageFolderTypeDef; - CLR_RT_HeapBlock *storageFolder; - CLR_RT_HeapBlock *hbObj; - SYSTEMTIME fileInfoTime; - - const char *workingPath; - - DIR currentDirectory; - FRESULT operationResult; - static FILINFO fileInfo; - uint16_t directoryCount = 0; - char *stringBuffer = NULL; - char *workingBuffer = NULL; - - CLR_RT_HeapBlock &top = stack.PushValue(); - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // open directory - operationResult = f_opendir(¤tDirectory, workingPath); - - if (operationResult != FR_OK) - { - if (operationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - - // error or directory empty - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, directoryCount, storageFolderTypeDef)); - } - else - { - // need to perform this in two steps - // 1st: count the directory objects - // 2nd: create the array items with each directory object - - // perform 1st pass - for (;;) - { - // read next directory item - operationResult = f_readdir(¤tDirectory, &fileInfo); - - // break on error or at end of dir - if (operationResult != FR_OK || fileInfo.fname[0] == 0) - { - break; - } - - // check if this is a directory - // but skip if: - // - has system attribute set - // - has hidden attribute set - if ((fileInfo.fattrib & AM_DIR) && !(fileInfo.fattrib & AM_SYS) && !(fileInfo.fattrib & AM_HID)) - { - directoryCount++; - } - } - - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, directoryCount, storageFolderTypeDef)); - - // get a pointer to the first object in the array (which is of type ) - storageFolder = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); - - if (directoryCount > 0) - { - // allocate memory for buffers - stringBuffer = (char *)platform_malloc(FF_LFN_BUF + 1); - workingBuffer = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (stringBuffer == NULL || workingBuffer == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // perform 2nd pass - // need to rewind the directory read index first - f_readdir(¤tDirectory, NULL); - - for (;;) - { - // read next directory item - operationResult = f_readdir(¤tDirectory, &fileInfo); - - // break on error or at end of dir - if (operationResult != FR_OK || fileInfo.fname[0] == 0) - { - break; - } - - // check if this is a directory - // but skip if: - // - has system attribute set - // - has hidden attribute set - if ((fileInfo.fattrib & AM_DIR) && !(fileInfo.fattrib & AM_SYS) && !(fileInfo.fattrib & AM_HID)) - { - // create an instance of - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*storageFolder, storageFolderTypeDef)); - - // dereference the object in order to reach its fields - hbObj = storageFolder->Dereference(); - - // directory name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___name], - fileInfo.fname)); - - // clear working buffer - memset(workingBuffer, 0, FF_LFN_BUF + 1); - - // compose directory path - CombinePath(workingBuffer, workingPath, fileInfo.fname); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path], - workingBuffer)); - - // compute directory date - fileInfoTime = GetDateTime(fileInfo.fdate, fileInfo.ftime); - - // Save created DateTime to StorageFolder date created field... - SaveDateTimeToField( - hbObj, - Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___dateCreated, - HAL_Time_ConvertFromSystemTime(&fileInfoTime)); - - // move the storage folder pointer to the next item in the array - storageFolder++; - } - } - } - } - - NANOCLR_CLEANUP(); - - // close directory - f_closedir(¤tDirectory); - - // free buffers memory, if allocated - if (stringBuffer != NULL) - { - platform_free(stringBuffer); - } - if (workingBuffer != NULL) - { - platform_free(workingBuffer); - } - - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - GetStorageFilesNative___SZARRAY_WindowsStorageStorageFile__U4__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index storageFileTypeDef; - CLR_RT_HeapBlock *storageFile; - CLR_RT_HeapBlock *hbObj; - SYSTEMTIME fileInfoTime; - - const char *workingPath; - char workingDrive[DRIVE_LETTER_LENGTH]; - - uint32_t startIndex; - uint32_t maxItemsToRetrieve; - - DIR currentDirectory; - FRESULT operationResult; - static FILINFO fileInfo; - uint16_t fileCount = 0; - char *stringBuffer = NULL; - char *workingBuffer = NULL; - - CLR_RT_HeapBlock &top = stack.PushValue(); - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get start index - startIndex = stack.Arg1().NumericByRef().u4; - - // get max items to retrieve - maxItemsToRetrieve = stack.Arg2().NumericByRef().u4; - - // copy the first 2 letters of the path for the drive - // path is 'D:\folder\file.txt', so we need 'D:' - memcpy( - workingDrive, - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(), - DRIVE_LETTER_LENGTH); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // open directory - operationResult = f_opendir(¤tDirectory, workingPath); - - if (operationResult != FR_OK) - { - // error or directory empty - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFile", "Windows.Storage", storageFileTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, fileCount, storageFileTypeDef)); - } - else - { - uint32_t itemIndex = 0; - - // need to perform this in two steps - // 1st: count the file objects - // 2nd: create the array items with each file object - - // perform 1st pass - for (;;) - { - // read next directory item - operationResult = f_readdir(¤tDirectory, &fileInfo); - - // break on error or at end of dir - if (operationResult != FR_OK || fileInfo.fname[0] == 0) - { - break; - } - - // check if this is a file - // but skip if: - // - has system attribute set - // - has hidden attribute set - if ((fileInfo.fattrib & AM_ARC) && !(fileInfo.fattrib & AM_SYS) && !(fileInfo.fattrib & AM_HID)) - { - // check if this file is within the requested parameters - if ((itemIndex >= startIndex) && (fileCount < maxItemsToRetrieve)) - { - fileCount++; - } - - itemIndex++; - } - } - - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFile", "Windows.Storage", storageFileTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, fileCount, storageFileTypeDef)); - - // get a pointer to the first object in the array (which is of type ) - storageFile = (CLR_RT_HeapBlock *)top.DereferenceArray()->GetFirstElement(); - - if (fileCount > 0) - { - // allocate memory for buffers - stringBuffer = (char *)platform_malloc(FF_LFN_BUF + 1); - workingBuffer = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (stringBuffer == NULL || workingBuffer == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // perform 2nd pass - // need to rewind the directory read index first - f_readdir(¤tDirectory, NULL); - - // and reset the file iterator vars too - itemIndex = 0; - fileCount = 0; - - for (;;) - { - // read next directory item - operationResult = f_readdir(¤tDirectory, &fileInfo); - - // break on error or at end of dir - if (operationResult != FR_OK || fileInfo.fname[0] == 0) - { - break; - } - - // check if this is a file - // but skip if: - // - has system attribute set - // - has hidden attribute set - if ((fileInfo.fattrib & AM_ARC) && !(fileInfo.fattrib & AM_SYS) && !(fileInfo.fattrib & AM_HID)) - { - // check if this file is within the requested parameters - if ((itemIndex >= startIndex) && (fileCount < maxItemsToRetrieve)) - { - // create an instance of - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*storageFile, storageFileTypeDef)); - - // dereference the object in order to reach its fields - hbObj = storageFile->Dereference(); - - // file name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___name], - fileInfo.fname)); - - // clear working buffer - memset(workingBuffer, 0, FF_LFN_BUF + 1); - - // compose file path - CombinePath(workingBuffer, workingPath, fileInfo.fname); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - hbObj[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___path], - workingBuffer)); - - // compute directory date - fileInfoTime = GetDateTime(fileInfo.fdate, fileInfo.ftime); - - // Save created DateTime to StorageFile date created field... - SaveDateTimeToField( - hbObj, - Library_win_storage_native_Windows_Storage_StorageFile::FIELD___dateCreated, - HAL_Time_ConvertFromSystemTime(&fileInfoTime)); - - // move the storage folder pointer to the next item in the array - storageFile++; - - // update iterator var - fileCount++; - } - - // update iterator var - itemIndex++; - } - } - } - else - { - // empty directory - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFile", "Windows.Storage", storageFileTypeDef); - - // create an array of - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, fileCount, storageFileTypeDef)); - } - } - - NANOCLR_CLEANUP(); - - // close directory - f_closedir(¤tDirectory); - - // free buffers memory, if allocated - if (stringBuffer != NULL) - { - platform_free(stringBuffer); - } - if (workingBuffer != NULL) - { - platform_free(workingBuffer); - } - - NANOCLR_CLEANUP_END(); -} - -struct StorageFolderFileOperation -{ - const char *FilePath; - uint8_t mode; - enum CreationCollisionOption options; -}; - -// this is the FileIO working thread -static volatile FRESULT threadOperationResult; - -// CreateFile working thread -static void CreateFileWorkingThread(void *arg) -{ - - StorageFolderFileOperation *fileIoOperation = reinterpret_cast(arg); - - // create file struct - FIL file; - - // open file - FRESULT operationResult = f_open(&file, fileIoOperation->FilePath, fileIoOperation->mode); - - // process operation result according to creation options - if ((operationResult == FR_EXIST) && (fileIoOperation->options == CreationCollisionOption_FailIfExists)) - { - // file already exists - threadOperationResult = FR_EXIST; - f_close(&file); - return; - } - if ((operationResult == FR_NO_FILE) && (fileIoOperation->options == CreationCollisionOption_OpenIfExists)) - { - // file doesn't exist - threadOperationResult = FR_NO_FILE; - f_close(&file); - return; - } - - threadOperationResult = FR_OK; - - // close file - f_close(&file); - - // free memory - platform_free((void *)fileIoOperation->FilePath); - platform_free(fileIoOperation); - - // fire event for FileIO operation complete - Events_Set(SYSTEM_EVENT_FLAG_STORAGE_IO); - - vTaskDelete(NULL); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - CreateFileNative___WindowsStorageStorageFile__STRING__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_HeapBlock hbTimeout; - CLR_INT64 *timeout; - bool eventResult = true; - - CLR_RT_TypeDef_Index storageFileTypeDef; - CLR_RT_HeapBlock *storageFile; - - const char *fileName; - const char *workingPath; - - CreationCollisionOption options; - - char *filePath = NULL; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get creation collision options - options = (CreationCollisionOption)stack.Arg2().NumericByRef().u4; - - // get a pointer to the StorageFolder path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // get a pointer to the desired file name - fileName = stack.Arg1().DereferenceString()->StringText(); - - // !! need to cast to CLR_INT64 otherwise it wont setup a proper timeout infinite - hbTimeout.SetInteger((CLR_INT64)-1); - - NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); - - if (stack.m_customState == 1) - { - - // setup file path - filePath = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (filePath == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // clear working buffer - memset(filePath, 0, FF_LFN_BUF + 1); - - // compose file path - CombinePath(filePath, workingPath, fileName); - - uint8_t modeFlags = 0; - // compute mode flags from CreationCollisionOption - switch (options) - { - case CreationCollisionOption_ReplaceExisting: - modeFlags = FA_CREATE_ALWAYS; - break; - - case CreationCollisionOption_FailIfExists: - modeFlags = FA_CREATE_NEW; - break; - - case CreationCollisionOption_OpenIfExists: - modeFlags = FA_OPEN_ALWAYS; - break; - - case CreationCollisionOption_GenerateUniqueName: - // this operation is not supported in nanoFramework - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - break; - - default: - break; - } - - // setup File operation - StorageFolderFileOperation *fileOperation = - reinterpret_cast(platform_malloc(sizeof(StorageFolderFileOperation))); - - fileOperation->FilePath = filePath; - fileOperation->mode = modeFlags; - - // spawn working thread to perform the write transaction - BaseType_t ret; - ret = xTaskCreate( - CreateFileWorkingThread, - "CreateFile", - configMINIMAL_STACK_SIZE + 600, - fileOperation, - configMAX_PRIORITIES - 2, - NULL); - - if (ret != pdPASS) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); - } - - // bump custom state - stack.m_customState = 2; - } - - while (eventResult) - { - // non-blocking wait allowing other threads to run while we wait for the write operation to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_StorageIo, eventResult)); - - if (eventResult) - { - // event occurred - - if (threadOperationResult == FR_DISK_ERR) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - else if (threadOperationResult == FR_NO_FILE) - { - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_NOT_FOUND); - } - else if (threadOperationResult == FR_EXIST) - { - NANOCLR_SET_AND_LEAVE(CLR_E_PATH_ALREADY_EXISTS); - } - else if (threadOperationResult == FR_INVALID_DRIVE) - { - // failed to change drive - NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); - } - - // pop timeout heap block from stack - stack.PopValue(); - - // compose return object - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFile", "Windows.Storage", storageFileTypeDef); - - // create a - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), storageFileTypeDef)); - - // get a handle to the storage file - storageFile = stack.TopValue().Dereference(); - - // setup file path - filePath = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (filePath == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // clear working buffer - memset(filePath, 0, FF_LFN_BUF + 1); - - // compose file path - CombinePath(filePath, workingPath, fileName); - - // file name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFile[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___name], - fileName)); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFile[Library_win_storage_native_Windows_Storage_StorageFile::FIELD___path], - filePath)); - - // Save created DateTime to StorageFile date created field... - SaveDateTimeToField( - storageFile, - Library_win_storage_native_Windows_Storage_StorageFile::FIELD___dateCreated, - HAL_Time_CurrentDateTime(false)); - - platform_free(filePath); - - // done here - break; - } - else - { - NANOCLR_SET_AND_LEAVE(CLR_E_TIMEOUT); - } - } - - NANOCLR_NOCLEANUP(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder:: - CreateFolderNative___WindowsStorageStorageFolder__STRING__U4(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index storageFolderTypeDef; - CLR_RT_HeapBlock *storageFolder; - - const char *folderName; - const char *workingPath; - - CreationCollisionOption options; - - static FILINFO fileInfo; - SYSTEMTIME fileInfoTime; - FRESULT operationResult; - char *folderPath = NULL; - { - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get creation collision options - options = (CreationCollisionOption)stack.Arg2().NumericByRef().u4; - - // get a pointer to the path in managed field - workingPath = pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path] - .DereferenceString() - ->StringText(); - - // get a pointer to the desired folder name - folderName = stack.Arg1().DereferenceString()->StringText(); - - folderPath = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (folderPath == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // clear working buffer - memset(folderPath, 0, FF_LFN_BUF + 1); - - // compose folder path - CombinePath(folderPath, workingPath, folderName); - - // check if folder exists - operationResult = f_stat(folderPath, &fileInfo); - - if (operationResult == FR_OK) - { - if (options == CreationCollisionOption_FailIfExists) - { - // folder already exists - NANOCLR_SET_AND_LEAVE(CLR_E_PATH_ALREADY_EXISTS); - } - else if (options == CreationCollisionOption_ReplaceExisting) - { - // remove folder - operationResult = f_unlink(folderPath); - if (operationResult == FR_INVALID_NAME) - { - // Invalid path - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - } - else if (operationResult == FR_DENIED) - { - // folder is propably not empty - // TODO - add recursive deletion of directories and files - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - - // create directory - operationResult = f_mkdir(folderPath); - - if (operationResult == FR_OK) - { - f_stat(folderPath, &fileInfo); - } - else - { - // failed to create the folder - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - } - else if (options == CreationCollisionOption_GenerateUniqueName) - { - // TODO - add generating unique name - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - } - else if (operationResult == FR_NO_FILE) - { - // create directory - operationResult = f_mkdir(folderPath); - - if (operationResult == FR_OK) - { - f_stat(folderPath, &fileInfo); - } - else - { - // failed to create the folder - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - } - - // compose return object - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create a - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), storageFolderTypeDef)); - - // get a handle to the storage folder - storageFolder = stack.TopValue().Dereference(); - - // folder name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFolder[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___name], - folderName)); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFolder[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path], - folderPath)); - - // get the date time details and fill in the managed field - // compute directory date - fileInfoTime = GetDateTime(fileInfo.fdate, fileInfo.ftime); - - // Save created DateTime to StorageFolder date created field... - SaveDateTimeToField( - storageFolder, - Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___dateCreated, - HAL_Time_ConvertFromSystemTime(&fileInfoTime)); - } - NANOCLR_CLEANUP(); - - // free buffer memory, if allocated - if (folderPath != NULL) - { - platform_free(folderPath); - } - - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::DeleteFolderNative___VOID(CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - const char *workingPath; - // need extra room for the change dir command - char workingDrive[DRIVE_LETTER_LENGTH + 2]; - FRESULT operationResult; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // remove folder - operationResult = f_unlink(workingPath); - if (operationResult == FR_INVALID_NAME) - { - // Invalid path - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - } - else if (operationResult == FR_DENIED) - { - // this could be because the folder is not empty or because it's the current folder - - // change directory to the parent directory using f_chdir("2:..") - - // copy the first 2 letters of the path for the drive - // path is 'D:\folder\file.txt', so we need 'D:' - memcpy( - workingDrive, - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path] - .DereferenceString() - ->StringText(), - DRIVE_LETTER_LENGTH); - // make sure there is a terminator - workingDrive[2] = '\0'; - strcat(workingDrive, ".."); - - // change dir to parent - f_chdir(workingDrive); - - // try remove again - operationResult = f_unlink(workingPath); - - if (operationResult == FR_DENIED) - { - // folder not empty - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_EMPTY); - } - else if (operationResult != FR_OK) - { - // something else is failing - NANOCLR_SET_AND_LEAVE(CLR_E_FILE_IO); - } - } - else if (operationResult != FR_OK) - { - // folder doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_FOUND); - } - - NANOCLR_CLEANUP(); - - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::RenameFolderNative___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - const char *workingPath; - const char *desiredPath; - FRESULT operationResult; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // get a pointer to the desired folder name - desiredPath = stack.Arg1().DereferenceString()->StringText(); - - // rename folder - operationResult = f_rename(workingPath, desiredPath); - if (operationResult == FR_INVALID_NAME) - { - // invalid path - NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); - } - else if (operationResult != FR_OK) - { - // folder doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_FOUND); - } - - NANOCLR_CLEANUP(); - - NANOCLR_CLEANUP_END(); -} - -HRESULT Library_win_storage_native_Windows_Storage_StorageFolder::GetFolderNative___WindowsStorageStorageFolder__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - CLR_RT_TypeDef_Index storageFolderTypeDef; - CLR_RT_HeapBlock *storageFolder; - - const char *folderName; - const char *workingPath; - - FILINFO fileInfo; - SYSTEMTIME fileInfoTime; - - FRESULT operationResult; - char *folderPath = NULL; - - // get a pointer to the managed object instance and check that it's not NULL - CLR_RT_HeapBlock *pThis = stack.This(); - FAULT_ON_NULL(pThis); - - // get a pointer to the path in managed field - workingPath = - pThis[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path].DereferenceString()->StringText(); - - // get a pointer to the desired folder name - folderName = stack.Arg1().DereferenceString()->StringText(); - - folderPath = (char *)platform_malloc(FF_LFN_BUF + 1); - - // sanity check for successful malloc - if (folderPath == NULL) - { - // failed to allocate memory - NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); - } - - // clear working buffer - memset(folderPath, 0, FF_LFN_BUF + 1); - - // compose folder path - CombinePath(folderPath, workingPath, folderName); - - // check if directory exists - operationResult = f_stat(folderPath, &fileInfo); - if (operationResult != FR_OK) - { - // folder doesn't exist - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_FOUND); - } - else - { - // is this a file? - if (!(fileInfo.fattrib & AM_DIR)) - { - // Path represents a file - NANOCLR_SET_AND_LEAVE(CLR_E_DIRECTORY_NOT_FOUND); - } - else - { - // compose return object - // find type, don't bother checking the result as it exists for sure - g_CLR_RT_TypeSystem.FindTypeDef("StorageFolder", "Windows.Storage", storageFolderTypeDef); - - // create a - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(stack.PushValue(), storageFolderTypeDef)); - - // get a handle to the storage folder - storageFolder = stack.TopValue().Dereference(); - - // folder name - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFolder[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___name], - folderName)); - - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance( - storageFolder[Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___path], - folderPath)); - - // get the date time details and fill in the managed field - // compute directory date - fileInfoTime = GetDateTime(fileInfo.fdate, fileInfo.ftime); - - // Save created DateTime to StorageFolder date created field... - SaveDateTimeToField( - storageFolder, - Library_win_storage_native_Windows_Storage_StorageFolder::FIELD___dateCreated, - HAL_Time_ConvertFromSystemTime(&fileInfoTime)); - } - } - - NANOCLR_CLEANUP(); - - // free buffer memory, if allocated - if (folderPath != NULL) - { - platform_free(folderPath); - } - - NANOCLR_CLEANUP_END(); -} diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider.cpp b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider.cpp deleted file mode 100644 index fe7ecfe85e..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_Windows_Storage_StorageProvider.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#include "win_storage_native_target.h" - -HRESULT Library_win_storage_native_Windows_Storage_StorageProvider::FormatVolume___VOID__STRING( - CLR_RT_StackFrame &stack) -{ - NANOCLR_HEADER(); - - NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); - - NANOCLR_NOCLEANUP(); -} diff --git a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_target.h b/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_target.h deleted file mode 100644 index f07fc31b4f..0000000000 --- a/targets/FreeRTOS/NXP/_nanoCLR/Windows.Storage/win_storage_native_target.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - - -#ifndef WIN_STORAGE_NATIVE_TARGET_H -#define WIN_STORAGE_NATIVE_TARGET_H - -#include -#include -#include "win_storage_native.h" -#include -#include - -#endif // WIN_STORAGE_NATIVE_TARGET_H diff --git a/targets/TI_SimpleLink/_include/Target_Windows_Storage.h b/targets/TI_SimpleLink/_include/Target_Windows_Storage.h deleted file mode 100644 index 7d77ce06e1..0000000000 --- a/targets/TI_SimpleLink/_include/Target_Windows_Storage.h +++ /dev/null @@ -1,9 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// See LICENSE file in the project root for full license information. -// - -#ifndef TARGET_WINDOWS_STORAGE_H -#define TARGET_WINDOWS_STORAGE_H - -#endif // TARGET_WINDOWS_STORAGE_H diff --git a/targets/netcore/nanoCLR.sln b/targets/netcore/nanoCLR.sln index 483584698f..f9921b28ff 100644 --- a/targets/netcore/nanoCLR.sln +++ b/targets/netcore/nanoCLR.sln @@ -21,8 +21,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Math", "..\..\src\CL EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Text", "..\..\src\nanoFramework.System.Text\System.Text.vcxproj", "{70922447-EBF0-4473-B014-776F8C9426E7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Windows.Storage", "..\..\src\Windows.Storage\Windows.Storage.vcxproj", "{3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Features", "Features", "{B5342381-A5C8-429B-99E6-49C86AD55C4E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "..\..\src\CLR\Debugger\Debugger.vcxproj", "{DD397EC4-844B-4B59-A67B-CAD6B46F1F00}" @@ -196,18 +194,6 @@ Global {70922447-EBF0-4473-B014-776F8C9426E7}.Release|x64.Build.0 = Release|x64 {70922447-EBF0-4473-B014-776F8C9426E7}.Release|x86.ActiveCfg = Release|Win32 {70922447-EBF0-4473-B014-776F8C9426E7}.Release|x86.Build.0 = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|Any CPU.ActiveCfg = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|Any CPU.Build.0 = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x64.ActiveCfg = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x64.Build.0 = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x86.ActiveCfg = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x86.Build.0 = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|Any CPU.ActiveCfg = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|Any CPU.Build.0 = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x64.ActiveCfg = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x64.Build.0 = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x86.ActiveCfg = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x86.Build.0 = Release|Win32 {DD397EC4-844B-4B59-A67B-CAD6B46F1F00}.Debug|Any CPU.ActiveCfg = Debug|x64 {DD397EC4-844B-4B59-A67B-CAD6B46F1F00}.Debug|Any CPU.Build.0 = Debug|x64 {DD397EC4-844B-4B59-A67B-CAD6B46F1F00}.Debug|x64.ActiveCfg = Debug|x64 @@ -544,7 +530,6 @@ Global {46556AFC-C248-4082-ABE6-9B07F4E57579} = {E91B7D05-94FA-4E24-8981-411E6A60092E} {D3F92F34-63DB-446F-BD0B-851AD0069805} = {E91B7D05-94FA-4E24-8981-411E6A60092E} {70922447-EBF0-4473-B014-776F8C9426E7} = {E91B7D05-94FA-4E24-8981-411E6A60092E} - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4} = {E91B7D05-94FA-4E24-8981-411E6A60092E} {DD397EC4-844B-4B59-A67B-CAD6B46F1F00} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} {A5E9AE41-F4FA-40CE-AD82-A7861EBA007B} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} {5D50772E-DAC8-407D-972F-37DEB4450B72} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj index f73807e469..6293de1559 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj +++ b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj @@ -320,9 +320,6 @@ {c9264d0a-ac25-46b0-bd08-4a3252427f19} - - {3cae286f-0ef8-45e4-8111-afa0aa9282b4} - {5b70a795-a6f2-44df-8566-5d68d9e892db} diff --git a/targets/win32/nanoCLR.sln b/targets/win32/nanoCLR.sln index 10246db97a..2c76dfcc2b 100644 --- a/targets/win32/nanoCLR.sln +++ b/targets/win32/nanoCLR.sln @@ -64,8 +64,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Runtime.Native", "..\..\src EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nanoFramework.ResourceManager", "..\..\src\nanoFramework.ResourceManager\nanoFramework.ResourceManager.vcxproj", "{4F6DD35B-A0C8-47EE-880A-1224FADE9276}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Windows.Storage", "..\..\src\Windows.Storage\Windows.Storage.vcxproj", "{3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Networking.Sntp", "..\..\src\DeviceInterfaces\Networking.Sntp\Networking.Sntp.vcxproj", "{84C62EFC-DBA2-4D47-BB81-322E8902C6D6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Net", "..\..\src\DeviceInterfaces\System.Net\System.Net.vcxproj", "{87B3B6FB-AE1F-4777-ABBF-3E42E0DEB336}" @@ -388,18 +386,6 @@ Global {4F6DD35B-A0C8-47EE-880A-1224FADE9276}.Release|x64.Build.0 = Release|x64 {4F6DD35B-A0C8-47EE-880A-1224FADE9276}.Release|x86.ActiveCfg = Release|Win32 {4F6DD35B-A0C8-47EE-880A-1224FADE9276}.Release|x86.Build.0 = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|Any CPU.Build.0 = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x64.ActiveCfg = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x64.Build.0 = Debug|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x86.ActiveCfg = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Debug|x86.Build.0 = Debug|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|Any CPU.ActiveCfg = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|Any CPU.Build.0 = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x64.ActiveCfg = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x64.Build.0 = Release|x64 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x86.ActiveCfg = Release|Win32 - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4}.Release|x86.Build.0 = Release|Win32 {84C62EFC-DBA2-4D47-BB81-322E8902C6D6}.Debug|Any CPU.ActiveCfg = Debug|Win32 {84C62EFC-DBA2-4D47-BB81-322E8902C6D6}.Debug|Any CPU.Build.0 = Debug|Win32 {84C62EFC-DBA2-4D47-BB81-322E8902C6D6}.Debug|x64.ActiveCfg = Debug|x64 @@ -484,7 +470,6 @@ Global {70922447-EBF0-4473-B014-776F8C9426E7} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {B829E436-91EA-46B3-949B-3273211C8F56} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {4F6DD35B-A0C8-47EE-880A-1224FADE9276} = {383CE434-88F9-4BD4-99C3-D7F19558868D} - {3CAE286F-0EF8-45E4-8111-AFA0AA9282B4} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {84C62EFC-DBA2-4D47-BB81-322E8902C6D6} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {87B3B6FB-AE1F-4777-ABBF-3E42E0DEB336} = {76169580-0DE3-48D0-9545-8FC438C54094} {46556AFC-C248-4082-ABE6-9B07F4E57579} = {383CE434-88F9-4BD4-99C3-D7F19558868D} diff --git a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp index f77f43f2a3..89d588d9aa 100644 --- a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp +++ b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp @@ -12,7 +12,6 @@ extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_System extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Native; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Runtime_Serialization; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_ResourceManager; -extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Storage; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Networking_Sntp; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Net; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_IO_Ports; @@ -33,7 +32,6 @@ const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[] = { &g_CLR_AssemblyNative_System_Runtime_Serialization, &g_CLR_AssemblyNative_nanoFramework_Runtime_Events, &g_CLR_AssemblyNative_nanoFramework_Runtime_Events_EventSink_DriverProcs, - &g_CLR_AssemblyNative_Windows_Storage, &g_CLR_AssemblyNative_nanoFramework_Networking_Sntp, &g_CLR_AssemblyNative_System_Net, &g_CLR_AssemblyNative_System_IO_Ports, diff --git a/targets/win32/nanoCLR/nanoCLR.vcxproj b/targets/win32/nanoCLR/nanoCLR.vcxproj index 3de81d2300..8378a0fb58 100644 --- a/targets/win32/nanoCLR/nanoCLR.vcxproj +++ b/targets/win32/nanoCLR/nanoCLR.vcxproj @@ -310,9 +310,6 @@ {c9264d0a-ac25-46b0-bd08-4a3252427f19} - - {3cae286f-0ef8-45e4-8111-afa0aa9282b4} - From b11a683b0d89bcd34bf49df25f8b9a0d68d81157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 11 Feb 2025 13:06:57 +0000 Subject: [PATCH 097/168] Add stubs for Sys.Devices.I2c and SPI to virtual nanoCLR (#3100) ***NO_CI*** (cherry picked from commit 6e5492ef3550f311441302ee9e12ab54522bc6a9) --- .../System.Device.I2c.filters | 30 ++++ .../System.Device.I2c.vcxproj | 162 +++++++++++++++++ ...tive_System_Device_I2c_I2cDevice_stubs.cpp | 35 ++++ .../System.Device.Spi.filters | 33 ++++ .../System.Device.Spi.vcxproj | 163 ++++++++++++++++++ ...ive_System_Device_Spi_SpiBusInfo_stubs.cpp | 24 +++ ...tive_System_Device_Spi_SpiDevice_stubs.cpp | 53 ++++++ targets/netcore/nanoCLR.sln | 30 ++++ .../nanoFramework.nanoCLR.vcxproj | 8 +- targets/win32/nanoCLR.sln | 29 ++++ .../CLR_RT_InteropAssembliesTable.cpp | 6 +- targets/win32/nanoCLR/nanoCLR.vcxproj | 6 + 12 files changed, 577 insertions(+), 2 deletions(-) create mode 100644 src/System.Device.I2c/System.Device.I2c.filters create mode 100644 src/System.Device.I2c/System.Device.I2c.vcxproj create mode 100644 src/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice_stubs.cpp create mode 100644 src/System.Device.Spi/System.Device.Spi.filters create mode 100644 src/System.Device.Spi/System.Device.Spi.vcxproj create mode 100644 src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiBusInfo_stubs.cpp create mode 100644 src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice_stubs.cpp diff --git a/src/System.Device.I2c/System.Device.I2c.filters b/src/System.Device.I2c/System.Device.I2c.filters new file mode 100644 index 0000000000..c32272f23b --- /dev/null +++ b/src/System.Device.I2c/System.Device.I2c.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + diff --git a/src/System.Device.I2c/System.Device.I2c.vcxproj b/src/System.Device.I2c/System.Device.I2c.vcxproj new file mode 100644 index 0000000000..33424b89dc --- /dev/null +++ b/src/System.Device.I2c/System.Device.I2c.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + {e9ae1af4-6b6a-4e10-b136-7a8affc5b910} + Win32Proj + nanoFramework.System.Device.I2c + 10.0 + + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + + diff --git a/src/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice_stubs.cpp b/src/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice_stubs.cpp new file mode 100644 index 0000000000..747adbd8c2 --- /dev/null +++ b/src/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice_stubs.cpp @@ -0,0 +1,35 @@ +// +// Copyright (c) .NET Foundation and Contributors +// Portions Copyright (c) Microsoft Corporation. All rights reserved. +// See LICENSE file in the project root for full license information. +// + +#include "sys_dev_i2c_native.h" + +HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOID(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___VOID(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: + NativeTransmit___SystemDeviceI2cI2cTransferResult__SystemSpanByte__SystemSpanByte(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} diff --git a/src/System.Device.Spi/System.Device.Spi.filters b/src/System.Device.Spi/System.Device.Spi.filters new file mode 100644 index 0000000000..77343b8c1d --- /dev/null +++ b/src/System.Device.Spi/System.Device.Spi.filters @@ -0,0 +1,33 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + diff --git a/src/System.Device.Spi/System.Device.Spi.vcxproj b/src/System.Device.Spi/System.Device.Spi.vcxproj new file mode 100644 index 0000000000..038745a168 --- /dev/null +++ b/src/System.Device.Spi/System.Device.Spi.vcxproj @@ -0,0 +1,163 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + {197c5bb5-72d2-4634-a5f8-8443dbf39985} + Win32Proj + nanoFramework.System.Device.Spi + 10.0 + + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\..\src\CLR\CorLib;..\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + + diff --git a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiBusInfo_stubs.cpp b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiBusInfo_stubs.cpp new file mode 100644 index 0000000000..55644b3ab9 --- /dev/null +++ b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiBusInfo_stubs.cpp @@ -0,0 +1,24 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +#include "sys_dev_spi_native.h" + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiBusInfo::NativeMaxClockFrequency___I4(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiBusInfo::NativeMinClockFrequency___I4(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} diff --git a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice_stubs.cpp b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice_stubs.cpp new file mode 100644 index 0000000000..1a7efe8e6a --- /dev/null +++ b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice_stubs.cpp @@ -0,0 +1,53 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +#include "sys_dev_spi_native.h" + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::DisposeNative___VOID(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice:: + NativeTransfer___VOID__SystemSpanByte__SystemSpanByte__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer___VOID__SZARRAY_U2__SZARRAY_U2__BOOLEAN( + CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeInit___VOID(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} + +HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeOpenDevice___I4(CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + NANOCLR_SET_AND_LEAVE(stack.NotImplementedStub()); + + NANOCLR_NOCLEANUP(); +} diff --git a/targets/netcore/nanoCLR.sln b/targets/netcore/nanoCLR.sln index f9921b28ff..6f7e3ba4fd 100644 --- a/targets/netcore/nanoCLR.sln +++ b/targets/netcore/nanoCLR.sln @@ -88,6 +88,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ..\..\nf.props = ..\..\nf.props EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.I2c", "..\..\src\System.Device.I2c\System.Device.I2c.vcxproj", "{E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Spi", "..\..\src\System.Device.Spi\System.Device.Spi.vcxproj", "{197C5BB5-72D2-4634-A5F8-8443DBF39985}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -518,6 +522,30 @@ Global {ABFE159E-84D5-489E-BFE6-8A7F4B597A44}.Release|x64.Build.0 = Release|x64 {ABFE159E-84D5-489E-BFE6-8A7F4B597A44}.Release|x86.ActiveCfg = Release|Win32 {ABFE159E-84D5-489E-BFE6-8A7F4B597A44}.Release|x86.Build.0 = Release|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.ActiveCfg = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.Build.0 = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.ActiveCfg = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.Build.0 = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x86.ActiveCfg = Debug|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x86.Build.0 = Debug|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|Any CPU.ActiveCfg = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|Any CPU.Build.0 = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x64.ActiveCfg = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x64.Build.0 = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.ActiveCfg = Release|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.Build.0 = Release|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.ActiveCfg = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.Build.0 = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.ActiveCfg = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.Build.0 = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x86.ActiveCfg = Debug|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x86.Build.0 = Debug|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|Any CPU.ActiveCfg = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|Any CPU.Build.0 = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.ActiveCfg = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.Build.0 = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.ActiveCfg = Release|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -555,6 +583,8 @@ Global {8FD84749-23EC-491C-9C21-41DBD72BA9F4} = {E91B7D05-94FA-4E24-8981-411E6A60092E} {5B70A795-A6F2-44DF-8566-5D68D9E892DB} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} {ABFE159E-84D5-489E-BFE6-8A7F4B597A44} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910} = {E91B7D05-94FA-4E24-8981-411E6A60092E} + {197C5BB5-72D2-4634-A5F8-8443DBF39985} = {E91B7D05-94FA-4E24-8981-411E6A60092E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {574F8A61-4693-4FDE-8770-BFAFF64BB7A0} diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj index 6293de1559..aa816d121c 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj +++ b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj @@ -311,6 +311,12 @@ {830a7e28-7b2b-4be6-8888-a39775a0092a} + + {e9ae1af4-6b6a-4e10-b136-7a8affc5b910} + + + {197c5bb5-72d2-4634-a5f8-8443dbf39985} + {8fd84749-23ec-491c-9c21-41dbd72ba9f4} @@ -328,6 +334,6 @@ - + \ No newline at end of file diff --git a/targets/win32/nanoCLR.sln b/targets/win32/nanoCLR.sln index 2c76dfcc2b..b8243705f1 100644 --- a/targets/win32/nanoCLR.sln +++ b/targets/win32/nanoCLR.sln @@ -75,6 +75,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Runtime.Serialization", "..\..\src\System.Runtime.Serialization\System.Runtime.Serialization.vcxproj", "{C9264D0A-AC25-46B0-BD08-4A3252427F19}" EndProject Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "nanoFramework.System.Threading", "..\..\..\..\nanoframework\lib-nanoFramework.System.Threading\nanoFramework.System.Threading\nanoFramework.System.Threading.nfproj", "{A8146E83-014A-4570-A2F9-8B8BE68CFD7B}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.I2c", "..\..\src\System.Device.I2c\System.Device.I2c.vcxproj", "{E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Spi", "..\..\src\System.Device.Spi\System.Device.Spi.vcxproj", "{197C5BB5-72D2-4634-A5F8-8443DBF39985}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -444,6 +447,30 @@ Global {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x64.Build.0 = Release|x64 {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x86.ActiveCfg = Release|Win32 {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x86.Build.0 = Release|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.ActiveCfg = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.Build.0 = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.ActiveCfg = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.Build.0 = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x86.ActiveCfg = Debug|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x86.Build.0 = Debug|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|Any CPU.ActiveCfg = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|Any CPU.Build.0 = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x64.ActiveCfg = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x64.Build.0 = Release|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.ActiveCfg = Release|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.Build.0 = Release|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.ActiveCfg = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.Build.0 = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.ActiveCfg = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.Build.0 = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x86.ActiveCfg = Debug|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x86.Build.0 = Debug|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|Any CPU.ActiveCfg = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|Any CPU.Build.0 = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.ActiveCfg = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.Build.0 = Release|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.ActiveCfg = Release|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -475,6 +502,8 @@ Global {46556AFC-C248-4082-ABE6-9B07F4E57579} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {830A7E28-7B2B-4BE6-8888-A39775A0092A} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {C9264D0A-AC25-46B0-BD08-4A3252427F19} = {383CE434-88F9-4BD4-99C3-D7F19558868D} + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910} = {383CE434-88F9-4BD4-99C3-D7F19558868D} + {197C5BB5-72D2-4634-A5F8-8443DBF39985} = {383CE434-88F9-4BD4-99C3-D7F19558868D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {432A3A35-F7BC-47DA-B887-9F18A369A065} diff --git a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp index 89d588d9aa..00502371e6 100644 --- a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp +++ b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -17,6 +17,8 @@ extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Net; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_IO_Ports; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_Gpio; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_IO_FileSystem; +extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_I2c; +extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_Spi; // nanoFramework class libraries declarations extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Events; @@ -36,6 +38,8 @@ const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[] = { &g_CLR_AssemblyNative_System_Net, &g_CLR_AssemblyNative_System_IO_Ports, &g_CLR_AssemblyNative_System_Device_Gpio, + &g_CLR_AssemblyNative_System_Device_I2c, + &g_CLR_AssemblyNative_System_Device_Spi, #ifndef NANOWIN32 &g_CLR_AssemblyNative_System_IO_FileSystem #endif diff --git a/targets/win32/nanoCLR/nanoCLR.vcxproj b/targets/win32/nanoCLR/nanoCLR.vcxproj index 8378a0fb58..42dc74e211 100644 --- a/targets/win32/nanoCLR/nanoCLR.vcxproj +++ b/targets/win32/nanoCLR/nanoCLR.vcxproj @@ -304,6 +304,12 @@ {830a7e28-7b2b-4be6-8888-a39775a0092a} + + {e9ae1af4-6b6a-4e10-b136-7a8affc5b910} + + + {197c5bb5-72d2-4634-a5f8-8443dbf39985} + {46556afc-c248-4082-abe6-9b07f4e57579} From 3407a4baa98b67afbe5e6e488a6d996979ab530d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 11 Feb 2025 19:39:23 +0000 Subject: [PATCH 098/168] Improve fill memory with dirty pattern (#3101) ***NO_CI*** (cherry picked from commit 781ae967ada45f33af909737e82050c07f7155a7) --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 39 +++++++++++++------- src/CLR/Core/CLR_RT_HeapCluster.cpp | 6 +-- src/CLR/Core/Cache.cpp | 8 ++-- src/CLR/Include/nanoCLR_Runtime__HeapBlock.h | 26 ++++++++++++- 4 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 7eeb0da781..955efe8dd9 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -2515,19 +2515,24 @@ void CLR_RT_HeapBlock::Debug_CheckPointer() const void CLR_RT_HeapBlock::Debug_CheckPointer(void *ptr) { NATIVE_PROFILE_CLR_CORE(); - switch ((size_t)ptr) + + switch ((intptr_t)ptr) { - case 0xCFCFCFCF: - case 0xCBCBCBCB: - case 0xABABABAB: - case 0xADADADAD: - case 0xDFDFDFDF: + case SENTINEL_CLUSTER_INSERT: + case SENTINEL_CLEAR_BLOCK: + case SENTINEL_NODE_APPENDED: + case SENTINEL_NODE_EXTRACTED: + case SENTINEL_RECOVERED: NANOCLR_STOP(); break; } } -void CLR_RT_HeapBlock::Debug_ClearBlock(int data) +#ifdef _WIN64 +void CLR_RT_HeapBlock::Debug_ClearBlock(CLR_UINT64 data) +#else +void CLR_RT_HeapBlock::Debug_ClearBlock(CLR_UINT32 data) +#endif { NATIVE_PROFILE_CLR_CORE(); CLR_UINT32 size = DataSize(); @@ -2536,19 +2541,25 @@ void CLR_RT_HeapBlock::Debug_ClearBlock(int data) { CLR_RT_HeapBlock_Raw *ptr = (CLR_RT_HeapBlock_Raw *)this; CLR_UINT32 raw1 = CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_OBJECT, 0, 1); - CLR_UINT32 raw2; - - raw2 = data & 0xFF; - raw2 = raw2 | (raw2 << 8); - raw2 = raw2 | (raw2 << 16); while (--size) { ptr++; ptr->data[0] = raw1; - ptr->data[1] = raw2; - ptr->data[2] = raw2; + +#ifdef _WIN64 + // need to cast this to CLR_UINT32 to avoid warning + // in the end these will be pointers so the size of the data type is irrelevant + ptr->data[1] = (CLR_UINT32)data; + ptr->data[2] = (CLR_UINT32)data; + ptr->data[3] = (CLR_UINT32)data; + ptr->data[4] = (CLR_UINT32)data; +#else + ptr->data[1] = data; + ptr->data[2] = data; + +#endif } } } diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index 21a779b7c3..d2c6b623da 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -192,7 +192,7 @@ CLR_RT_HeapBlock *CLR_RT_HeapCluster::ExtractBlocks(CLR_UINT32 dataType, CLR_UIN } else { - res->Debug_ClearBlock(0xCB); + res->Debug_ClearBlock(SENTINEL_CLEAR_BLOCK); } } @@ -254,7 +254,7 @@ void CLR_RT_HeapCluster::RecoverFromGC() ptr->SetPrev(last); last = ptr; - ptr->Debug_ClearBlock(0xDF); + ptr->Debug_ClearBlock(SENTINEL_RECOVERED); ptr = next; } @@ -321,7 +321,7 @@ CLR_RT_HeapBlock_Node *CLR_RT_HeapCluster::InsertInOrder(CLR_RT_HeapBlock_Node * } node->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_FREEBLOCK, CLR_RT_HeapBlock::HB_Pinned, size)); - node->Debug_ClearBlock(0xCF); + node->Debug_ClearBlock(SENTINEL_CLUSTER_INSERT); return node; } diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index 39ee40453c..ef7d6a832a 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -445,7 +445,7 @@ void CLR_RT_EventCache::Append_Node(CLR_RT_HeapBlock *node) NANOCLR_CHECK_EARLY_COLLECTION(ptr); - ptr->Debug_ClearBlock(0xAB); + ptr->Debug_ClearBlock(SENTINEL_NODE_APPENDED); lst.m_blocks.LinkAtBack(ptr); @@ -519,7 +519,7 @@ CLR_RT_HeapBlock *CLR_RT_EventCache::Extract_Node_Slow(CLR_UINT32 dataType, CLR_ } else { - node->Debug_ClearBlock(0xAD); + node->Debug_ClearBlock(SENTINEL_NODE_EXTRACTED); } #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) @@ -550,7 +550,7 @@ CLR_RT_HeapBlock *CLR_RT_EventCache::Extract_Node_Fast(CLR_UINT32 dataType, CLR_ } else { - ptr->Debug_ClearBlock(0xAD); + ptr->Debug_ClearBlock(SENTINEL_NODE_EXTRACTED); } #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index c3cafa8e6a..a44ffbb408 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -820,15 +820,37 @@ struct CLR_RT_HeapBlock //--// +#ifdef _WIN64 +#define SENTINEL_NODE_APPENDED 0xABABABABABABABAB +#define SENTINEL_NODE_EXTRACTED 0xADADADADADADADAD +#define SENTINEL_CLEAR_BLOCK 0xCBCBCBCBCBCBCBCB +#define SENTINEL_CLUSTER_INSERT 0xCFCFCFCFCFCFCFCF +#define SENTINEL_RECOVERED 0xDFDFDFDFDFDFDFDF +#else +#define SENTINEL_NODE_APPENDED 0xABABABAB +#define SENTINEL_NODE_EXTRACTED 0xADADADAD +#define SENTINEL_CLEAR_BLOCK 0xCBCBCBCB +#define SENTINEL_CLUSTER_INSERT 0xCFCFCFCF +#define SENTINEL_RECOVERED 0xDFDFDFDF +#endif + #if defined(NANOCLR_FILL_MEMORY_WITH_DIRTY_PATTERN) - void Debug_ClearBlock(int data); +#ifdef _WIN64 + void Debug_ClearBlock(CLR_UINT64 data); +#else + void Debug_ClearBlock(CLR_UINT32 data); +#endif void Debug_CheckPointer() const; static void Debug_CheckPointer(void *ptr); #else - void Debug_ClearBlock(int data) +#ifdef _WIN64 + void Debug_ClearBlock(CLR_UINT64 data) +#else + void Debug_ClearBlock(CLR_UINT32 data) +#endif { } void Debug_CheckPointer() const From d7105fffd2a1cab92293e24f671d98e01cd4f995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 11 Feb 2025 20:05:48 +0000 Subject: [PATCH 099/168] Improve output of GC runs (#3102) ***NO_CI*** (cherry picked from commit 3a9b2c3ccef4a091ce30194ae714aff33ccdb01a) --- src/CLR/Core/GarbageCollector.cpp | 43 +++++++++++++------- src/CLR/Core/GarbageCollector_Compaction.cpp | 23 +++++++++-- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index d5d712c267..c7a04e140d 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -141,10 +141,23 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() g_CLR_PRF_Profiler.RecordGarbageCollectionBegin(); #endif +#if defined(NANOCLR_TRACE_MEMORY_STATS) || defined(NANOCLR_GC_VERBOSE) + + CLR_UINT64 stats_start = HAL_Time_CurrentSysTicks(); + int ellapsedTimeMilliSec = 0; + +#endif + + // bump the number of garbage collections + m_numberOfGarbageCollections++; + #if defined(NANOCLR_GC_VERBOSE) if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\n\r\nGC: Start %s\r\n", HAL_Time_CurrentDateTimeToString()); + CLR_Debug::Printf( + "\r\n\r\nGC: Starting run #%d @ %s\r\n", + m_numberOfGarbageCollections, + HAL_Time_CurrentDateTimeToString()); } #endif @@ -152,12 +165,6 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() CLR_RT_ExecutionEngine::ExecutionConstraint_Suspend(); -#if defined(NANOCLR_TRACE_MEMORY_STATS) - - CLR_UINT64 stats_start = HAL_Time_CurrentSysTicks(); - -#endif - g_CLR_RT_EventCache.EventCache_Cleanup(); Mark(); @@ -171,13 +178,13 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() #if defined(NANOCLR_TRACE_MEMORY_STATS) if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - int milliSec = ((int)::HAL_Time_SysTicksToTime(HAL_Time_CurrentSysTicks() - stats_start) + - TIME_CONVERSION__TICKUNITS - 1) / - TIME_CONVERSION__TICKUNITS; + CLR_INT64 elapsed = HAL_Time_CurrentSysTicks() - stats_start; + ellapsedTimeMilliSec = + (int)((::HAL_Time_SysTicksToTime(elapsed) + TIME_CONVERSION__TICKUNITS - 1) / TIME_CONVERSION__TICKUNITS); CLR_Debug::Printf( "\r\nGC: %dmsec %d bytes used, %d bytes available\r\n\r\n", - milliSec, + ellapsedTimeMilliSec, m_totalBytes - m_freeBytes, m_freeBytes); } @@ -262,17 +269,23 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() CLR_RT_ExecutionEngine::ExecutionConstraint_Resume(); - m_numberOfGarbageCollections++; - //////////////////////////////////////////////////////////////////////////////////////////////// #if defined(NANOCLR_GC_VERBOSE) if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { + // compute ellapsed time if not done already + if (ellapsedTimeMilliSec == 0) + { + ellapsedTimeMilliSec = ((int)::HAL_Time_SysTicksToTime(HAL_Time_CurrentSysTicks() - stats_start) + + TIME_CONVERSION__TICKUNITS - 1) / + TIME_CONVERSION__TICKUNITS; + } + CLR_Debug::Printf( - "\r\n\r\nGC: (Run #%d) End %s\r\n", + "\r\n\r\nGC: Ended run #%d (took %dmsec)\r\n", m_numberOfGarbageCollections, - HAL_Time_CurrentDateTimeToString()); + ellapsedTimeMilliSec); } #endif diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 2ab6f90b1e..5be7111949 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -14,10 +14,20 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() g_CLR_PRF_Profiler.RecordHeapCompactionBegin(); #endif + // bump the number of heap compactions + m_numberOfCompactions++; + #if defined(NANOCLR_TRACE_MEMORY_STATS) + + CLR_UINT64 stats_start = HAL_Time_CurrentSysTicks(); + int ellapsedTimeMilliSec = 0; + if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\nGC: performing heap compaction\r\n"); + CLR_Debug::Printf( + "\r\n\r\nGC: Relocation - performing heap compaction run #%d @ %s\r\n", + m_numberOfCompactions, + HAL_Time_CurrentDateTimeToString()); } #endif @@ -29,8 +39,6 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() CLR_RT_ExecutionEngine::ExecutionConstraint_Resume(); - m_numberOfCompactions++; - //////////////////////////////////////////////////////////////////////////////////////////////// #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) g_CLR_PRF_Profiler.RecordHeapCompactionEnd(); @@ -39,7 +47,14 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() #if defined(NANOCLR_TRACE_MEMORY_STATS) if (s_CLR_RT_fTrace_MemoryStats >= c_CLR_RT_Trace_Info) { - CLR_Debug::Printf("\r\n\r\nGC: (Run %d) heap compaction completed\r\n", m_numberOfCompactions); + CLR_INT64 elapsed = HAL_Time_CurrentSysTicks() - stats_start; + ellapsedTimeMilliSec = + (int)((::HAL_Time_SysTicksToTime(elapsed) + TIME_CONVERSION__TICKUNITS - 1) / TIME_CONVERSION__TICKUNITS); + + CLR_Debug::Printf( + "\r\n\r\nGC: Relocation - heap compaction run #%d completed (took %dmsec)\r\n", + m_numberOfCompactions, + ellapsedTimeMilliSec); } #endif From cc8006e1afedc763ef386abe115d6069540ef806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 12 Feb 2025 22:21:48 +0000 Subject: [PATCH 100/168] Improve output messages for Memory and GC (#3103) ***NO_CI*** (cherry picked from commit 65e6c86002b2b5b91ce910176b703d0c2256e3ec) --- src/CLR/Core/CLR_RT_Memory.cpp | 26 +++---- src/CLR/Core/GarbageCollector_Info.cpp | 98 +++++--------------------- 2 files changed, 32 insertions(+), 92 deletions(-) diff --git a/src/CLR/Core/CLR_RT_Memory.cpp b/src/CLR/Core/CLR_RT_Memory.cpp index e453bc40ba..2fdaf13bc7 100644 --- a/src/CLR/Core/CLR_RT_Memory.cpp +++ b/src/CLR/Core/CLR_RT_Memory.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -36,11 +36,11 @@ void CLR_RT_Memory::Reset() void *CLR_RT_Memory::SubtractFromSystem(size_t len) { NATIVE_PROFILE_CLR_CORE(); - len = ROUNDTOMULTIPLE(len, CLR_UINT32); + len = ROUNDTOMULTIPLE(len, uintptr_t); if (len <= s_CLR_RT_Heap.size) { - s_CLR_RT_Heap.size -= (CLR_UINT32)len; + s_CLR_RT_Heap.m_size -= (uintptr_t)len; return &s_CLR_RT_Heap.location[s_CLR_RT_Heap.size]; } @@ -72,7 +72,7 @@ void CLR_RT_Memory::Release(void *ptr) if (ptr) { #if defined(NANOCLR_FILL_MEMORY_WITH_DIRTY_PATTERN) - DEBUG_POINTER_DECREMENT(ptr, c_extra + sizeof(CLR_UINT32)); + DEBUG_POINTER_DECREMENT(ptr, c_extra + sizeof(uintptr_t)); #endif CLR_RT_HeapBlock_BinaryBlob *pThis = CLR_RT_HeapBlock_BinaryBlob::GetBlob(ptr); @@ -84,15 +84,15 @@ void CLR_RT_Memory::Release(void *ptr) else { #if defined(NANOCLR_FILL_MEMORY_WITH_DIRTY_PATTERN) - CLR_UINT32 len = *(CLR_UINT32 *)ptr; + uintptr_t len = *(uintptr_t *)ptr; CLR_UINT8 *blk; - CLR_UINT32 pos; + uintptr_t pos; for (pos = 0, blk = (CLR_UINT8 *)ptr + sizeof(len); pos < c_extra; pos++, blk++) { if (*blk != 0xDD) { - CLR_Debug::Printf("CLR_RT_Memory::Release: HEAP OVERRUN START %08x(%d) = %08x\r\n", ptr, len, blk); + CLR_Debug::Printf("CLR_RT_Memory::Release: HEAP OVERRUN START %p(%zu) = %p\r\n", ptr, len, blk); NANOCLR_STOP(); } } @@ -101,7 +101,7 @@ void CLR_RT_Memory::Release(void *ptr) { if (*blk != 0xDD) { - CLR_Debug::Printf("CLR_RT_Memory::Release: HEAP OVERRUN END %08x(%d) = %08x\r\n", ptr, len, blk); + CLR_Debug::Printf("CLR_RT_Memory::Release: HEAP OVERRUN END %p(%zu) = %p\r\n", ptr, len, blk); NANOCLR_STOP(); } } @@ -110,7 +110,7 @@ void CLR_RT_Memory::Release(void *ptr) #if defined(NANOCLR_TRACE_MALLOC) s_TotalAllocated -= pThis->DataSize(); CLR_Debug::Printf( - "CLR_RT_Memory::Release : %08x = %3d blocks (tot %4d)\r\n", + "CLR_RT_Memory::Release : %p = %3d blocks (tot %4d)\r\n", ptr, pThis->DataSize(), s_TotalAllocated); @@ -149,7 +149,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) flags |= CLR_RT_HeapBlock::HB_Event; #if defined(NANOCLR_FILL_MEMORY_WITH_DIRTY_PATTERN) - len += c_extra * 2 + sizeof(CLR_UINT32); + len += c_extra * 2 + sizeof(uintptr_t); #endif CLR_RT_HeapBlock_BinaryBlob *obj = CLR_RT_HeapBlock_BinaryBlob::Allocate((CLR_UINT32)len, flags); @@ -160,7 +160,7 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) #if defined(NANOCLR_TRACE_MALLOC) s_TotalAllocated += obj->DataSize(); CLR_Debug::Printf( - "CLR_RT_Memory::Allocate: %08x = %3d blocks (tot %4d), %d bytes\r\n", + "CLR_RT_Memory::Allocate: %p = %3d blocks (tot %4d), %zu bytes\r\n", res, obj->DataSize(), s_TotalAllocated, @@ -170,9 +170,9 @@ void *CLR_RT_Memory::Allocate(size_t len, CLR_UINT32 flags) #if defined(NANOCLR_FILL_MEMORY_WITH_DIRTY_PATTERN) memset(res, 0xDD, len); - *(CLR_UINT32 *)res = (CLR_UINT32)len; + *(uintptr_t *)res = (uintptr_t)len; - DEBUG_POINTER_INCREMENT(res, c_extra + sizeof(CLR_UINT32)); + DEBUG_POINTER_INCREMENT(res, c_extra + sizeof(uintptr_t)); #endif return res; diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index 0652ea68f5..e543c7ac4f 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -109,12 +109,7 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) // Perform boundary checks if (ptr + ptr->DataSize() > end) { - -#ifdef _WIN64 - CLR_Debug::Printf("Block exceeds cluster boundary: 0x%016" PRIxPTR "\r\n", (uintptr_t)ptr); -#else - CLR_Debug::Printf("Block exceeds cluster boundary: 0x%08" PRIxPTR "\r\n", (uintptr_t)ptr) -#endif + CLR_Debug::Printf("Block exceeds cluster boundary: 0x%" PRIxPTR "\r\n", (uintptr_t)ptr); NANOCLR_DEBUG_STOP(); } @@ -130,15 +125,9 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) // nextPtr is before the current block if (nextPtr + nextPtr->DataSize() > ptr) { -#ifdef _WIN64 - CLR_Debug::Printf( - "Overlapping blocks detected. Next block of 0x%016" PRIxPTR " is overlapping it.\r\n", - (uintptr_t)ptr); -#else CLR_Debug::Printf( - "Overlapping blocks detected: Next block of 0x%08" PRIxPTR " is overlapping it.\r\n", + "Overlapping blocks detected. Next block of 0x%" PRIxPTR " is overlapping it.\r\n", (uintptr_t)ptr); -#endif } } } @@ -153,15 +142,9 @@ void CLR_RT_GarbageCollector::ValidateCluster(CLR_RT_HeapCluster *hc) // previousPtr is before the current block if (prevPtr + prevPtr->DataSize() > ptr) { -#ifdef _WIN64 - CLR_Debug::Printf( - "Overlapping blocks detected: Previous block of 0x%016" PRIxPTR " is overlapping it.\r\n", - (uintptr_t)ptr); -#else CLR_Debug::Printf( - "Overlapping blocks detected: Previous block of 0x%08" PRIxPTR " is overlapping it.\r\n", + "Overlapping blocks detected: Previous block of 0x%" PRIxPTR " is overlapping it.\r\n", (uintptr_t)ptr); -#endif } } } @@ -202,19 +185,11 @@ void CLR_RT_GarbageCollector::ValidateBlockNotInFreeList(CLR_RT_DblLinkedList &l if (ptr <= dst && dst < ptrEnd) { -#ifdef _WIN64 CLR_Debug::Printf( - "Pointer into free list!! 0x%016" PRIxPTR " 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", + "Pointer into free list!! 0x%" PRIxPTR " 0x%" PRIxPTR " 0x%" PRIxPTR "\r\n", (uintptr_t)dst, (uintptr_t)ptr, (uintptr_t)ptrEnd); -#else - CLR_Debug::Printf( - "Pointer into free list!! 0x%08" PRIxPTR " 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", - (uintptr_t)dst, - (uintptr_t)ptr, - (uintptr_t)ptrEnd); -#endif NANOCLR_DEBUG_STOP(); } @@ -279,7 +254,7 @@ CLR_RT_GarbageCollector::Rel_Map CLR_RT_GarbageCollector::s_mapNewToRecord; bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT32 *dst = (CLR_UINT32 *)*ref; + uintptr_t *dst = (uintptr_t *)*ref; if (dst) { @@ -302,11 +277,8 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) if (s_mapOldToRecord.find(ref) != s_mapOldToRecord.end()) { -#ifdef _WIN64 - CLR_Debug::Printf("Duplicate base OLD: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); -#else - CLR_Debug::Printf("Duplicate base OLD: 0x%08" PRIxPTR "\r\n", (uintptr_t)ref); -#endif + CLR_Debug::Printf("Duplicate base OLD: 0x%" PRIxPTR "\r\n", (uintptr_t)ref); + // need to free the memory allocated for the record platform_free(ptr); @@ -317,11 +289,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node *)dst, false)) { -#ifdef _WIN64 - CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); -#else - CLR_Debug::Printf("Some data points into a free list: 0x%08" PRIxPTR "\r\n", (uintptr_t)dst); -#endif + CLR_Debug::Printf("Some data points into a free list: 0x%" PRIxPTR "\r\n", (uintptr_t)dst); // need to free the memory allocated for the record platform_free(ptr); @@ -373,23 +341,19 @@ void CLR_RT_GarbageCollector::Relocation_UpdatePointer(void **ref) void CLR_RT_GarbageCollector::TestPointers_Remap() { NATIVE_PROFILE_CLR_CORE(); - Rel_Map_Iter it; - for (it = s_mapOldToRecord.begin(); it != s_mapOldToRecord.end(); it++) + for (Rel_Map_Iter it = s_mapOldToRecord.begin(); it != s_mapOldToRecord.end(); it++) { RelocationRecord *ptr = it->second; void **ref = it->first; CLR_RT_GarbageCollector::Relocation_UpdatePointer((void **)&ref); - CLR_UINT32 *dst = ptr->oldPtr; + void *dst = ptr->oldPtr; CLR_RT_GarbageCollector::Relocation_UpdatePointer((void **)&dst); if (s_mapNewToRecord.find(ref) != s_mapNewToRecord.end()) { -#ifdef _WIN64 - CLR_Debug::Printf("Duplicate base NEW: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); -#else - CLR_Debug::Printf("Duplicate base NEW: 0x%08" PRIxPTR "\r\n", (uintptr_t)ref); -#endif + CLR_Debug::Printf("Duplicate base NEW: 0x%" PRIxPTR "\r\n", (uintptr_t)ref); + NANOCLR_DEBUG_STOP(); } @@ -405,7 +369,7 @@ void CLR_RT_GarbageCollector::TestPointers_Remap() bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) { NATIVE_PROFILE_CLR_CORE(); - CLR_UINT32 *dst = (CLR_UINT32 *)*ref; + void *dst = *ref; if (dst) { @@ -417,43 +381,23 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) if (ptr->newPtr != dst) { -#ifdef _WIN64 - CLR_Debug::Printf( - "Bad pointer: 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", - (uintptr_t)ptr->newPtr, - (uintptr_t)dst); -#else CLR_Debug::Printf( - "Bad pointer: 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", + "Bad pointer: 0x%" PRIxPTR " 0x%" PRIxPTR "\r\n", (uintptr_t)ptr->newPtr, (uintptr_t)dst); -#endif + NANOCLR_DEBUG_STOP(); } - else if (ptr->data != *dst) + else if (ptr->data != *(uintptr_t *)dst) { -#ifdef _WIN64 - CLR_Debug::Printf( - "Bad data: 0x%016" PRIxPTR " 0x%016" PRIxPTR "\r\n", - (uintptr_t)ptr->data, - (uintptr_t)*dst); -#else - CLR_Debug::Printf( - "Bad data: 0x%08" PRIxPTR " 0x%08" PRIxPTR "\r\n", - (uintptr_t)ptr->data, - (uintptr_t)*dst); -#endif + CLR_Debug::Printf("Bad data: 0x%" PRIxPTR " 0x%" PRIxPTR "\r\n", ptr->data, *(uintptr_t *)dst); NANOCLR_DEBUG_STOP(); } if (IsBlockInFreeList(g_CLR_RT_ExecutionEngine.m_heap, (CLR_RT_HeapBlock_Node *)dst, false)) { -#ifdef _WIN64 - CLR_Debug::Printf("Some data points into a free list: 0x%016" PRIxPTR "\r\n", (uintptr_t)dst); -#else - CLR_Debug::Printf("Some data points into a free list: 0x%08" PRIxPTR "\r\n", (uintptr_t)dst); -#endif + CLR_Debug::Printf("Some data points into a free list: 0x%" PRIxPTR "\r\n", (uintptr_t)dst); NANOCLR_DEBUG_STOP(); } @@ -462,11 +406,7 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateNew_Worker(void **ref) } else { -#ifdef _WIN64 - CLR_Debug::Printf("Bad base: 0x%016" PRIxPTR "\r\n", (uintptr_t)ref); -#else - CLR_Debug::Printf("Bad base: 0x0x%08" PRIxPTR "\r\n", (uintptr_t)ref); -#endif + CLR_Debug::Printf("Bad base: 0x%" PRIxPTR "\r\n", (uintptr_t)ref); NANOCLR_DEBUG_STOP(); } From 4e0898859b103fbd2e3dfac2bffb74ed52a57a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 17 Feb 2025 14:38:01 +0000 Subject: [PATCH 101/168] Fix offset type in relocation region (#3111) ***NO_CI*** (cherry picked from commit fd891d3093145f3060fdd628feef23bfc88abf6d) --- src/CLR/Core/GarbageCollector_Compaction.cpp | 29 ++++++++------------ src/CLR/Include/nanoCLR_Runtime.h | 8 ++++-- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 5be7111949..e0eff9a6fd 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -138,7 +138,7 @@ void CLR_RT_GarbageCollector::Heap_Compact() while (true) { // - // We can only move backward. + // We can only move backwards. // if (currentSource < freeRegion) { @@ -201,14 +201,11 @@ void CLR_RT_GarbageCollector::Heap_Compact() relocCurrent->m_destination = (CLR_UINT8 *)freeRegion; relocCurrent->m_start = (CLR_UINT8 *)currentSource; - if (relocCurrent->m_destination < relocCurrent->m_start) - { - relocCurrent->m_offset = -(CLR_INT32)(relocCurrent->m_start - relocCurrent->m_destination); - } - else - { - relocCurrent->m_offset = (CLR_INT32)(relocCurrent->m_destination - relocCurrent->m_start); - } +#ifdef _WIN64 + relocCurrent->m_offset = (CLR_UINT64)(relocCurrent->m_destination - relocCurrent->m_start); +#else + relocCurrent->m_offset = (CLR_UINT32)(relocCurrent->m_destination - relocCurrent->m_start); +#endif // // Are the free block and the last moved block adjacent? @@ -400,15 +397,11 @@ void CLR_RT_GarbageCollector::Heap_Relocate_AddBlock(CLR_UINT8 *dst, CLR_UINT8 * reloc->m_start = src; reloc->m_end = &src[length]; reloc->m_destination = dst; - - if (reloc->m_destination < reloc->m_start) - { - reloc->m_offset = -(CLR_INT32)(reloc->m_start - reloc->m_destination); - } - else - { - reloc->m_offset = (CLR_INT32)(reloc->m_destination - reloc->m_start); - } +#ifdef _WIN64 + reloc->m_offset = (CLR_UINT64)(dst - src); +#else + reloc->m_offset = (CLR_UINT32)(dst - src); +#endif if (++m_relocCount == m_relocTotal) { diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index e4cce56c3a..be654b18a4 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -2868,7 +2868,11 @@ struct CLR_RT_GarbageCollector CLR_UINT8 *m_start; CLR_UINT8 *m_end; CLR_UINT8 *m_destination; - CLR_INT32 m_offset; +#ifdef _WIN64 + CLR_UINT64 m_offset; +#else + CLR_UINT32 m_offset; +#endif }; //--// From 75d11a008230b4762a4d3407dc5072af93e8bb12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 18 Feb 2025 02:22:30 +0000 Subject: [PATCH 102/168] Fixes and improvements in String heap block (#3112) ***NO_CI*** (cherry picked from commit 82bfee3a4e4f26707846b3e77bae123b8e26e3a9) --- src/CLR/Core/CLR_RT_HeapBlock_String.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp index 7e20f76ea3..5d2703d172 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -21,10 +21,11 @@ CLR_RT_HeapBlock_String *CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBloc if (str) { // grab a pointer to the string storage area (after the CLR_RT_HeapBlock_String header) - char *szText = (char *)&str[1]; + char const *szText = (char const *)&str[1]; - // zero out the string storage area - memset(szText, 0, CONVERTFROMSIZETOHEAPBLOCKS(totLength - sizeof(CLR_RT_HeapBlock_String))); + // zero out the string storage area (remove size of one CLR_RT_HeapBlock) + totLength -= sizeof(CLR_RT_HeapBlock); + memset((void *)szText, 0, totLength); #if defined(NANOCLR_NO_ASSEMBLY_STRINGS) str->SetStringText(szText); @@ -32,6 +33,7 @@ CLR_RT_HeapBlock_String *CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBloc str->SetStringText(szText, nullptr); #endif + // store reference to the storage area reference.SetObjectReference(str); } @@ -58,18 +60,17 @@ HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, con NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_String *str; - char *szTextDst; + CLR_RT_HeapBlock_String const *str; + char const *szTextDst; str = CreateInstance(reference, length); CHECK_ALLOCATION(str); // grab a pointer to the string storage area (after the CLR_RT_HeapBlock_String header) - szTextDst = (char *)str->StringText(); + szTextDst = str->StringText(); // copy the string to the storage area - memcpy(szTextDst, szText, length); - szTextDst[length] = 0; + memcpy((void *)szTextDst, szText, length); NANOCLR_NOCLEANUP(); } @@ -119,7 +120,7 @@ HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, CLR CLR_RT_UnicodeHelper uh; uh.SetInputUTF16(szText); CLR_UINT32 lengthInBytes = uh.CountNumberOfBytes(length); - CLR_RT_HeapBlock_String *str = CreateInstance(reference, lengthInBytes); + CLR_RT_HeapBlock_String const *str = CreateInstance(reference, lengthInBytes); CHECK_ALLOCATION(str); uh.m_outputUTF8 = (CLR_UINT8 *)str->StringText(); From 17ace794dc7dba756da154095ad02ebe066de87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 18 Feb 2025 19:19:55 +0000 Subject: [PATCH 103/168] Add profiler to virtual device (#3113) ***NO_CI*** (cherry picked from commit 2fa109236b136e6b31a09a1a02e55f4cb9dc95dc) --- src/CLR/Core/CLR_RT_Memory.cpp | 2 +- src/CLR/Core/Core.h | 2 - src/CLR/Diagnostics/Profiler.cpp | 231 +++++- .../ExecuteCommandLineOptions.cs | 16 +- .../ExecuteCommandProcessor.cs | 10 + .../Interop/nanoCLR.cs | 24 +- .../nanoFramework.nanoCLR.Host/NanoClrHost.cs | 21 +- .../NanoClrHostBuilder.cs | 39 + .../Profiler/BitStream.cs | 210 +++++ .../Profiler/ProfilerCommandExtensions.cs | 69 ++ .../Profiler/ProfilerLogFileProcessor.cs | 49 ++ .../Profiler/ProfilerMessageProcessor.cs | 46 ++ .../Profiler/ProfilerPackets.cs | 778 ++++++++++++++++++ .../nanoFramework.nanoCLR/nanoCLR_native.cpp | 29 + .../nanoFramework.nanoCLR/nanoCLR_native.h | 19 +- targets/win32/nanoCLR/main.cpp | 15 +- 16 files changed, 1541 insertions(+), 19 deletions(-) create mode 100644 targets/netcore/nanoFramework.nanoCLR.Host/Profiler/BitStream.cs create mode 100644 targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerCommandExtensions.cs create mode 100644 targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs create mode 100644 targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs create mode 100644 targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs diff --git a/src/CLR/Core/CLR_RT_Memory.cpp b/src/CLR/Core/CLR_RT_Memory.cpp index 2fdaf13bc7..c8e3500f27 100644 --- a/src/CLR/Core/CLR_RT_Memory.cpp +++ b/src/CLR/Core/CLR_RT_Memory.cpp @@ -40,7 +40,7 @@ void *CLR_RT_Memory::SubtractFromSystem(size_t len) if (len <= s_CLR_RT_Heap.size) { - s_CLR_RT_Heap.m_size -= (uintptr_t)len; + s_CLR_RT_Heap.size -= (uintptr_t)len; return &s_CLR_RT_Heap.location[s_CLR_RT_Heap.size]; } diff --git a/src/CLR/Core/Core.h b/src/CLR/Core/Core.h index b1c715c60e..c42434ba33 100644 --- a/src/CLR/Core/Core.h +++ b/src/CLR/Core/Core.h @@ -21,8 +21,6 @@ // #include #include -#ifdef _WIN64 #include -#endif #endif // NANOCLR_CORE_H diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 316db2f752..f24d4af9fd 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -10,6 +10,11 @@ #include #endif +#if defined(VIRTUAL_DEVICE) +#include "nanoCLR_native.h" +#include +#endif + #if defined(NANOCLR_PROFILE_NEW) CLR_PRF_Profiler g_CLR_PRF_Profiler; @@ -27,6 +32,11 @@ HRESULT CLR_PRF_Profiler::CreateInstance() g_CLR_PRF_Profiler.m_currentThreadPID = 0; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(g_CLR_PRF_Profiler.m_stream, nullptr, 0)); +#if defined(VIRTUAL_DEVICE) + // need to do the here to send the memory layout in the first packet + g_CLR_PRF_Profiler.SendMemoryLayout(); +#endif + NANOCLR_NOCLEANUP(); } @@ -52,10 +62,28 @@ void CLR_PRF_Profiler::SendMemoryLayout() // Send Memory Layout m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Memory_Layout, CLR_PRF_CMDS::Bits::CommandHeader); + +#if defined(_WIN64) + PackAndWriteBits((CLR_UINT32)((CLR_UINT64)s_CLR_RT_Heap.location >> 32)); +#endif PackAndWriteBits((CLR_UINT32)s_CLR_RT_Heap.location); + PackAndWriteBits(s_CLR_RT_Heap.size); Stream_Send(); + +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string memoryLayout = std::format( + "** Memory layout **\r\n start:0x{:X}\r\n end:0x{:X}\r\n size:0x{:X}\r\n", + (unsigned long long)s_CLR_RT_Heap.location, + (unsigned long long)s_CLR_RT_Heap.location + s_CLR_RT_Heap.size, + s_CLR_RT_Heap.size); + + g_ProfilerMessageCallback(memoryLayout.c_str()); + } +#endif } HRESULT CLR_PRF_Profiler::DumpHeap() @@ -500,7 +528,14 @@ void CLR_PRF_Profiler::DumpEndOfRefsList() void CLR_PRF_Profiler::DumpPointer(void *ptr) { NATIVE_PROFILE_CLR_DIAGNOSTICS(); - PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.location)); + +#ifdef _WIN64 + CLR_UINT64 ptrVAlue = ((CLR_UINT8 *)ptr - s_CLR_RT_Heap.location); + PackAndWriteBits((CLR_UINT32)(ptrVAlue >> 32)); + PackAndWriteBits((CLR_UINT32)ptrVAlue); +#else + PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.m_location)); +#endif } void CLR_PRF_Profiler::DumpSingleReference(CLR_RT_HeapBlock *ptr) @@ -693,6 +728,29 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) CLR_RT_TypeDef_Index idx = ptr->ObjectCls(); PackAndWriteBits(idx); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + g_CLR_RT_TypeSystem.BuildTypeName(idx, szBuffer, iBuffer); + + // compose output message + std::string objectCreation = std::format( + "New {} {} @ 0x{:X} [{:08x}] {} bytes\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)ptr), + idx.data, + (dataSize * sizeof(struct CLR_RT_HeapBlock))); + + g_ProfilerMessageCallback(objectCreation.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -723,6 +781,34 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) PackAndWriteBits(array->ReflectionDataConst().data.type); PackAndWriteBits(array->ReflectionDataConst().levels); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + CLR_RT_TypeDef_Instance arrayTypeDef{}; + CLR_UINT32 levels; + arrayTypeDef.InitializeFromReflection(array->ReflectionData(), &levels); + + g_CLR_RT_TypeSystem.BuildTypeName(arrayTypeDef, szBuffer, iBuffer); + + // compose output message + std::string objectCreation = std::format( + "New {}[] @ 0x{:X} {} bytes [{:08x}] {} elements {} level(s)\r\n", + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)ptr), + (dataSize * sizeof(struct CLR_RT_HeapBlock)), + elementIdx.data, + array->m_numOfElements, + levels); + + g_ProfilerMessageCallback(objectCreation.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -745,6 +831,17 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) #endif #endif // NANOCLR_TRACE_PROFILER_MESSAGES } + else + { + // compose output message + std::string objectCreation = std::format( + "New {} @ 0x{:X} {} bytes\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + (CLR_UINT64)((CLR_UINT8 *)ptr), + (dataSize * sizeof(struct CLR_RT_HeapBlock))); + + g_ProfilerMessageCallback(objectCreation.c_str()); + } #ifdef NANOCLR_TRACE_PROFILER_MESSAGES else { @@ -792,6 +889,74 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Allocs_Delete, CLR_PRF_CMDS::Bits::CommandHeader); DumpPointer(ptr); Stream_Send(); + +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + if (dt == DATATYPE_SZARRAY) + { + CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + CLR_RT_TypeDef_Index elementIdx = array->ReflectionDataConst().data.type; + + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + CLR_RT_TypeDef_Instance arrayTypeDef{}; + CLR_UINT32 levels; + arrayTypeDef.InitializeFromReflection(array->ReflectionData(), &levels); + + g_CLR_RT_TypeSystem.BuildTypeName(arrayTypeDef, szBuffer, iBuffer); + + // compose output message + std::string objectCreation = std::format( + "Delete {}[] @ 0x{:X} {} bytes [{:08x}] {} elements {} level(s)\r\n", + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)ptr), + (ptr->DataSize() * sizeof(struct CLR_RT_HeapBlock)), + elementIdx.data, + array->m_numOfElements, + levels); + + g_ProfilerMessageCallback(objectCreation.c_str()); + } + else if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) + { + CLR_RT_TypeDef_Index idx = ptr->ObjectCls(); + + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + g_CLR_RT_TypeSystem.BuildTypeName(idx, szBuffer, iBuffer); + + // compose output message + std::string objectCreation = std::format( + "Delete {} {} @ 0x{:X} [{:08x}] {} bytes\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)ptr), + idx.data, + (ptr->DataSize() * sizeof(struct CLR_RT_HeapBlock))); + + g_ProfilerMessageCallback(objectCreation.c_str()); + } + else + { + CLR_UINT16 dataSize = ptr->DataSize(); + + std::string objectDeletion = std::format( + "Delete {} @ 0x{:X} {} bytes\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + (CLR_UINT64)((CLR_UINT8 *)ptr), + (dataSize * sizeof(struct CLR_RT_HeapBlock))); + + g_ProfilerMessageCallback(objectDeletion.c_str()); + } + } +#endif } #ifdef NANOCLR_TRACE_PROFILER_MESSAGES @@ -841,6 +1006,19 @@ void CLR_PRF_Profiler::TrackObjectRelocation() DumpPointer(relocBlocks[i].m_end); PackAndWriteBits(relocBlocks[i].m_offset); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string objectRelocation = std::format( + "Relocate 0x{:X} to 0x{:X} offset 0x{:X}\r\n", + (CLR_UINT64)relocBlocks[i].m_start, + (CLR_UINT64)relocBlocks[i].m_destination, + relocBlocks[i].m_offset); + + g_ProfilerMessageCallback(objectRelocation.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -880,6 +1058,15 @@ void CLR_PRF_Profiler::RecordGarbageCollectionBegin() PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string garbageCollection = + std::format("GC: Starting run #{}\r\n", g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections); + g_ProfilerMessageCallback(garbageCollection.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -918,6 +1105,18 @@ void CLR_PRF_Profiler::RecordGarbageCollectionEnd() PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string garbageCollection = std::format( + "GC: Finished run #{} - {} bytes free\r\n", + g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections, + g_CLR_RT_GarbageCollector.m_freeBytes); + + g_ProfilerMessageCallback(garbageCollection.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -968,6 +1167,16 @@ void CLR_PRF_Profiler::RecordHeapCompactionBegin() PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string heapCompaction = + std::format("Heap compaction: Starting run #{} \r\n", g_CLR_RT_GarbageCollector.m_numberOfCompactions); + + g_ProfilerMessageCallback(heapCompaction.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -1006,6 +1215,17 @@ void CLR_PRF_Profiler::RecordHeapCompactionEnd() PackAndWriteBits(g_CLR_RT_GarbageCollector.m_freeBytes); Stream_Send(); +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + std::string heapCompaction = std::format( + "Heap compaction: Finished run #{}\r\n", + g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections); + + g_ProfilerMessageCallback(heapCompaction.c_str()); + } +#endif + #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -1155,6 +1375,13 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() _ASSERTE(false); NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } + +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerDataCallback != NULL) + { + g_ProfilerDataCallback(ptr->m_payload, payloadLength); + } +#endif } // Don't go past the cursor. diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs index da11ef038c..837e3949ac 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandLineOptions.cs @@ -3,8 +3,8 @@ // See LICENSE file in the project root for full license information. // -using CommandLine; using System.Collections.Generic; +using CommandLine; namespace nanoFramework.nanoCLR.CLI { @@ -65,6 +65,20 @@ public class ExecuteCommandLineOptions : CommonOptions HelpText = "Trace wire protocol packets.")] public bool TraceWireProtocol { get; set; } + [Option( + "profiler", + Required = false, + Default = false, + HelpText = "Enable profiler.")] + public bool EnableProfiler { get; set; } + + [Option( + "dumpprofilerdata", + Required = false, + Default = false, + HelpText = "Dump profiler raw data to a file.")] + public bool DumpProfilerData { get; set; } + [Option( 'r', "resolve", diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandProcessor.cs index de694a2604..8ade06f533 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandProcessor.cs +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/ExecuteCommandProcessor.cs @@ -125,6 +125,16 @@ public static int ProcessVerb( hostBuilder.UsePortTrace(); } + if (options.EnableProfiler) + { + hostBuilder.EnableProfiler(); + } + + if(options.DumpProfilerData) + { + hostBuilder.DumpProfilerLogData(); + } + hostBuilder.WaitForDebugger = options.WaitForDebugger; hostBuilder.EnterDebuggerLoopAfterExit = options.EnterDebuggerLoopAfterExit; hostBuilder.PerformGarbageCollection = options.PerformGarbageCollection; diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Interop/nanoCLR.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Interop/nanoCLR.cs index 925e493c60..ffb59908c8 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/Interop/nanoCLR.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Interop/nanoCLR.cs @@ -46,11 +46,17 @@ internal delegate int WireTransmitDelegate( internal delegate int WireReceiveDelegate( [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)][Out] byte[] data, int length); - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// - // The following declaration have the functions names exposed in the C++ DLL - // Keep their names in sync with the C++ code @ netcore\nanoFramework.nanoCLR\nanoCLR_native.cpp - // and netcore\nanoFramework.nanoCLR\nanoCLR_native.h - ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + internal delegate void ProfilerMessageDelegate( + [MarshalAs(UnmanagedType.LPStr)] string message); + + internal delegate void ProfilerDataDelegate( + [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)][In] byte[] data, int length); + + /////////////////////////////////////////////////////////////////////////////////////////////////// + // The following declaration have the functions names exposed in the C++ DLL // + // Keep their names in sync with the C++ code @ netcore\nanoFramework.nanoCLR\nanoCLR_native.cpp // + // and netcore\nanoFramework.nanoCLR\nanoCLR_native.h // + /////////////////////////////////////////////////////////////////////////////////////////////////// [DllImport(NativeLibraryName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] internal static extern void nanoCLR_Run(nanoCLRSettings nanoClrSettings); @@ -89,6 +95,14 @@ internal static extern void nanoCLR_SetWireProtocolReceiveCallback( internal static extern void nanoCLR_SetWireProtocolTransmitCallback( [MarshalAs(UnmanagedType.FunctionPtr)] WireTransmitDelegate transmitCallback); + [DllImport(NativeLibraryName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] + internal static extern void nanoCLR_SetProfilerMessageCallback( + [MarshalAs(UnmanagedType.FunctionPtr)] ProfilerMessageDelegate profilerMessageCallback); + + [DllImport(NativeLibraryName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] + internal static extern void nanoCLR_SetProfilerDataCallback( + [MarshalAs(UnmanagedType.FunctionPtr)] ProfilerDataDelegate profilerDataCallback); + [DllImport(NativeLibraryName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] internal static extern void nanoCLR_WireProtocolProcess(); diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHost.cs b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHost.cs index 90b47a3c5b..228d2fc385 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHost.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHost.cs @@ -16,6 +16,7 @@ public class nanoCLRHost internal List PreInitConfigureSteps { get; } = new(); internal List ConfigureSteps { get; } = new(); + internal List CleanupSteps { get; } = new(); internal nanoCLRSettings nanoCLRSettings { get; set; } = nanoCLRSettings.Default; internal IPort WireProtocolPort { get; set; } @@ -48,7 +49,23 @@ public void Run() private void Cleanup() { - _wireProtocolChannel?.Disconnect(); + try + { + _wireProtocolChannel?.Disconnect(); + } + catch (Exception ex) + { + Console.WriteLine($"Error during wire protocol cleanup: {ex.Message}"); + } + + try + { + CleanupRuntime(); + } + catch (Exception ex) + { + Console.WriteLine($"Error during runtime cleanup: {ex.Message}"); + } } private void InitWireProtocol(IPort wireProtocolPort) @@ -66,6 +83,8 @@ private uint ConfigureRuntime() return Interop.nanoCLR.ClrOk; } + private void CleanupRuntime() => CleanupSteps.ForEach(s => s()); + public static nanoCLRHostBuilder CreateBuilder() => new nanoCLRHostBuilder() { }; public static nanoCLRHostBuilder CreateBuilder(string dllPath) => new nanoCLRHostBuilder(dllPath) { }; diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs index a907fd9cd1..d214a04910 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs @@ -10,6 +10,7 @@ using nanoFramework.nanoCLR.Host.Port.NamedPipe; using nanoFramework.nanoCLR.Host.Port.Serial; using nanoFramework.nanoCLR.Host.Port.TcpIp; +using nanoFramework.nanoCLR.Host.Profiler; namespace nanoFramework.nanoCLR.Host { @@ -18,7 +19,10 @@ public class nanoCLRHostBuilder private static nanoCLRHost s_nanoClrHost = null; private readonly List _configureSteps = new(); private readonly List _preInitConfigureSteps = new(); + private readonly List _cleanupSteps = new(); private IPort _wireProtocolPort; + private ProfilerMessageProcessor _profilerMessageProcessor; + private ProfilerLogFileProcessor _profilerLogFileProcessor; public int MaxContextSwitches { get; set; } = 50; public bool WaitForDebugger { get; set; } = false; @@ -106,6 +110,27 @@ public nanoCLRHostBuilder UseNamedPipeWireProtocol(string name) => public nanoCLRHostBuilder UsePortTrace() => UseWireProtocolPort(new TraceDataPort(_wireProtocolPort)); + public nanoCLRHostBuilder EnableProfiler() + { + _profilerMessageProcessor = new ProfilerMessageProcessor(); + SetProfilerMessageCallback(_profilerMessageProcessor.MessageHandler); + + _cleanupSteps.Add(() => _profilerMessageProcessor.Dispose()); + + return this; + } + + public nanoCLRHostBuilder DumpProfilerLogData() + { + _profilerLogFileProcessor = new ProfilerLogFileProcessor(); + + SetProfilerLogDataCallback(_profilerLogFileProcessor.MessageHandler); + + _cleanupSteps.Add(() => _profilerLogFileProcessor.Dispose()); + + return this; + } + public nanoCLRHost Build() { if (s_nanoClrHost != null) @@ -134,5 +159,19 @@ public nanoCLRHost Build() public void UnloadNanoClrDll() => Interop.nanoCLR.UnloadNanoClrImageDll(); public void OutputNanoClrDllInfo() => Console.WriteLine($"nanoCLR loaded from '{Interop.nanoCLR.FindNanoClrDll()}'"); + + private nanoCLRHostBuilder SetProfilerMessageCallback(Action profilerMessage) + { + _preInitConfigureSteps.Add(() => Interop.nanoCLR.nanoCLR_SetProfilerMessageCallback((msg) => profilerMessage(msg))); + + return this; + } + + private nanoCLRHostBuilder SetProfilerLogDataCallback(Action messageHandler) + { + _configureSteps.Add(() => Interop.nanoCLR.nanoCLR_SetProfilerDataCallback((data, length) => messageHandler(data, length))); + + return this; + } } } diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/BitStream.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/BitStream.cs new file mode 100644 index 0000000000..a427493302 --- /dev/null +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/BitStream.cs @@ -0,0 +1,210 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.IO; + +namespace nanoFramework.Tools.NanoProfiler.Packets +{ + // developer note: this class was taken from the nanoFramework.Tools.Debugger project and simplified + internal class BitStream + { + class Buffer + { + const int c_BufferSize = 2048; + + internal Buffer _next = null; + internal byte[] _data; + internal int _length; + internal int _avail; //Bits available at last position. + + internal Buffer() + { + _data = new byte[c_BufferSize]; + _length = 0; + } + + internal Buffer( + byte[] data, + int pos, + int len, + int bitsInLastPos) + { + if (bitsInLastPos < 1 || bitsInLastPos > 8) + { + throw new ArgumentException("bits"); + } + + _data = new byte[len]; + _avail = bitsInLastPos; + + // can't copy more than what's available in the source array! + if (len > data.Length - pos) + { + // NOT enough elements, so adjust length to copy + _length = data.Length - pos; + } + else + { + // all good + _length = len; + } + + Array.Copy( + data, + pos, + _data, + 0, + _length); + } + } + + Buffer _first; + Buffer _current; + Buffer _last; + int _pos; + int _avail; + + bool _streamEnded; + + public BitStream() + { + _first = new Buffer(); + _last = _first; + _streamEnded = false; + + Rewind(); + } + + public BitStream( + byte[] data, + int pos, + int len) : this() + { + if (data == null) + { + throw new ArgumentNullException(nameof(data)); + } + AppendChunk(data, pos, len * 8); + } + + public void MarkStreamEnd() + { + _streamEnded = true; + } + + public void AppendChunk( + byte[] data, + int pos, + int bitlen) + { + if (bitlen > 0) + { + int len = bitlen / 8; + int bitsInLast = bitlen % 8; + if (bitsInLast == 0) + { + bitsInLast = 8; + } + else + { + len++; + } + + Buffer next = new Buffer(data, pos, len, bitsInLast); + + if (_last == null) + { + _first = _last = _current = next; + Rewind(); + } + else + { + _last._next = next; + _last = next; + } + } + } + + public void Rewind() + { + _current = _first; + _pos = -1; + _avail = 0; + } + + public int BitsAvailable + { + get + { + int val; + + Buffer ptr = _current; + val = 8 * (ptr._length - _pos) + _avail - 8; + + while (ptr._next != null) + { + ptr = ptr._next; + + val += 8 * (ptr._length - 1) + ptr._avail; + } + + return val; + } + } + + public uint ReadBits(int bits) + { + if (bits > 32) throw new ArgumentException("Max number of bits per read is 32"); + + uint val = 0; + int pos = bits; + int bitsOrig = bits; + + while (bits > 0) + { + while (_avail == 0) + { + _pos++; + + while (_pos >= _current._length) + { + if (_current._next == null) + { + throw new EndOfStreamException(); + } + else + { + _current = _current._next; + _pos = 0; + } + } + + if (_pos < _current._length - 1) + { + _avail = 8; + } + else + { + _avail = _current._avail; + } + } + + int insert = Math.Min(bits, _avail); + uint mask = ((1U << insert) - 1U); + int shift = _avail - insert; + + if (_pos == _current._length - 1) + { + shift += 8 - _current._avail; + } + + pos -= insert; val |= (((uint)_current._data[_pos] >> shift) & mask) << pos; + bits -= insert; + _avail -= insert; + } + + return val; + } + } +} diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerCommandExtensions.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerCommandExtensions.cs new file mode 100644 index 0000000000..fde52137cf --- /dev/null +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerCommandExtensions.cs @@ -0,0 +1,69 @@ +//// +// Copyright (c) .NET Foundation and Contributors. +// See LICENSE file in the project root for full license information. +//// + +using System; + +namespace nanoFramework.Tools.NanoProfiler.Extensions +{ + public static class ProfilerCommandExtensions + { + public static string ToCommandName(this uint type) + { + switch (type) + { + case Packets.Commands.c_Profiling_Timestamp: + return "Timestamp"; + + case Packets.Commands.c_Profiling_Memory_Layout: + return "Memory Layout"; + + case Packets.Commands.c_Profiling_HeapDump_Start: + return "HeapDump Start"; + + case Packets.Commands.c_Profiling_HeapDump_Stop: + return "HeapDump Stop"; + + case Packets.Commands.c_Profiling_HeapDump_Root: + return "HeapDump Root"; + + case Packets.Commands.c_Profiling_HeapDump_Object: + return "HeapDump Object"; + + case Packets.Commands.c_Profiling_Calls_Call: + return "Calls Call"; + + case Packets.Commands.c_Profiling_Calls_Return: + return "Calls Return"; + + case Packets.Commands.c_Profiling_Calls_CtxSwitch: + return "Calls CtxSwitch"; + + case Packets.Commands.c_Profiling_Allocs_Alloc: + return "Allocs Alloc"; + + case Packets.Commands.c_Profiling_Allocs_Relloc: + return "Allocs Relloc"; + + case Packets.Commands.c_Profiling_Allocs_Delete: + return "Allocs Delete"; + + case Packets.Commands.c_Profiling_GarbageCollect_Begin: + return "GC Begin"; + + case Packets.Commands.c_Profiling_GarbageCollect_End: + return "GC End"; + + case Packets.Commands.c_Profiling_HeapCompact_Begin: + return "HeapCompaction Begin"; + + case Packets.Commands.c_Profiling_HeapCompact_End: + return "HeapCompaction End"; + + default: + throw new ApplicationException("Unable to decode Command type."); + } + } + } +} diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs new file mode 100644 index 0000000000..08a69eba27 --- /dev/null +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs @@ -0,0 +1,49 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +using System; +using System.IO; +using nanoFramework.Tools.NanoProfiler; +using nanoFramework.Tools.NanoProfiler.Packets; + +namespace nanoFramework.nanoCLR.Host.Profiler +{ + internal class ProfilerLogFileProcessor : IDisposable + { + private readonly StreamWriter _profilerDumpWriter; + + public ProfilerLogFileProcessor() + { + // create output file for profiler binary dump + string _profileBinaryFileName = $"{Guid.NewGuid()}_{DateTime.Now.ToString("s").Replace(":", "_")}.log"; + + string logFilePath = Path.Combine(Path.GetTempPath(), _profileBinaryFileName); + + // inform user about the binary file + Console.WriteLine($"Profiler log file: {logFilePath}"); + + try + { + _profilerDumpWriter = new StreamWriter( + logFilePath, + new FileStreamOptions() { Mode = FileMode.Create, Access = FileAccess.ReadWrite, Options = FileOptions.WriteThrough, Share = FileShare.ReadWrite }); + } + catch (IOException ex) + { + throw new IOException($"Failed to create profiler message log file at {logFilePath}", ex); + } + } + + internal void MessageHandler(byte[] data, int length) + { + BitStream stream = new BitStream(data, 0, length); + + Tools.NanoProfiler.Packets.ProfilerPacket pp = ProfilerPacketFactory.Decode(stream, null); + + } + + public void Dispose() => ((IDisposable)_profilerDumpWriter).Dispose(); + } +} diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs new file mode 100644 index 0000000000..36627ac45d --- /dev/null +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs @@ -0,0 +1,46 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +using System; +using System.IO; + +namespace nanoFramework.nanoCLR.Host.Profiler +{ + /// + /// Class to process profiler messages. + /// + internal class ProfilerMessageProcessor : IDisposable + { + private readonly StreamWriter _profileLogWriter; + + public ProfilerMessageProcessor() + { + // create output file for profiler messages + string _profileLogFileName = $"{Guid.NewGuid()}_{DateTime.Now.ToString("s").Replace(":", "_")}.log"; + + string logFilePath = Path.Combine(Path.GetTempPath(), _profileLogFileName); + + // inform user about the log file + Console.WriteLine($"Profiler output file: {logFilePath}"); + + try + { + _profileLogWriter = new StreamWriter( + logFilePath, + new FileStreamOptions() { Mode = FileMode.Create, Access = FileAccess.ReadWrite, Options = FileOptions.WriteThrough, Share = FileShare.ReadWrite }); + } + catch (IOException ex) + { + throw new IOException($"Failed to create profiler log file at {logFilePath}", ex); + } + } + internal void MessageHandler(string message) + { + _profileLogWriter.WriteLine(message); + } + + public void Dispose() => ((IDisposable)_profileLogWriter).Dispose(); + } +} diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs new file mode 100644 index 0000000000..2a0731fddd --- /dev/null +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs @@ -0,0 +1,778 @@ +//// +// Copyright (c) .NET Foundation and Contributors. +// Portions Copyright (c) Microsoft Corporation. All rights reserved. +// See LICENSE file in the project root for full license information. +//// + +using System; +using System.Diagnostics; +using nanoFramework.Tools.NanoProfiler.Extensions; +using nanoFramework.Tools.NanoProfiler.Packets; + +namespace nanoFramework.Tools.NanoProfiler +{ + internal class Tracing + { + [Conditional("PACKET_TRACE")] + internal static void PacketTrace(string format, params object[] args) + { + System.Diagnostics.Debug.Print(format, args); + } + + [Conditional("PACKET_TRACE")] + internal static void PacketTrace(string ouptut) + { + System.Diagnostics.Debug.Print(ouptut); + } + } + + internal class ProfilerPacketFactory + { + internal static Packets.ProfilerPacket Decode(BitStream stream, Action logText) + { + uint type = stream.ReadBits(Packets.Commands.Bits.CommandHeader); + + Tracing.PacketTrace("New Packet: {0}", type.ToCommandName()); + + switch (type) + { + case Packets.Commands.c_Profiling_Timestamp: + return new Packets.TimestampPacket(stream); + case Packets.Commands.c_Profiling_Memory_Layout: + return new Packets.MemoryLayoutPacket(stream); + case Packets.Commands.c_Profiling_HeapDump_Start: + return new Packets.HeapDumpStartPacket(stream); + case Packets.Commands.c_Profiling_HeapDump_Stop: + return new Packets.HeapDumpStopPacket(stream); + case Packets.Commands.c_Profiling_HeapDump_Root: + return new Packets.HeapDumpRootPacket(stream); + case Packets.Commands.c_Profiling_HeapDump_Object: + return new Packets.HeapDumpObjectPacket(stream); + case Packets.Commands.c_Profiling_Calls_Call: + return new Packets.CallPacket(stream); + case Packets.Commands.c_Profiling_Calls_Return: + return new Packets.ReturnPacket(stream); + case Packets.Commands.c_Profiling_Calls_CtxSwitch: + return new Packets.ContextSwitchPacket(stream); + case Packets.Commands.c_Profiling_Allocs_Alloc: + return new Packets.ObjectAllocationPacket(stream); + case Packets.Commands.c_Profiling_Allocs_Relloc: + return new Packets.ObjectRelocationPacket(stream); + case Packets.Commands.c_Profiling_Allocs_Delete: + return new Packets.ObjectDeletionPacket(stream); + case Packets.Commands.c_Profiling_GarbageCollect_Begin: + return new Packets.GarbageCollectionBeginPacket(stream); + case Packets.Commands.c_Profiling_GarbageCollect_End: + return new Packets.GarbageCollectionEndPacket(stream); + case Packets.Commands.c_Profiling_HeapCompact_Begin: + return new Packets.HeapCompactionBeginPacket(stream); + case Packets.Commands.c_Profiling_HeapCompact_End: + return new Packets.HeapCompactionEndPacket(stream); + default: + throw new ApplicationException("Unable to decode packet."); + } + } + } +} + +namespace nanoFramework.Tools.NanoProfiler.Packets +{ + internal static class Commands + { + internal const byte c_Profiling_Timestamp = 0x01; + internal const byte c_Profiling_Memory_Layout = 0x02; + + internal const byte c_Profiling_HeapDump_Start = 0x03; + internal const byte c_Profiling_HeapDump_Root = 0x04; + internal const byte c_Profiling_HeapDump_Object = 0x05; + internal const byte c_Profiling_HeapDump_Stop = 0x06; + + internal const byte c_Profiling_Calls_Call = 0x07; + internal const byte c_Profiling_Calls_Return = 0x08; + internal const byte c_Profiling_Calls_CtxSwitch = 0x09; + + internal const byte c_Profiling_Allocs_Alloc = 0x0a; + internal const byte c_Profiling_Allocs_Relloc = 0x0b; + internal const byte c_Profiling_Allocs_Delete = 0x0c; + + internal const byte c_Profiling_GarbageCollect_Begin = 0x0d; + internal const byte c_Profiling_GarbageCollect_End = 0x0e; + + internal const byte c_Profiling_HeapCompact_Begin = 0x0f; + internal const byte c_Profiling_HeapCompact_End = 0x10; + + internal static class RootTypes + { + internal const byte Root_Finalizer = 0x01; + internal const byte Root_AppDomain = 0x02; + internal const byte Root_Assembly = 0x03; + internal const byte Root_Thread = 0x04; + internal const byte Root_Stack = 0x05; + } + + internal static class Bits + { + internal const int AssemblyShift = 16; + internal const int CallTimingShift = 4; + internal const int CommandHeader = 8; + internal const int DataType = 8; + internal const int NibbleCount = 3; + internal const int RootTypes = 3; + internal const int TimestampShift = 8; + } + } + + internal abstract class ProfilerPacket + { + private byte m_type; + internal byte Type + { + get { return m_type; } + } + + private ProfilerPacket() { } + protected ProfilerPacket(byte type) { m_type = type; } + + // TODO: implement processor + // internal abstract void Process(ProfilerSession sess); + + static protected uint ReadAndUnpackBits(BitStream stream) + { + const int SHIFT_PER_NIBBLE = 2; //2^2 = 4 bits per nibble + uint nibbles = stream.ReadBits(Packets.Commands.Bits.NibbleCount) + 1; + return stream.ReadBits((int)nibbles << SHIFT_PER_NIBBLE); + } + + private const int ASSEMBLY_BIT_OFFSET = 16; + + static protected uint ReadTypeDefIndex(BitStream stream) + { + uint assembly = ReadAndUnpackBits(stream); + uint type = ReadAndUnpackBits(stream); + return assembly << ASSEMBLY_BIT_OFFSET | type; + } + + static protected uint ReadMethodDefIndex(BitStream stream) + { + uint assembly = ReadAndUnpackBits(stream); + uint method = ReadAndUnpackBits(stream); + return assembly << ASSEMBLY_BIT_OFFSET | method; + } + + static protected bool ReadBoolean(BitStream stream) + { + return (stream.ReadBits(1) == 1); + } + } + + internal class TimestampPacket : ProfilerPacket + { + private ulong m_time; + + public TimestampPacket(BitStream stream) : base(Commands.c_Profiling_Timestamp) + { + ulong l = (ulong)ReadAndUnpackBits(stream) << Packets.Commands.Bits.TimestampShift; + m_time = l / TimeSpan.TicksPerMillisecond; + Tracing.PacketTrace("time {0}", m_time); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // sess.LastKnownTime += m_time; + //} + } + + internal class MemoryLayoutPacket : ProfilerPacket + { + private ulong m_heapAddress; + private uint m_heapLength; + + public MemoryLayoutPacket(BitStream stream) : base(Commands.c_Profiling_Memory_Layout) + { + // heap address comes in two parts + m_heapAddress = ReadAndUnpackBits(stream); + m_heapAddress <<= 32; + m_heapAddress |= ReadAndUnpackBits(stream); + + m_heapLength = ReadAndUnpackBits(stream); + + Tracing.PacketTrace($"layout 0x{m_heapAddress:X8}:{m_heapLength}"); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // sess.HeapStart = m_heapAddress; + // sess.HeapBytesReserved = m_heapLength; + // sess.LogText?.Invoke($"[TRACE] Heap layout: 0x{m_heapAddress:X8}:{m_heapLength}"); + //} + } + + internal class HeapDumpStartPacket : ProfilerPacket + { + + public HeapDumpStartPacket(BitStream stream) + : base(Commands.c_Profiling_HeapDump_Start) { } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // if (sess._currentHeapDump != null) + // { + // //We lost a heap-dump end packet somewhere. + // //Insert one to clean up the last heap dump. + // HeapDumpStopPacket hdep = new HeapDumpStopPacket(null); + // hdep.Process(sess); + // } + + // // Heap dump should update live object table. + + // sess._currentHeapDump = new HeapDump(); + // Tracing.PacketTrace("HEAP DUMP BEGIN======================>"); + + // sess.LogText?.Invoke($"[TRACE] HEAP DUMP BEGIN======================>"); + //} + } + + internal class HeapDumpStopPacket : ProfilerPacket + { + private uint m_heapBytesUsed; + + public HeapDumpStopPacket(BitStream stream) + : base(Commands.c_Profiling_HeapDump_Stop) + { + m_heapBytesUsed = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // if (sess._currentHeapDump == null) { return; } //No heap dump to finish + + // sess.HeapBytesUsed = m_heapBytesUsed; + // sess.AddEvent(sess._currentHeapDump); + // sess._currentHeapDump = null; + + // Tracing.PacketTrace("<======================HEAP DUMP END"); + + // sess.LogText?.Invoke($"[TRACE] <======================HEAP DUMP END"); + //} + } + + internal class HeapDumpRootPacket : ProfilerPacket + { + private uint m_address; + private uint m_source; + private uint m_method; + + public HeapDumpRootPacket(BitStream stream) + : base(Commands.c_Profiling_HeapDump_Root) + { + m_address = ReadAndUnpackBits(stream); + m_source = stream.ReadBits(Packets.Commands.Bits.RootTypes); + switch (m_source) + { + case Packets.Commands.RootTypes.Root_Stack: + m_method = ReadMethodDefIndex(stream); + break; + } + + Tracing.PacketTrace("root type:{0} at {1}", m_source, m_address); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // if (sess._currentHeapDump == null) + // { + // //Lost heap-dump start packet. + // throw new System.IO.IOException(); + // } + + // HeapDumpRoot hdr = new HeapDumpRoot(); + // hdr._address = m_address; + // switch (m_source) + // { + // case Packets.Commands.RootTypes.Root_AppDomain: + // hdr._type = HeapDumpRoot.RootType.AppDomain; + // break; + // case Packets.Commands.RootTypes.Root_Assembly: + // hdr._type = HeapDumpRoot.RootType.Assembly; + // break; + // case Packets.Commands.RootTypes.Root_Finalizer: + // hdr._type = HeapDumpRoot.RootType.Finalizer; + // break; + // case Packets.Commands.RootTypes.Root_Stack: + // hdr._type = HeapDumpRoot.RootType.Stack; + // break; + // case Packets.Commands.RootTypes.Root_Thread: + // hdr._type = HeapDumpRoot.RootType.Thread; + // break; + // } + // hdr._flags = HeapDumpRoot.RootFlags.None; + // hdr._method = m_method; + + // sess._currentHeapDump._rootTable.Add(hdr); + //} + } + + internal class HeapDumpObjectPacket : ProfilerPacket + { + public HeapDumpObjectPacket(BitStream stream) + : base(Commands.c_Profiling_HeapDump_Object) + { + // Constructor implementation here + } + } + + // TODO: implement processor + //internal class HeapDumpObjectPacket : ProfilerPacket + //{ + // private uint m_address; + // private uint m_size; + // //private _DBG.nanoClrDataType m_dt; + // private uint m_typedef; + + // private ushort m_arrayLevels; + // private uint m_arrayElementType; + + // private List m_refs; + + // public HeapDumpObjectPacket(BitStream stream) + // : base(Commands.c_Profiling_HeapDump_Object) + // { + // m_address = ReadAndUnpackBits(stream); + // m_size = ReadAndUnpackBits(stream) * ProfilerSession.HeapBlockSize; + // m_dt = (_DBG.nanoClrDataType)stream.ReadBits(Commands.Bits.DataType); + // if (m_dt == _DBG.nanoClrDataType.DATATYPE_CLASS || m_dt == _DBG.nanoClrDataType.DATATYPE_VALUETYPE) + // { + // m_typedef = ReadTypeDefIndex(stream); + // } + // else if (m_dt == _DBG.nanoClrDataType.DATATYPE_SZARRAY) + // { + // m_arrayElementType = ReadTypeDefIndex(stream); + // m_arrayLevels = (ushort)ReadAndUnpackBits(stream); + // } + + // m_refs = new List(); + + // bool moreRefs; + // while (moreRefs = ReadBoolean(stream)) + // { + // m_refs.Add(ReadAndUnpackBits(stream)); + // } + // } + + // internal override void Process(ProfilerSession sess) + // { + // if (sess._currentHeapDump == null) + // { + // //Lost heap-dump start packet, and probably the roots too. + // throw new System.IO.IOException(); + // } + + // HeapDumpObject hdo = new HeapDumpObject(); + // hdo._address = m_address; + // hdo._size = m_size; + + // if (m_dt == _DBG.nanoClrDataType.DATATYPE_CLASS || m_dt == _DBG.nanoClrDataType.DATATYPE_VALUETYPE) + // { + // sess.ResolveTypeName(m_typedef); //Cache type name. + // hdo._type = new ObjectType(m_typedef); + // } + // else + // { + // _DBG.nanoClrDataType dt = (_DBG.nanoClrDataType)m_dt; + // if (dt == _DBG.nanoClrDataType.DATATYPE_SZARRAY) + // { + // sess.ResolveTypeName(m_arrayElementType); //Cache type name. + // hdo._type = new ObjectType(m_arrayElementType, m_arrayLevels); + // } + // else + // { + // hdo._type = new ObjectType((uint)m_dt); + // } + // } + + // hdo._references = m_refs; + + // Tracing.PacketTrace("object @ {0} ({1})", m_address, hdo._type); + + // sess.LogText?.Invoke($"[TRACE] object @ {m_address} ({hdo._type})"); + + // sess._currentHeapDump._objectTable.Add(hdo); + // } + //} + + internal class CallPacket : ProfilerPacket + { + private uint m_thread; + private uint m_assembly; + private uint m_method; + + public CallPacket(BitStream stream) + : base(Commands.c_Profiling_Calls_Call) + { + if (ReadBoolean(stream)) + { + m_assembly = ReadAndUnpackBits(stream); + Debug.Assert(m_assembly != 0); + } + m_method = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // m_thread = sess._currentThreadPID; + + // if (m_assembly == 0) + // { + // m_assembly = sess._currentAssembly; + // } + // else + // { + // sess._currentAssembly = m_assembly; + // } + + // uint md = m_assembly << Packets.Commands.Bits.AssemblyShift | m_method; + + // Tracing.PacketTrace("CALLS: Thread {0} called function {1}", m_thread, md); + + // sess.LogText?.Invoke($"[TRACE] CALLS: Thread {m_thread} called function {md}"); + + // if (!sess._threadCallStacks.ContainsKey(m_thread)) + // { + // sess._threadCallStacks.Add(m_thread, new Stack()); + // } + // sess._threadCallStacks[m_thread].Push(md); + + // FunctionCall f = new FunctionCall(); + // f._thread = m_thread; + // f.m_callStack = sess._threadCallStacks[m_thread].ToArray(); + // Array.Reverse(f.m_callStack); + // sess._engine.GetMethodName(md, true); //Cache method name information while we still have a device. + // sess.AddEvent(f); + //} + } + + internal class ReturnPacket : ProfilerPacket + { + private ulong m_duration; + + public ReturnPacket(BitStream stream) + : base(Commands.c_Profiling_Calls_Call) + { + m_duration = (ulong)ReadAndUnpackBits(stream) << Packets.Commands.Bits.CallTimingShift; + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("CALLS: Function returned on thread {0}", sess._currentThreadPID); + + // sess.LogText?.Invoke($"[TRACE] CALLS: Function returned on thread {sess._currentThreadPID}"); + + // if (sess._threadCallStacks.ContainsKey(sess._currentThreadPID)) + // { + // Debug.Assert(sess._threadCallStacks[sess._currentThreadPID].Count > 0); + // sess._threadCallStacks[sess._currentThreadPID].Pop(); + // } + + // FunctionReturn f = new FunctionReturn(); + // f._thread = sess._currentThreadPID; + // f.duration = m_duration; + // sess.AddEvent(f); + //} + } + + internal class ContextSwitchPacket : ProfilerPacket + { + private uint _thread; + + public ContextSwitchPacket(BitStream stream) + : base(Commands.c_Profiling_Calls_Call) + { + _thread = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("CALLS: Switched to thread {0}", _thread); + + // sess.LogText?.Invoke($"[TRACE] CALLS: Switched to thread {_thread}"); + + // ContextSwitch c = new ContextSwitch(); + // c._thread = _thread; + // sess._currentThreadPID = _thread; + // sess.AddEvent(c); + //} + } + + internal class ObjectAllocationPacket : ProfilerPacket + { + private uint m_address; + private uint m_size; + //private _DBG.nanoClrDataType m_dt; + private uint m_type; + private ushort m_rank; + + public ObjectAllocationPacket(BitStream stream) + : base(Commands.c_Profiling_Allocs_Alloc) + { + //m_address = ReadAndUnpackBits(stream); + //m_size = ReadAndUnpackBits(stream) * ProfilerSession.HeapBlockSize; + //m_dt = (_DBG.nanoClrDataType)stream.ReadBits(Commands.Bits.DataType); + + //if (m_dt == _DBG.nanoClrDataType.DATATYPE_CLASS + // || m_dt == _DBG.nanoClrDataType.DATATYPE_VALUETYPE + // || m_dt == _DBG.nanoClrDataType.DATATYPE_SZARRAY) + //{ + // m_type = ReadTypeDefIndex(stream); + + // if (m_dt == _DBG.nanoClrDataType.DATATYPE_SZARRAY) + // { + // m_rank = (ushort)ReadAndUnpackBits(stream); + // } + //} + //else + //{ + // m_type = (uint)m_dt; + //} + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // var address = sess.HeapAddressIsAbsolute ? sess.HeapStart + m_address : m_address; + + // Tracing.PacketTrace($"ALLOC: Object allocated {{{sess.ResolveTypeName(m_type)}{(m_rank > 0 ? "[]" : "")}}} ({m_size} bytes) @ address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : "{address:0}")}"); + + // sess.LogText?.Invoke($"[TRACE] ALLOC: Object allocated {{{sess.ResolveTypeName(m_type)}{(m_rank > 0 ? "[]" : "")}}} ({m_size} bytes) @ address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : "{address:0}")}"); + + // ObjectAllocation alloc = new() + // { + // _thread = sess._currentThreadPID, + // _address = address, + // _size = m_size + // }; + + // if (!sess._threadCallStacks.ContainsKey(sess._currentThreadPID)) + // { + // sess._threadCallStacks.Add(sess._currentThreadPID, new Stack()); + // } + + // alloc._callStack = sess._threadCallStacks[sess._currentThreadPID].ToArray(); + + // Array.Reverse(alloc._callStack); + + // // cache the type name + // sess.ResolveTypeName(m_type); + + // if (!sess._liveObjectTable.ContainsKey(address)) + // { + // sess._liveObjectTable.Add(address, $"{sess.ResolveTypeName(m_type)}{(m_rank > 0 ? "[]" : "")}"); + // } + + // alloc._objectType = new ObjectType(m_type, m_rank); + + // sess.AddEvent(alloc); + //} + } + + internal class ObjectRelocationPacket : ProfilerPacket + { + //private ObjectRelocation.RelocationRegion[] reloc; + + public ObjectRelocationPacket(BitStream stream) + : base(Commands.c_Profiling_Allocs_Relloc) + { + //uint count = ReadAndUnpackBits(stream); + //reloc = new ObjectRelocation.RelocationRegion[count]; + + //for (uint i = 0; i < count; i++) + //{ + // reloc[i] = new ObjectRelocation.RelocationRegion(); + // reloc[i]._start = ReadAndUnpackBits(stream); + // reloc[i]._end = ReadAndUnpackBits(stream); + // reloc[i]._offset = ReadAndUnpackBits(stream); + //} + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("ALLOC: Objects relocated"); + + // sess.LogText?.Invoke($"[TRACE] ALLOC: Objects relocated"); + + // SortedDictionary newTable = new SortedDictionary(); + + // foreach (var liveObject in sess._liveObjectTable) + // { + // uint ptr = liveObject.Key; + // uint j; + + // for (j = 0; j < reloc.Length; j++) + // { + // if (ptr >= reloc[j]._start && ptr <= reloc[j]._end) + // { + // newTable.Add(ptr + reloc[j]._offset, liveObject.Value); + // break; + // } + // } + + // if (j == reloc.Length) + // { + // //No relocation for this object. + // newTable.Add(ptr, liveObject.Value); + // } + // } + + // sess._liveObjectTable = newTable; + + // ObjectRelocation or = new ObjectRelocation(); + // or._relocationRegions = reloc; + + // sess.AddEvent(or); + //} + } + + internal class ObjectDeletionPacket : ProfilerPacket + { + private uint m_address; + + public ObjectDeletionPacket(BitStream stream) + : base(Commands.c_Profiling_Allocs_Delete) + { + m_address = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // var address = sess.HeapAddressIsAbsolute ? sess.HeapStart + m_address : m_address; + + // if (sess._liveObjectTable.ContainsKey(address)) + // { + // Tracing.PacketTrace($"ALLOC: Object {sess._liveObjectTable[address]} freed from address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : $"{address}")}"); + + // sess.LogText?.Invoke($"[TRACE] ALLOC: Object {sess._liveObjectTable[address]} freed from address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : $"{address}")}"); + + // sess._liveObjectTable.Remove(address); + // } + // else + // { + // Tracing.PacketTrace($"ALLOC: ***ERROR*** Reported Object deletion for non existing object @ address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : $"{address}")}"); + + // sess.LogText?.Invoke($"[TRACE] ALLOC: ***ERROR*** Reported Object deletion for non existing object @ address {(sess.HeapAddressIsAbsolute ? $"0x{address:X8}" : $"{address}")}"); + // } + + // ObjectDeletion delete = new ObjectDeletion(); + // delete.address = address; + // sess.AddEvent(delete); + //} + } + + internal class GarbageCollectionBeginPacket : ProfilerPacket + { + private uint m_freeBytes; + + public GarbageCollectionBeginPacket(BitStream stream) + : base(Commands.c_Profiling_GarbageCollect_Begin) + { + m_freeBytes = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("GC BEGIN >>>"); + + // sess.LogText?.Invoke($"[TRACE] GC BEGIN >>>"); + + // sess.HeapBytesFree = m_freeBytes; + + // GarbageCollectionBegin gc = new GarbageCollectionBegin(); + // sess.AddEvent(gc); + //} + } + + internal class GarbageCollectionEndPacket : ProfilerPacket + { + private uint m_freeBytes; + + public GarbageCollectionEndPacket(BitStream stream) + : base(Commands.c_Profiling_GarbageCollect_End) + { + m_freeBytes = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("<<< GC END"); + + // sess.LogText?.Invoke($"[TRACE] <<< GC END"); + + // sess.HeapBytesFree = m_freeBytes; + + // GarbageCollectionEnd gc = new GarbageCollectionEnd(); + // gc.liveObjects = new SortedDictionary(sess._liveObjectTable); + + // sess.AddEvent(gc); + //} + } + + internal class HeapCompactionBeginPacket : ProfilerPacket + { + private uint m_freeBytes; + + public HeapCompactionBeginPacket(BitStream stream) + : base(Commands.c_Profiling_HeapCompact_Begin) + { + m_freeBytes = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("Heap Compaction BEGIN >>>"); + + // sess.LogText?.Invoke($"[TRACE] Heap Compaction BEGIN >>>"); + + // sess.HeapBytesFree = m_freeBytes; + + // HeapCompactionBegin hc = new HeapCompactionBegin(); + // sess.AddEvent(hc); + //} + } + + internal class HeapCompactionEndPacket : ProfilerPacket + { + private uint m_freeBytes; + + public HeapCompactionEndPacket(BitStream stream) + : base(Commands.c_Profiling_HeapCompact_End) + { + m_freeBytes = ReadAndUnpackBits(stream); + } + + // TODO: implement processor + //internal override void Process(ProfilerSession sess) + //{ + // Tracing.PacketTrace("<<< Heap Compaction END"); + + // sess.LogText?.Invoke($"[TRACE] <<< Heap Compaction END"); + + // // on CLR Profiler side: Need to preserve objects not relocated. + + // sess.HeapBytesFree = m_freeBytes; + + // HeapCompactionEnd hc = new HeapCompactionEnd(); + // sess.AddEvent(hc); + //} + } +} diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp index 90b368176a..0566a4d547 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.cpp @@ -46,6 +46,11 @@ DebugPrintCallback gDebugPrintCallback = nullptr; +#if defined(VIRTUAL_DEVICE) +ProfilerMessageCallback g_ProfilerMessageCallback = nullptr; +ProfilerDataCallback g_ProfilerDataCallback = nullptr; +#endif + WireTransmitCallback WireProtocolTransmitCallback = nullptr; WireReceiveCallback WireProtocolReceiveCallback = nullptr; @@ -229,3 +234,27 @@ bool nanoCLR_GetNativeAssemblyInformation(const CLR_UINT8 *data, size_t size) return true; // Success } + +#if defined(VIRTUAL_DEVICE) + +void nanoCLR_SetProfilerMessageCallback(ProfilerMessageCallback profilerMessageCallback) +{ + g_ProfilerMessageCallback = profilerMessageCallback; + + // set profiling conditions + g_CLR_RT_ExecutionEngine.m_iProfiling_Conditions |= CLR_RT_ExecutionEngine::c_fProfiling_Enabled | + CLR_RT_ExecutionEngine::c_fProfiling_Allocations | + CLR_RT_ExecutionEngine::c_fProfiling_Calls; +} + +void nanoCLR_SetProfilerDataCallback(ProfilerDataCallback profilerDataCallback) +{ + g_ProfilerDataCallback = profilerDataCallback; + + // set profiling conditions + g_CLR_RT_ExecutionEngine.m_iProfiling_Conditions |= CLR_RT_ExecutionEngine::c_fProfiling_Enabled | + CLR_RT_ExecutionEngine::c_fProfiling_Allocations | + CLR_RT_ExecutionEngine::c_fProfiling_Calls; +} + +#endif diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.h b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.h index ec61e90210..3920426c2e 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.h +++ b/targets/netcore/nanoFramework.nanoCLR/nanoCLR_native.h @@ -36,19 +36,23 @@ typedef struct NANO_CLR_SETTINGS typedef HRESULT(__stdcall *ConfigureRuntimeCallback)(); typedef void(__stdcall *DebugPrintCallback)(const char *szText); +typedef void(__stdcall *ProfilerMessageCallback)(const char *szText); +typedef void(__stdcall *ProfilerDataCallback)(const CLR_UINT8 *data, size_t size); typedef int(__stdcall *WireTransmitCallback)(const CLR_UINT8 *data, size_t size); typedef int(__stdcall *WireReceiveCallback)(const CLR_UINT8 *data, size_t size); extern DebugPrintCallback gDebugPrintCallback; extern WireTransmitCallback WireProtocolTransmitCallback; extern WireReceiveCallback WireProtocolReceiveCallback; +extern ProfilerMessageCallback g_ProfilerMessageCallback; +extern ProfilerDataCallback g_ProfilerDataCallback; -///////////////////////////////////////////////////////////////////////////////////////////////////////////// -// The following functions are exposed in the DLL and -// meant to be called by the C# host application. -// Keep their names in sync with the managed code declaration @ nanoFramework.nanoCLR.Host\Interop\Native.cs -// and the code @ nanoCLR_native.cpp -////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// The following functions are exposed in the DLL and // +// meant to be called by the C# host application. // +// Keep their names in sync with the managed code declaration @ nanoFramework.nanoCLR.Host\Interop\nanoCLR.cs // +// and the code @ nanoCLR_native.cpp // +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" NANOCLRNATIVE_API void nanoCLR_Run(NANO_CLR_SETTINGS nanoClrSettings); extern "C" NANOCLRNATIVE_API HRESULT nanoCLR_LoadAssembly(const wchar_t *name, const CLR_UINT8 *data, size_t size); @@ -64,6 +68,9 @@ extern "C" NANOCLRNATIVE_API void nanoCLR_WireProtocolClose(); extern "C" NANOCLRNATIVE_API void nanoCLR_SetWireProtocolReceiveCallback(WireReceiveCallback receiveCallback); extern "C" NANOCLRNATIVE_API void nanoCLR_SetWireProtocolTransmitCallback(WireTransmitCallback transmitCallback); +extern "C" NANOCLRNATIVE_API void nanoCLR_SetProfilerMessageCallback(ProfilerMessageCallback profilerMessageCallback); +extern "C" NANOCLRNATIVE_API void nanoCLR_SetProfilerDataCallback(ProfilerDataCallback profilerDataCallback); + extern "C" NANOCLRNATIVE_API void nanoCLR_WireProtocolProcess(); extern "C" NANOCLRNATIVE_API const char *nanoCLR_GetVersion(); diff --git a/targets/win32/nanoCLR/main.cpp b/targets/win32/nanoCLR/main.cpp index d9c2245698..cfce3245bc 100644 --- a/targets/win32/nanoCLR/main.cpp +++ b/targets/win32/nanoCLR/main.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -93,3 +93,16 @@ int _tmain(int argc, _TCHAR *argv[]) return 0; } + +typedef void(__stdcall *ProfilerMessageCallback)(const char *szText); +typedef void(__stdcall *ProfilerDataCallback)(const CLR_UINT8 *data, size_t size); +ProfilerMessageCallback g_ProfilerMessageCallback; +ProfilerDataCallback g_ProfilerDataCallback; + +void nanoCLR_SetProfilerMessageCallback(ProfilerMessageCallback profilerMessageCallback) +{ +} + +void nanoCLR_SetProfilerDataCallback(ProfilerDataCallback profilerDataCallback) +{ +} From edf0a5f74bc76d0dea8cea56d47e101da617bd78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 19 Feb 2025 17:57:48 +0000 Subject: [PATCH 104/168] Improvements in profiler host processors (#3114) ***NO_CI*** (cherry picked from commit 4d74775771d6b69fc1257bfb80e46bb89bd7a92c) --- .../NanoClrHostBuilder.cs | 1 + .../Profiler/ProfilerLogFileProcessor.cs | 36 ++++++++++++++--- .../Profiler/ProfilerMessageProcessor.cs | 40 ++++++++++++++++--- 3 files changed, 66 insertions(+), 11 deletions(-) diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs index d214a04910..b29f3f76fc 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs @@ -143,6 +143,7 @@ public nanoCLRHost Build() s_nanoClrHost.WireProtocolPort = _wireProtocolPort; s_nanoClrHost.ConfigureSteps.AddRange(_configureSteps); s_nanoClrHost.PreInitConfigureSteps.AddRange(_preInitConfigureSteps); + s_nanoClrHost.CleanupSteps.AddRange(_cleanupSteps); s_nanoClrHost.nanoCLRSettings = new nanoCLRSettings { diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs index 08a69eba27..af5c973451 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerLogFileProcessor.cs @@ -13,26 +13,28 @@ namespace nanoFramework.nanoCLR.Host.Profiler internal class ProfilerLogFileProcessor : IDisposable { private readonly StreamWriter _profilerDumpWriter; + private readonly string _logFilePath; + private bool _disposedValue; public ProfilerLogFileProcessor() { // create output file for profiler binary dump string _profileBinaryFileName = $"{Guid.NewGuid()}_{DateTime.Now.ToString("s").Replace(":", "_")}.log"; - string logFilePath = Path.Combine(Path.GetTempPath(), _profileBinaryFileName); + _logFilePath = Path.Combine(Path.GetTempPath(), _profileBinaryFileName); // inform user about the binary file - Console.WriteLine($"Profiler log file: {logFilePath}"); + Console.WriteLine($"{Environment.NewLine}Profiler log file: {_logFilePath}{Environment.NewLine}"); try { _profilerDumpWriter = new StreamWriter( - logFilePath, + _logFilePath, new FileStreamOptions() { Mode = FileMode.Create, Access = FileAccess.ReadWrite, Options = FileOptions.WriteThrough, Share = FileShare.ReadWrite }); } catch (IOException ex) { - throw new IOException($"Failed to create profiler message log file at {logFilePath}", ex); + throw new IOException($"Failed to create profiler message log file at {_logFilePath}", ex); } } @@ -44,6 +46,30 @@ internal void MessageHandler(byte[] data, int length) } - public void Dispose() => ((IDisposable)_profilerDumpWriter).Dispose(); + #region Dispose implementation + + protected virtual void Dispose(bool disposing) + { + if (!_disposedValue) + { + if (disposing) + { + // output the file path so user can find it (usefull in case of long running) + Console.WriteLine($"{Environment.NewLine}Profiler log file: {_logFilePath}{Environment.NewLine}"); + + _profilerDumpWriter.Dispose(); + } + + _disposedValue = true; + } + } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + #endregion } } diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs index 36627ac45d..713be857c1 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerMessageProcessor.cs @@ -14,33 +14,61 @@ namespace nanoFramework.nanoCLR.Host.Profiler internal class ProfilerMessageProcessor : IDisposable { private readonly StreamWriter _profileLogWriter; + private readonly string _logFilePath; + private bool _disposedValue; public ProfilerMessageProcessor() { // create output file for profiler messages - string _profileLogFileName = $"{Guid.NewGuid()}_{DateTime.Now.ToString("s").Replace(":", "_")}.log"; + string _profileLogFileName = $"{Guid.NewGuid()}_{DateTime.Now.ToString("s").Replace(":", "_")}.txt"; - string logFilePath = Path.Combine(Path.GetTempPath(), _profileLogFileName); + _logFilePath = Path.Combine(Path.GetTempPath(), _profileLogFileName); // inform user about the log file - Console.WriteLine($"Profiler output file: {logFilePath}"); + Console.WriteLine($"{Environment.NewLine}Profiler output file: {_logFilePath}{Environment.NewLine}"); try { _profileLogWriter = new StreamWriter( - logFilePath, + _logFilePath, new FileStreamOptions() { Mode = FileMode.Create, Access = FileAccess.ReadWrite, Options = FileOptions.WriteThrough, Share = FileShare.ReadWrite }); } catch (IOException ex) { - throw new IOException($"Failed to create profiler log file at {logFilePath}", ex); + throw new IOException($"Failed to create profiler log file at {_logFilePath}", ex); } } internal void MessageHandler(string message) { _profileLogWriter.WriteLine(message); + // Ensure message is written immediately + _profileLogWriter.Flush(); } - public void Dispose() => ((IDisposable)_profileLogWriter).Dispose(); + #region Dispose implementation + + protected virtual void Dispose(bool disposing) + { + if (!_disposedValue) + { + if (disposing) + { + // output the file path so user can find it (usefull in case of long running) + Console.WriteLine($"{Environment.NewLine}Profiler output file: {_logFilePath}{Environment.NewLine}"); + + _profileLogWriter.Dispose(); + } + + _disposedValue = true; + } + } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + #endregion } } From 27c730a3506353f112cd3b631370ca37e35f16aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 19 Feb 2025 20:05:28 +0000 Subject: [PATCH 105/168] Improvements in profiler (#3115) ***NO_CI*** (cherry picked from commit e4e84ac8b0d50d183f3a143d8c0c7db10457dba7) --- src/CLR/Core/CLR_RT_HeapCluster.cpp | 8 +++++++- src/CLR/Core/Cache.cpp | 4 ---- src/CLR/Core/GarbageCollector.cpp | 7 ++++--- src/CLR/Core/GarbageCollector_Compaction.cpp | 7 ++++--- src/CLR/Diagnostics/Profiler.cpp | 16 ++++++++++------ .../NanoClrHostBuilder.cs | 2 +- .../Profiler/ProfilerPackets.cs | 4 +++- 7 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapCluster.cpp b/src/CLR/Core/CLR_RT_HeapCluster.cpp index d2c6b623da..701e6f5012 100644 --- a/src/CLR/Core/CLR_RT_HeapCluster.cpp +++ b/src/CLR/Core/CLR_RT_HeapCluster.cpp @@ -243,7 +243,13 @@ void CLR_RT_HeapCluster::RecoverFromGC() } while (next < end && next->IsAlive() == false); #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) - g_CLR_PRF_Profiler.TrackObjectDeletion(ptr); + + // don't report free blocks, as they are not being deleted, rather grouped + if (ptr->DataType() != DATATYPE_FREEBLOCK) + { + g_CLR_PRF_Profiler.TrackObjectDeletion(ptr); + } + #endif ptr->SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_FREEBLOCK, CLR_RT_HeapBlock::HB_Pinned, lenTot)); diff --git a/src/CLR/Core/Cache.cpp b/src/CLR/Core/Cache.cpp index ef7d6a832a..1b3bdf5ad6 100644 --- a/src/CLR/Core/Cache.cpp +++ b/src/CLR/Core/Cache.cpp @@ -448,10 +448,6 @@ void CLR_RT_EventCache::Append_Node(CLR_RT_HeapBlock *node) ptr->Debug_ClearBlock(SENTINEL_NODE_APPENDED); lst.m_blocks.LinkAtBack(ptr); - -#if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) - g_CLR_PRF_Profiler.TrackObjectCreation(node); -#endif } CLR_RT_HeapBlock *CLR_RT_EventCache::Extract_Node_Slow(CLR_UINT32 dataType, CLR_UINT32 flags, CLR_UINT32 blocks) diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index c7a04e140d..e7d098d0fb 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -137,6 +137,10 @@ void CLR_RT_AssertEarlyCollection::CheckAll(CLR_RT_HeapBlock *ptr) CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() { NATIVE_PROFILE_CLR_CORE(); + + // bump the number of garbage collections + m_numberOfGarbageCollections++; + #if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) g_CLR_PRF_Profiler.RecordGarbageCollectionBegin(); #endif @@ -148,9 +152,6 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() #endif - // bump the number of garbage collections - m_numberOfGarbageCollections++; - #if defined(NANOCLR_GC_VERBOSE) if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index e0eff9a6fd..0ddf212435 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -10,13 +10,14 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteCompaction() { NATIVE_PROFILE_CLR_CORE(); -#if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) - g_CLR_PRF_Profiler.RecordHeapCompactionBegin(); -#endif // bump the number of heap compactions m_numberOfCompactions++; +#if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) + g_CLR_PRF_Profiler.RecordHeapCompactionBegin(); +#endif + #if defined(NANOCLR_TRACE_MEMORY_STATS) CLR_UINT64 stats_start = HAL_Time_CurrentSysTicks(); diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index f24d4af9fd..1240140ed7 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -710,7 +710,8 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) CLR_UINT8 dt = ptr->DataType(); - if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_BINARY_BLOB_HEAD) + if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_BINARY_BLOB_HEAD && dt != DATATYPE_CACHEDBLOCK && + dt != DATATYPE_MEMORY_STREAM_HEAD && dt != DATATYPE_MEMORY_STREAM_DATA) { Timestamp(); @@ -883,7 +884,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) CLR_PROF_HANDLER_CALLCHAIN_VOID(perf); CLR_UINT8 dt = ptr->DataType(); - if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_CACHEDBLOCK) + if (dt != DATATYPE_STACK_FRAME && dt != DATATYPE_BINARY_BLOB_HEAD && dt != DATATYPE_CACHEDBLOCK) { Timestamp(); m_stream->WriteBits(CLR_PRF_CMDS::c_Profiling_Allocs_Delete, CLR_PRF_CMDS::Bits::CommandHeader); @@ -1004,7 +1005,11 @@ void CLR_PRF_Profiler::TrackObjectRelocation() { DumpPointer(relocBlocks[i].m_start); DumpPointer(relocBlocks[i].m_end); - PackAndWriteBits(relocBlocks[i].m_offset); + +#ifdef _WIN64 + PackAndWriteBits((CLR_UINT32)(relocBlocks[i].m_offset >> 32)); +#endif + PackAndWriteBits((CLR_UINT32)relocBlocks[i].m_offset); #if defined(VIRTUAL_DEVICE) if (g_ProfilerMessageCallback != NULL) @@ -1218,9 +1223,8 @@ void CLR_PRF_Profiler::RecordHeapCompactionEnd() #if defined(VIRTUAL_DEVICE) if (g_ProfilerMessageCallback != NULL) { - std::string heapCompaction = std::format( - "Heap compaction: Finished run #{}\r\n", - g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections); + std::string heapCompaction = + std::format("Heap compaction: Finished run #{}\r\n", g_CLR_RT_GarbageCollector.m_numberOfCompactions); g_ProfilerMessageCallback(heapCompaction.c_str()); } diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs index b29f3f76fc..b089f6743f 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/NanoClrHostBuilder.cs @@ -163,7 +163,7 @@ public nanoCLRHost Build() private nanoCLRHostBuilder SetProfilerMessageCallback(Action profilerMessage) { - _preInitConfigureSteps.Add(() => Interop.nanoCLR.nanoCLR_SetProfilerMessageCallback((msg) => profilerMessage(msg))); + _configureSteps.Add(() => Interop.nanoCLR.nanoCLR_SetProfilerMessageCallback((msg) => profilerMessage(msg))); return this; } diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs index 2a0731fddd..f0a2fe00dc 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs +++ b/targets/netcore/nanoFramework.nanoCLR.Host/Profiler/ProfilerPackets.cs @@ -69,7 +69,9 @@ internal static Packets.ProfilerPacket Decode(BitStream stream, Action l case Packets.Commands.c_Profiling_HeapCompact_End: return new Packets.HeapCompactionEndPacket(stream); default: - throw new ApplicationException("Unable to decode packet."); + // throw new ApplicationException("Unable to decode packet."); + // TODO: don't care about this for now + return null; } } } From 4192c0a9236ae97f1557fad4381c24cc36ab34cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 20 Feb 2025 17:12:14 +0000 Subject: [PATCH 106/168] Clean-up includes and header files (#3116) ***NO_CI*** (cherry picked from commit c95b53ef709a4f63f6e8587c7f80b50424468bd0) --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 2 +- src/CLR/Core/Core.vcxproj | 1 - src/CLR/Core/Core.vcxproj.filters | 3 --- src/CLR/Debugger/Debugger.cpp | 2 +- src/CLR/Startup/CLRStartup.cpp | 4 ---- src/CLR/WireProtocol/WireProtocol_Message.c | 7 ++++++- targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp | 4 ---- 7 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 955efe8dd9..cf80e24673 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -3,8 +3,8 @@ // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // + #include "Core.h" -#include #include //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/CLR/Core/Core.vcxproj b/src/CLR/Core/Core.vcxproj index 44f08e949d..d8ed71b7bc 100644 --- a/src/CLR/Core/Core.vcxproj +++ b/src/CLR/Core/Core.vcxproj @@ -82,7 +82,6 @@ - diff --git a/src/CLR/Core/Core.vcxproj.filters b/src/CLR/Core/Core.vcxproj.filters index c55620bc7a..98d55a48e7 100644 --- a/src/CLR/Core/Core.vcxproj.filters +++ b/src/CLR/Core/Core.vcxproj.filters @@ -173,9 +173,6 @@ Header Files - - Header Files - Header Files diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index edbaa8506e..9ef8753276 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -3,9 +3,9 @@ // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // + #include #include -#include #include #include #include diff --git a/src/CLR/Startup/CLRStartup.cpp b/src/CLR/Startup/CLRStartup.cpp index 006833476e..90a10b74fe 100644 --- a/src/CLR/Startup/CLRStartup.cpp +++ b/src/CLR/Startup/CLRStartup.cpp @@ -5,11 +5,7 @@ // #include "CLRStartup.h" -#include -#include #include -#include -#include void ClrExit() { diff --git a/src/CLR/WireProtocol/WireProtocol_Message.c b/src/CLR/WireProtocol/WireProtocol_Message.c index e2bde01663..aa873fa896 100644 --- a/src/CLR/WireProtocol/WireProtocol_Message.c +++ b/src/CLR/WireProtocol/WireProtocol_Message.c @@ -1,10 +1,12 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // +#if !defined(VIRTUAL_DEVICE) #include +#endif #include #include #include @@ -316,7 +318,10 @@ void WP_Message_Process() while (true) { + +#if !defined(VIRTUAL_DEVICE) ASSERT(_rxState >= ReceiveState_Idle && _rxState <= ReceiveState_CompletePayload); +#endif #ifdef DEBUG // store this here to debug issues with wrong sequence of state machine diff --git a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp index cb92784219..fda4d3dd9e 100644 --- a/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/CLRStartup.cpp @@ -6,10 +6,6 @@ #include "stdafx.h" #include "nanoCLR_native.h" -#if defined(VIRTUAL_DEVICE) - -#endif - //////////////////////////////////////////////////////////////////////////////// struct Settings From 5872af405090dbc407f02cef142ef602f6780fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Feb 2025 21:15:53 +0000 Subject: [PATCH 107/168] OOM exception is back to EE and is not disposed anymore (#3119) ***NO_CI*** (cherry picked from commit 25f83918e8bfaeae057972eee619578cca36f674) --- .../CorLib/corlib_native_System_Exception.cpp | 4 +-- src/CLR/Core/Execution.cpp | 6 ++-- src/CLR/Core/GarbageCollector.cpp | 2 ++ src/CLR/Core/TypeSystem.cpp | 28 ++++++++++++++----- src/CLR/Diagnostics/Profiler.cpp | 1 + src/CLR/Include/nanoCLR_Runtime.h | 6 ++-- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index 91fc84e6bd..ef5f7e5836 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -129,9 +129,9 @@ HRESULT Library_corlib_native_System_Exception::CreateInstance( if (FAILED(hr = g_CLR_RT_ExecutionEngine.NewObjectFromIndex(ref, cls))) { #if defined(NANOCLR_APPDOMAINS) - ref.SetObjectReference(&g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->m_outOfMemoryException); + ref.SetObjectReference(g_CLR_RT_ExecutionEngine.GetCurrentAppDomain()->m_outOfMemoryException); #else - ref.SetObjectReference(&g_CLR_RT_ExecutionEngine.m_outOfMemoryException); + ref.SetObjectReference(g_CLR_RT_ExecutionEngine.m_outOfMemoryException); #endif hrIn = CLR_E_OUT_OF_MEMORY; diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index 32127c6007..d36929273e 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -91,8 +91,9 @@ HRESULT CLR_RT_ExecutionEngine::ExecutionEngine_Initialize() // CLR_RT_Thread* m_cctorThread; // #if !defined(NANOCLR_APPDOMAINS) - m_globalLock = nullptr; // CLR_RT_HeapBlock* m_globalLock; -#endif // + m_globalLock = nullptr; // CLR_RT_HeapBlock* m_globalLock; + m_outOfMemoryException = nullptr; // CLR_RT_HeapBlock* m_outOfMemoryException; +#endif m_currentUICulture = nullptr; // CLR_RT_HeapBlock* m_currentUICulture; @@ -449,6 +450,7 @@ void CLR_RT_ExecutionEngine::Relocate() #if !defined(NANOCLR_APPDOMAINS) CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_globalLock); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_outOfMemoryException); #endif CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_currentUICulture); diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index e7d098d0fb..a79459a3a9 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -409,6 +409,7 @@ void CLR_RT_GarbageCollector::Mark() #if !defined(NANOCLR_APPDOMAINS) CheckSingleBlock_Force(g_CLR_RT_ExecutionEngine.m_globalLock); + CheckSingleBlock_Force(g_CLR_RT_ExecutionEngine.m_outOfMemoryException); #endif CheckSingleBlock_Force(g_CLR_RT_ExecutionEngine.m_currentUICulture); @@ -686,6 +687,7 @@ void CLR_RT_GarbageCollector::AppDomain_Mark() CheckSingleBlock_Force(appDomain->m_globalLock); CheckSingleBlock_Force(appDomain->m_strName); + CheckSingleBlock_Force(appDomain->m_outOfMemoryException); } NANOCLR_FOREACH_NODE_END(); } diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index a2d62523c6..15cad626f2 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -3401,6 +3401,7 @@ void CLR_RT_AppDomain::AppDomain_Initialize() m_id = g_CLR_RT_ExecutionEngine.m_appDomainIdNext++; m_globalLock = nullptr; m_strName = nullptr; + m_outOfMemoryException = nullptr; m_appDomainAssemblyLastAccess = nullptr; } @@ -3455,12 +3456,17 @@ HRESULT CLR_RT_AppDomain::LoadAssembly(CLR_RT_Assembly *assm) // Preemptively allocate an out of memory exception. // We can never get into a case where an out of memory exception cannot be thrown. + if (m_outOfMemoryException == NULL) + { + _ASSERTE(!strcmp(assm->m_szName, "mscorlib")); // always the first assembly to be loaded - _ASSERTE(!strcmp(assm->m_szName, "mscorlib")); // always the first assembly to be loaded + CLR_RT_HeapBlock exception; - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex( - m_outOfMemoryException, - g_CLR_RT_WellKnownTypes.m_OutOfMemoryException)); + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.m_OutOfMemoryException)); + + m_outOfMemoryException = exception.Dereference(); + } NANOCLR_CLEANUP(); @@ -3554,6 +3560,7 @@ void CLR_RT_AppDomain::Relocate() NATIVE_PROFILE_CLR_CORE(); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_globalLock); CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_strName); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_outOfMemoryException); } HRESULT CLR_RT_AppDomain::VerifyTypeIsLoaded(const CLR_RT_TypeDef_Index &index) @@ -5560,9 +5567,16 @@ HRESULT CLR_RT_TypeSystem::PrepareForExecution() // Preemptively create an out of memory exception. // We can never get into a case where an out of memory exception cannot be thrown. - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex( - g_CLR_RT_ExecutionEngine.m_outOfMemoryException, - g_CLR_RT_WellKnownTypes.OutOfMemoryException)); + + if (g_CLR_RT_ExecutionEngine.m_outOfMemoryException == nullptr) + { + CLR_RT_HeapBlock exception; + + NANOCLR_CHECK_HRESULT( + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.OutOfMemoryException)); + + g_CLR_RT_ExecutionEngine.m_outOfMemoryException = exception.Dereference(); + } #endif // Load Runtime.Events to setup EventSink for other assemblies using it diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 1240140ed7..038261310e 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -469,6 +469,7 @@ void CLR_PRF_Profiler::DumpObject(CLR_RT_HeapBlock *ptr) DumpListOfReferences(appDomain->m_appDomainAssemblies); DumpSingleReference(appDomain->m_globalLock); DumpSingleReference(appDomain->m_strName); + DumpSingleReference(appDomain->m_outOfMemoryException); break; } diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index be654b18a4..5abab64dd5 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1610,7 +1610,7 @@ struct CLR_RT_AppDomain : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP CLR_RT_DblLinkedList m_appDomainAssemblies; CLR_RT_HeapBlock *m_globalLock; // OBJECT HEAP - DO RELOCATION - CLR_RT_HeapBlock_String *m_strName; // OBJECT HEAP - DO RELOCATION - - CLR_RT_HeapBlock m_outOfMemoryException; // NO RELOCATION - + CLR_RT_HeapBlock *m_outOfMemoryException; // OBJECT HEAP - DO RELOCATION - CLR_RT_AppDomainAssembly *m_appDomainAssemblyLastAccess; // EVENT HEAP - NO RELOCATION - bool m_fCanBeUnloaded; @@ -3925,8 +3925,8 @@ struct CLR_RT_ExecutionEngine CLR_RT_Thread *m_cctorThread; // EVENT HEAP - NO RELOCATION - #if !defined(NANOCLR_APPDOMAINS) - CLR_RT_HeapBlock *m_globalLock; // OBJECT HEAP - DO RELOCATION - - CLR_RT_HeapBlock m_outOfMemoryException; // NO RELOCATION - + CLR_RT_HeapBlock *m_globalLock; // OBJECT HEAP - DO RELOCATION - + CLR_RT_HeapBlock *m_outOfMemoryException; // OBJECT HEAP - DO RELOCATION - #endif CLR_RT_HeapBlock *m_currentUICulture; // OBJECT HEAP - DO RELOCATION - From 052ff420d0642410d61a29bac547e3586419d01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 24 Feb 2025 09:34:08 +0000 Subject: [PATCH 108/168] Improve profiler messages for object relocation (#3120) ***NO_CI*** (cherry picked from commit 11afead0bfebb667f2e91cd754c309f89f34e90a) --- src/CLR/Core/GarbageCollector_Compaction.cpp | 4 + src/CLR/Diagnostics/Profiler.cpp | 93 +++++++++++++++++--- src/CLR/Include/nanoCLR_Profiling.h | 3 +- 3 files changed, 86 insertions(+), 14 deletions(-) diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 0ddf212435..744ea98c65 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -590,6 +590,10 @@ void CLR_RT_GarbageCollector::Heap_Relocate(void **ref) _ASSERTE(destinationAddress >= (void *)s_CLR_RT_Heap.location); _ASSERTE(destinationAddress < (void *)(s_CLR_RT_Heap.location + s_CLR_RT_Heap.size)); +#if defined(NANOCLR_PROFILE_NEW_ALLOCATIONS) + g_CLR_PRF_Profiler.TrackObjectRelocation(*ref, destinationAddress); +#endif + *ref = destinationAddress; return; diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 038261310e..b90d53774b 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -1012,19 +1012,6 @@ void CLR_PRF_Profiler::TrackObjectRelocation() #endif PackAndWriteBits((CLR_UINT32)relocBlocks[i].m_offset); -#if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) - { - std::string objectRelocation = std::format( - "Relocate 0x{:X} to 0x{:X} offset 0x{:X}\r\n", - (CLR_UINT64)relocBlocks[i].m_start, - (CLR_UINT64)relocBlocks[i].m_destination, - relocBlocks[i].m_offset); - - g_ProfilerMessageCallback(objectRelocation.c_str()); - } -#endif - #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 @@ -1047,6 +1034,86 @@ void CLR_PRF_Profiler::TrackObjectRelocation() } } +void CLR_PRF_Profiler::TrackObjectRelocation(void *previousAddress, void *destinationAddress) +{ + NATIVE_PROFILE_CLR_DIAGNOSTICS(); + +#ifdef NANOCLR_FORCE_PROFILER_EXECUTION + if (g_CLR_PRF_Profiler.m_initialized) +#else + if (CLR_EE_PRF_IS(Allocations)) +#endif + { + +#if defined(VIRTUAL_DEVICE) + if (g_ProfilerMessageCallback != NULL) + { + CLR_RT_HeapBlock *ptr = (CLR_RT_HeapBlock *)destinationAddress; + CLR_UINT8 dt = ptr->DataType(); + CLR_UINT16 dataSize = ptr->DataSize(); + + if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) + { + CLR_RT_TypeDef_Index idx = ptr->ObjectCls(); + + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + g_CLR_RT_TypeSystem.BuildTypeName(idx, szBuffer, iBuffer); + + // compose output message + std::string objectRelocation = std::format( + "Relocate {} {} from 0x{:X} to 0x{:X}\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)previousAddress), + (CLR_UINT64)((CLR_UINT8 *)destinationAddress)); + + g_ProfilerMessageCallback(objectRelocation.c_str()); + } + else if (dt == DATATYPE_SZARRAY) + { + CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; + CLR_RT_TypeDef_Index elementIdx = array->ReflectionDataConst().m_data.m_type; + + // build type name + char fullTypeName[1024] = {0}; + char *szBuffer = fullTypeName; + size_t iBuffer = MAXSTRLEN(fullTypeName); + + CLR_RT_TypeDef_Instance arrayTypeDef{}; + CLR_UINT32 levels; + arrayTypeDef.InitializeFromReflection(array->ReflectionData(), &levels); + + g_CLR_RT_TypeSystem.BuildTypeName(arrayTypeDef, szBuffer, iBuffer); + + // compose output message + std::string objectRelocation = std::format( + "Relocate {}[] from 0x{:X} to 0x{:X}\r\n", + fullTypeName, + (CLR_UINT64)((CLR_UINT8 *)previousAddress), + (CLR_UINT64)((CLR_UINT8 *)destinationAddress)); + + g_ProfilerMessageCallback(objectRelocation.c_str()); + } + else + { + // compose output message + std::string objectRelocation = std::format( + "Relocate {} from 0x{:X} to 0x{:X}\r\n", + c_CLR_RT_DataTypeLookup[dt].m_name, + (CLR_UINT64)((CLR_UINT8 *)previousAddress), + (CLR_UINT64)((CLR_UINT8 *)destinationAddress)); + + g_ProfilerMessageCallback(objectRelocation.c_str()); + } +#endif + } + } +} + void CLR_PRF_Profiler::RecordGarbageCollectionBegin() { NATIVE_PROFILE_CLR_DIAGNOSTICS(); diff --git a/src/CLR/Include/nanoCLR_Profiling.h b/src/CLR/Include/nanoCLR_Profiling.h index 56395cc403..3337ebe699 100644 --- a/src/CLR/Include/nanoCLR_Profiling.h +++ b/src/CLR/Include/nanoCLR_Profiling.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -184,6 +184,7 @@ struct CLR_PRF_Profiler void TrackObjectCreation(CLR_RT_HeapBlock *ptr); void TrackObjectDeletion(CLR_RT_HeapBlock *ptr); void TrackObjectRelocation(); + void TrackObjectRelocation(void *previousAddress, void *destinationAddress); void RecordGarbageCollectionBegin(); void RecordGarbageCollectionEnd(); void RecordHeapCompactionBegin(); From 450e7f51f3329617d63f13c97721230195ed2db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 24 Feb 2025 20:33:12 +0000 Subject: [PATCH 109/168] Add comment to clarify origin and reference ***NO_CI*** (cherry picked from commit 3edcbb841244d80fffa95a409bf7638aed86bd9f) --- src/CLR/Include/nanoCLR_Runtime.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 5abab64dd5..90ee299b02 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -3184,6 +3184,9 @@ struct ThreadPriority /*========================================================================= ** Constants for thread priorities. =========================================================================*/ + /////////////////////////////////////////////////////////////////////////// + // !!! KEEP IN SYNC with System.Threading.ThreadPriority in mscorlib !!! // + /////////////////////////////////////////////////////////////////////////// static const int Lowest = 0; static const int BelowNormal = 1; static const int Normal = 2; From 715381441a57d663d13289f3803f0d13961e922b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 24 Feb 2025 20:34:03 +0000 Subject: [PATCH 110/168] Fix variable names - Bad copy paste from other code block. Now manes are meaningful. ***NO_CI*** (cherry picked from commit bd0ee3cd972103b3669054d27e8ada4070938e5b) --- src/CLR/Diagnostics/Profiler.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index b90d53774b..cf7cd5c8b1 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -912,7 +912,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) g_CLR_RT_TypeSystem.BuildTypeName(arrayTypeDef, szBuffer, iBuffer); // compose output message - std::string objectCreation = std::format( + std::string objectDeletion = std::format( "Delete {}[] @ 0x{:X} {} bytes [{:08x}] {} elements {} level(s)\r\n", fullTypeName, (CLR_UINT64)((CLR_UINT8 *)ptr), @@ -921,7 +921,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) array->m_numOfElements, levels); - g_ProfilerMessageCallback(objectCreation.c_str()); + g_ProfilerMessageCallback(objectDeletion.c_str()); } else if (dt == DATATYPE_CLASS || dt == DATATYPE_VALUETYPE) { @@ -935,7 +935,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) g_CLR_RT_TypeSystem.BuildTypeName(idx, szBuffer, iBuffer); // compose output message - std::string objectCreation = std::format( + std::string objectDeletion = std::format( "Delete {} {} @ 0x{:X} [{:08x}] {} bytes\r\n", c_CLR_RT_DataTypeLookup[dt].m_name, fullTypeName, @@ -943,7 +943,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) idx.data, (ptr->DataSize() * sizeof(struct CLR_RT_HeapBlock))); - g_ProfilerMessageCallback(objectCreation.c_str()); + g_ProfilerMessageCallback(objectDeletion.c_str()); } else { From 5a6ed364ae08650953486d1e695ec99bf36114ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 26 Feb 2025 18:18:50 +0000 Subject: [PATCH 111/168] Rework Reflection, RuntimeType and System.Type (#3125) ***NO_CI*** (cherry picked from commit 44a2f8ca76134b1748c29961e9e5ee5e09b54b7a) --- ...rlib_native_System_Reflection_Assembly.cpp | 12 ++++----- ...lib_native_System_Reflection_FieldInfo.cpp | 4 +-- ...ib_native_System_Reflection_MethodBase.cpp | 26 ++++++++++--------- ...ive_System_Reflection_RuntimeFieldInfo.cpp | 6 ++--- ...ve_System_Reflection_RuntimeMethodInfo.cpp | 6 ++--- .../corlib_native_System_RuntimeType.cpp | 16 ++++++------ src/CLR/CorLib/corlib_native_System_Type.cpp | 23 ++++++++-------- src/CLR/Diagnostics/Profiler.cpp | 2 +- 8 files changed, 49 insertions(+), 46 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index d1889614c0..8d41183199 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -15,7 +15,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING( CLR_RT_Assembly *assm; char buffer[NANOCLR_MAX_ASSEMBLY_NAME * 2]; const CLR_RECORD_ASSEMBLY *header; - CLR_RT_HeapBlock *hbAsm = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbAsm = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, instance)); @@ -52,7 +52,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__ CLR_RT_HeapBlock *hbRef; CLR_RT_HeapBlock *hbObj; const char *szClass = stack.Arg1().RecoverString(); - CLR_RT_HeapBlock *hbAsm = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbAsm = stack.This(); FAULT_ON_NULL(szClass); FAULT_ON_NULL(hbAsm); @@ -78,7 +78,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetTypes___SZARRAY_Sys NANOCLR_HEADER(); CLR_RT_Assembly_Instance assm; - CLR_RT_HeapBlock *hbAsm = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbAsm = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); @@ -125,7 +125,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYR else { CLR_RT_Assembly_Instance assm; - CLR_RT_HeapBlock *hbAsm = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbAsm = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); @@ -147,7 +147,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetManifestResourceNam NANOCLR_HEADER(); CLR_RT_Assembly_Instance assm; - CLR_RT_HeapBlock *hbAsm = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbAsm = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbAsm, assm)); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index 93edb0961b..da0f547cd5 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -109,7 +109,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::Initialize( { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.This(); if (CLR_RT_ReflectionDef_Index::Convert(*hbField, instFD) == false || instTD.InitializeFromField(instFD) == false) { @@ -154,7 +154,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // get the caller field - callerField = stack.Arg0().Dereference(); + callerField = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_RuntimeFieldInfo::GetFieldDescriptor( stack, diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index a273baaff7..19651b81bc 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -1,17 +1,20 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // + #include "CorLib.h" +typedef Library_corlib_native_System_Reflection_ParameterInfo ParameterInfo; + HRESULT Library_corlib_native_System_Reflection_MethodBase::get_Name___STRING(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); CLR_RT_MethodDef_Instance md; - CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbMeth = stack.This(); NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); @@ -27,7 +30,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::get_DeclaringType___ CLR_RT_MethodDef_Instance md; CLR_RT_TypeDef_Instance cls{}; - CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbMeth = stack.This(); NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); @@ -109,8 +112,8 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ const CLR_RECORD_METHODDEF *mdR; CLR_RT_HeapBlock_Array *pArray = stack.Arg2().DereferenceArray(); CLR_RT_HeapBlock *args = nullptr; - int ArgumentsCount = 0; - CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); + int argumentsCount = 0; + CLR_RT_HeapBlock *hbMeth = stack.This(); NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); @@ -123,10 +126,10 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ if (pArray) { args = (CLR_RT_HeapBlock *)pArray->GetFirstElement(); - ArgumentsCount = pArray->m_numOfElements; + argumentsCount = pArray->m_numOfElements; } - NANOCLR_CHECK_HRESULT(stack.MakeCall(md, &obj, args, ArgumentsCount)); + NANOCLR_CHECK_HRESULT(stack.MakeCall(md, &obj, args, argumentsCount)); } else { @@ -171,7 +174,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::CheckFlags( CLR_RT_MethodDef_Instance md; bool fRes; - CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbMeth = stack.This(); NANOCLR_CHECK_HRESULT(GetMethodDescriptor(stack, *hbMeth, md)); @@ -206,9 +209,9 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *hbMethodInfo = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbMethodInfo = stack.This(); - idx.data = hbMethodInfo[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4; + idx.data = hbMethodInfo[FIELD___token].NumericByRef().u4; inst.InitializeFromIndex(idx); // 1st pass: get the number of parameters @@ -247,8 +250,7 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::GetParametersNative_ hbObj = paramInfoElement->Dereference(); // get reference to the instance - CLR_RT_HeapBlock ¶TypeHB = - hbObj[Library_corlib_native_System_Reflection_ParameterInfo::FIELD___parameterType]; + CLR_RT_HeapBlock ¶TypeHB = hbObj[ParameterInfo::FIELD___parameterType]; // create a new instance of the parameter type NANOCLR_CHECK_HRESULT( diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp index 7fb193b56b..588c834a29 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeFieldInfo.cpp @@ -9,7 +9,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_Name___STR { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.This(); CLR_RT_FieldDef_Instance fd; if (GetFieldDescriptor(stack, *hbField, fd) == false) @@ -28,7 +28,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_DeclaringT CLR_RT_FieldDef_Instance fd; CLR_RT_TypeDef_Instance cls{}; - CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.This(); if (GetFieldDescriptor(stack, *hbField, fd) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); @@ -56,7 +56,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeFieldInfo::get_FieldType_ CLR_RT_TypeDescriptor desc{}; CLR_RT_FieldDef_Instance fd; - CLR_RT_HeapBlock *hbField = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbField = stack.This(); if (GetFieldDescriptor(stack, *hbField, fd) == false) NANOCLR_SET_AND_LEAVE(CLR_E_NULL_REFERENCE); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp index 6c00968c58..044ef3bb12 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -13,7 +13,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::get_ReturnTyp CLR_RT_MethodDef_Instance md; CLR_RT_SignatureParser parser{}; CLR_RT_TypeDescriptor desc{}; - CLR_RT_HeapBlock *hbMeth = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbMeth = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor(stack, *hbMeth, md)); @@ -48,7 +48,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // get the caller method - callerMethod = stack.Arg0().Dereference(); + callerMethod = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_Reflection_MethodBase::GetMethodDescriptor( stack, diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index deb4a50ece..a48440adae 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -11,7 +11,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_Assembly___SystemReflectio NANOCLR_HEADER(); CLR_RT_TypeDef_Instance td; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbType, td, nullptr)); @@ -33,7 +33,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_Name___STRING(CLR_RT_Stack { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(GetName(*hbType, false, stack.PushValueAndClear())); @@ -44,7 +44,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_FullName___STRING(CLR_RT_S { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(GetName(*hbType, true, stack.PushValueAndClear())); @@ -59,7 +59,7 @@ HRESULT Library_corlib_native_System_RuntimeType::get_BaseType___SystemType(CLR_ CLR_RT_TypeDef_Instance td; CLR_UINT32 levels; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*hbType, td, &levels)); @@ -122,7 +122,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetInterfaces___SZARRAY_System CLR_RT_TypeDef_Instance td; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); CLR_RT_HeapBlock *ptr = nullptr; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); int count = 0; // 2-pass algorithm. 1. count the interfaces; 2. store the interfaces in an array @@ -192,7 +192,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetElementType___SystemType(CL CLR_RT_TypeDescriptor desc{}; CLR_RT_TypeDescriptor descSub; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(desc.InitializeFromReflection(hbType->ReflectionDataConst())); @@ -278,7 +278,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributesNative___SZ CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // get the caller type - callerType = stack.Arg0().Dereference(); + callerType = stack.This(); NANOCLR_CHECK_HRESULT(GetTypeDescriptor(*callerType, typeDefinition)); diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index 1e70b56e67..fb9fa2719d 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -1,10 +1,13 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // + #include "CorLib.h" +typedef Library_corlib_native_System_Reflection_MethodBase MethodBase; + HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); @@ -12,7 +15,7 @@ HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT CLR_RT_TypeDef_Instance td; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); @@ -50,7 +53,7 @@ HRESULT Library_corlib_native_System_Type::IsInstanceOfType___BOOLEAN__OBJECT(CL CLR_RT_TypeDescriptor descTarget; CLR_RT_TypeDescriptor desc{}; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); if (hbType->DataType() != DATATYPE_REFLECTION) NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); @@ -248,7 +251,7 @@ HRESULT Library_corlib_native_System_Type::get_IsArray___BOOLEAN(CLR_RT_StackFra NANOCLR_HEADER(); CLR_RT_TypeDef_Instance td; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); @@ -366,7 +369,7 @@ HRESULT Library_corlib_native_System_Type::CheckFlags(CLR_RT_StackFrame &stack, CLR_RT_TypeDef_Instance td; bool fRes; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); NANOCLR_CHECK_HRESULT(Library_corlib_native_System_RuntimeType::GetTypeDescriptor(*hbType, td)); @@ -404,7 +407,7 @@ HRESULT Library_corlib_native_System_Type::GetFields( CLR_RT_TypeDef_Instance td; CLR_RT_TypeDef_Instance tdArg; int iField; - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); if (bindingFlags == c_BindingFlags_Default) bindingFlags = c_BindingFlags_DefaultLookup; @@ -538,7 +541,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( CLR_RT_TypeDef_Instance tdArg; int iMethod; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - CLR_RT_HeapBlock *hbType = stack.Arg0().Dereference(); + CLR_RT_HeapBlock *hbType = stack.This(); bool staticInstanceOnly = false; if (bindingFlags == c_BindingFlags_Default) @@ -674,8 +677,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( NANOCLR_CHECK_HRESULT(hbObj->SetReflection(index)); // store token for type - hbObj[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4 = - index.data; + hbObj[MethodBase::FIELD___token].NumericByRef().u4 = index.data; } iMethod++; @@ -776,8 +778,7 @@ HRESULT Library_corlib_native_System_Type::GetMethods( hbObj->SetReflection(inst); // store token for type - hbObj[Library_corlib_native_System_Reflection_MethodBase::FIELD___token].NumericByRef().u4 = - inst.data; + hbObj[MethodBase::FIELD___token].NumericByRef().u4 = inst.data; } } diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index cf7cd5c8b1..a4cd3d922a 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -1076,7 +1076,7 @@ void CLR_PRF_Profiler::TrackObjectRelocation(void *previousAddress, void *destin else if (dt == DATATYPE_SZARRAY) { CLR_RT_HeapBlock_Array *array = (CLR_RT_HeapBlock_Array *)ptr; - CLR_RT_TypeDef_Index elementIdx = array->ReflectionDataConst().m_data.m_type; + CLR_RT_TypeDef_Index elementIdx = array->ReflectionDataConst().data.type; // build type name char fullTypeName[1024] = {0}; From db0d891fab1081bdbcab06e4911476f2d9ad209a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 28 Feb 2025 21:33:59 +0000 Subject: [PATCH 112/168] Fix string relocation handler (#3073) (cherry picked from commit 6937f24b58f07ad5e0ee9c6d87e47ff44b7db900) --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index cf80e24673..7adde4f2c5 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -2462,7 +2462,10 @@ void CLR_RT_HeapBlock::Relocate_String() { NATIVE_PROFILE_CLR_CORE(); - CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_data); + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_data.string.m_text); +#if !defined(NANOCLR_NO_ASSEMBLY_STRINGS) + CLR_RT_GarbageCollector::Heap_Relocate((void **)&m_data.string.m_assm); +#endif } void CLR_RT_HeapBlock::Relocate_Obj() From 9dd0e57436beccdb5d48eff50825441ced36a814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 5 Mar 2025 12:22:45 +0000 Subject: [PATCH 113/168] Add implementation for Hashing CRC32 to virtual device (#3131) ***NO_CI*** (cherry picked from commit 55f65f2ca23392d83c1ad7ad61e0c360adbfb949) --- .../System.IO.Hashing.vcxproj | 162 ++++++++++++++++++ .../System.IO.Hashing.vcxproj.filters | 30 ++++ .../nf_sys_io_hashing.h | 3 +- ..._hashing_System_IO_Hashing_Crc32_stubs.cpp | 95 ++++++++++ targets/netcore/nanoCLR.sln | 15 ++ .../nanoFramework.nanoCLR.vcxproj | 3 + targets/win32/nanoCLR.sln | 23 ++- .../CLR_RT_InteropAssembliesTable.cpp | 2 + targets/win32/nanoCLR/nanoCLR.vcxproj | 3 + 9 files changed, 330 insertions(+), 6 deletions(-) create mode 100644 src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj create mode 100644 src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj.filters create mode 100644 src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp diff --git a/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj b/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj new file mode 100644 index 0000000000..1239e485ab --- /dev/null +++ b/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj @@ -0,0 +1,162 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + {856fbb90-ae1d-4f23-a919-53727e0e9bc6} + Win32Proj + System.IO.Hashing_stub + 10.0 + + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + $(BinDir) + $(IntDir) + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + + + Level3 + Disabled + _DEBUG;DEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + ..\..\targets\win32\Include;..\Include;..\CLR\Include;..\CorLib;..\CLR\CorLib;..\HAL\Include;..\PAL\Include;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + + diff --git a/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj.filters b/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj.filters new file mode 100644 index 0000000000..54b34c614a --- /dev/null +++ b/src/nanoFramework.System.IO.Hashing/System.IO.Hashing.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + + + Source Files + + + Source Files + + + diff --git a/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing.h b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing.h index 1ddf42f724..c3686f3722 100644 --- a/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing.h +++ b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // See LICENSE file in the project root for full license information. // @@ -8,7 +8,6 @@ #include #include -#include #include struct Library_nf_sys_io_hashing_System_IO_Hashing_Crc32 diff --git a/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp new file mode 100644 index 0000000000..07b0823362 --- /dev/null +++ b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp @@ -0,0 +1,95 @@ +// +// Copyright (c) .NET Foundation and Contributors +// See LICENSE file in the project root for full license information. +// + +#include "nf_sys_io_hashing.h" + +typedef Library_corlib_native_System_SpanByte SpanByte; + +uint32_t ComputeCrc32(uint32_t crc, const uint8_t *buf, size_t len) +{ + // implementation for ITU-T V.42 + static const uint32_t crcTable[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, + 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, + 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, + 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, + 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, + 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, + 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, + 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, + 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, + 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, + 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, + 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d}; + + while (len--) + { + crc = crcTable[(crc ^ *buf++) & 0xFF] ^ (crc >> 8); + } + + return crc; +} + +HRESULT Library_nf_sys_io_hashing_System_IO_Hashing_Crc32::ComputeHash___STATIC__U4__U4__SystemSpanByte( + CLR_RT_StackFrame &stack) +{ + NANOCLR_HEADER(); + + CLR_RT_HeapBlock *bufferSpanByte; + CLR_RT_HeapBlock_Array *buffer; + uint8_t *bufferData = NULL; + int32_t bufferSize = 0; + int32_t bufferOffset = 0; + uint32_t crc32 = 0; + uint32_t hash = 0; + + // get a pointer to the managed object instance and check that it's not NULL + bufferSpanByte = stack.Arg1().Dereference(); + FAULT_ON_NULL_ARG(bufferSpanByte); + + // get initial CRC32 value + crc32 = stack.Arg0().NumericByRef().u4; + + // get buffer + buffer = bufferSpanByte[SpanByte::FIELD___array].DereferenceArray(); + + // Get the write offset + bufferOffset = bufferSpanByte[SpanByte::FIELD___start].NumericByRef().s4; + + // use the span length as write size, only the elements defined by the span must be written + bufferSize = bufferSpanByte[SpanByte::FIELD___length].NumericByRef().s4; + bufferData = buffer->GetElement(bufferOffset); + + if (bufferSize == 0) + { + hash = crc32; + } + else + { + // compute the hash + hash = ComputeCrc32(crc32, bufferData, bufferSize); + } + + stack.SetResult_U4(hash); + + NANOCLR_NOCLEANUP(); +} diff --git a/targets/netcore/nanoCLR.sln b/targets/netcore/nanoCLR.sln index 6f7e3ba4fd..2d89035872 100644 --- a/targets/netcore/nanoCLR.sln +++ b/targets/netcore/nanoCLR.sln @@ -92,6 +92,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.I2c", "..\..\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Spi", "..\..\src\System.Device.Spi\System.Device.Spi.vcxproj", "{197C5BB5-72D2-4634-A5F8-8443DBF39985}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.IO.Hashing", "..\..\src\nanoFramework.System.IO.Hashing\System.IO.Hashing.vcxproj", "{856FBB90-AE1D-4F23-A919-53727E0E9BC6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -546,6 +548,18 @@ Global {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.Build.0 = Release|x64 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.ActiveCfg = Release|Win32 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.Build.0 = Release|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|Any CPU.ActiveCfg = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|Any CPU.Build.0 = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x64.ActiveCfg = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x64.Build.0 = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x86.ActiveCfg = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x86.Build.0 = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|Any CPU.ActiveCfg = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|Any CPU.Build.0 = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x64.ActiveCfg = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x64.Build.0 = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x86.ActiveCfg = Release|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -585,6 +599,7 @@ Global {ABFE159E-84D5-489E-BFE6-8A7F4B597A44} = {B5342381-A5C8-429B-99E6-49C86AD55C4E} {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910} = {E91B7D05-94FA-4E24-8981-411E6A60092E} {197C5BB5-72D2-4634-A5F8-8443DBF39985} = {E91B7D05-94FA-4E24-8981-411E6A60092E} + {856FBB90-AE1D-4F23-A919-53727E0E9BC6} = {E91B7D05-94FA-4E24-8981-411E6A60092E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {574F8A61-4693-4FDE-8770-BFAFF64BB7A0} diff --git a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj index aa816d121c..bf47c8c660 100644 --- a/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj +++ b/targets/netcore/nanoFramework.nanoCLR/nanoFramework.nanoCLR.vcxproj @@ -305,6 +305,9 @@ {091562a5-5c72-4115-a053-daf183a3b45b} + + {856fbb90-ae1d-4f23-a919-53727e0e9bc6} + {70922447-ebf0-4473-b014-776f8c9426e7} diff --git a/targets/win32/nanoCLR.sln b/targets/win32/nanoCLR.sln index b8243705f1..56eef710d0 100644 --- a/targets/win32/nanoCLR.sln +++ b/targets/win32/nanoCLR.sln @@ -79,6 +79,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.I2c", "..\..\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.Device.Spi", "..\..\src\System.Device.Spi\System.Device.Spi.vcxproj", "{197C5BB5-72D2-4634-A5F8-8443DBF39985}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "System.IO.Hashing", "..\..\src\nanoFramework.System.IO.Hashing\System.IO.Hashing.vcxproj", "{856FBB90-AE1D-4F23-A919-53727E0E9BC6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -447,8 +449,8 @@ Global {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x64.Build.0 = Release|x64 {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x86.ActiveCfg = Release|Win32 {C9264D0A-AC25-46B0-BD08-4A3252427F19}.Release|x86.Build.0 = Release|Win32 - {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.ActiveCfg = Debug|x64 - {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.Build.0 = Debug|x64 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|Any CPU.Build.0 = Debug|Win32 {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.ActiveCfg = Debug|x64 {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x64.Build.0 = Debug|x64 {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Debug|x86.ActiveCfg = Debug|Win32 @@ -459,8 +461,8 @@ Global {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x64.Build.0 = Release|x64 {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.ActiveCfg = Release|Win32 {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910}.Release|x86.Build.0 = Release|Win32 - {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.ActiveCfg = Debug|x64 - {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.Build.0 = Debug|x64 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|Any CPU.Build.0 = Debug|Win32 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.ActiveCfg = Debug|x64 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x64.Build.0 = Debug|x64 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Debug|x86.ActiveCfg = Debug|Win32 @@ -471,6 +473,18 @@ Global {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x64.Build.0 = Release|x64 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.ActiveCfg = Release|Win32 {197C5BB5-72D2-4634-A5F8-8443DBF39985}.Release|x86.Build.0 = Release|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|Any CPU.Build.0 = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x64.ActiveCfg = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x64.Build.0 = Debug|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x86.ActiveCfg = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Debug|x86.Build.0 = Debug|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|Any CPU.ActiveCfg = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|Any CPU.Build.0 = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x64.ActiveCfg = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x64.Build.0 = Release|x64 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x86.ActiveCfg = Release|Win32 + {856FBB90-AE1D-4F23-A919-53727E0E9BC6}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -504,6 +518,7 @@ Global {C9264D0A-AC25-46B0-BD08-4A3252427F19} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {E9AE1AF4-6B6A-4E10-B136-7A8AFFC5B910} = {383CE434-88F9-4BD4-99C3-D7F19558868D} {197C5BB5-72D2-4634-A5F8-8443DBF39985} = {383CE434-88F9-4BD4-99C3-D7F19558868D} + {856FBB90-AE1D-4F23-A919-53727E0E9BC6} = {383CE434-88F9-4BD4-99C3-D7F19558868D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {432A3A35-F7BC-47DA-B887-9F18A369A065} diff --git a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp index 00502371e6..6a2d75f8ac 100644 --- a/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp +++ b/targets/win32/nanoCLR/Generated/CLR_RT_InteropAssembliesTable.cpp @@ -19,6 +19,7 @@ extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_Gpio; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_IO_FileSystem; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_I2c; extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_System_Device_Spi; +extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_System_IO_Hashing; // nanoFramework class libraries declarations extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Events; @@ -40,6 +41,7 @@ const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[] = { &g_CLR_AssemblyNative_System_Device_Gpio, &g_CLR_AssemblyNative_System_Device_I2c, &g_CLR_AssemblyNative_System_Device_Spi, + &g_CLR_AssemblyNative_nanoFramework_System_IO_Hashing, #ifndef NANOWIN32 &g_CLR_AssemblyNative_System_IO_FileSystem #endif diff --git a/targets/win32/nanoCLR/nanoCLR.vcxproj b/targets/win32/nanoCLR/nanoCLR.vcxproj index 42dc74e211..523849bc64 100644 --- a/targets/win32/nanoCLR/nanoCLR.vcxproj +++ b/targets/win32/nanoCLR/nanoCLR.vcxproj @@ -298,6 +298,9 @@ {091562a5-5c72-4115-a053-daf183a3b45b} + + {856fbb90-ae1d-4f23-a919-53727e0e9bc6} + {70922447-ebf0-4473-b014-776f8c9426e7} From 4e67f9b96c1df2f70ed9fcd901de25f7d654d6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 14 Mar 2025 14:32:13 +0000 Subject: [PATCH 114/168] Update nanoclr and host to .NET 8.0 (#3134) (cherry picked from commit 3a9671309956f38564b471015cb24af606d697ef) --- .../CloudsmithPackageInfo.cs | 10 +- .../ClrInstanceOperationsProcessor.cs | 4 +- .../nanoFramework.nanoCLR.CLI.csproj | 12 +- .../packages.lock.json | 790 +++++++++++++++++- .../nanoFramework.nanoCLR.CLI/version.json | 4 +- .../nanoFramework.nanoCLR.Host.csproj | 6 +- .../packages.lock.json | 44 +- 7 files changed, 787 insertions(+), 83 deletions(-) diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/CloudsmithPackageInfo.cs b/targets/netcore/nanoFramework.nanoCLR.CLI/CloudsmithPackageInfo.cs index 552572ac55..a74b3324c6 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/CloudsmithPackageInfo.cs +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/CloudsmithPackageInfo.cs @@ -3,24 +3,24 @@ // See LICENSE file in the project root for full license information. // -using Newtonsoft.Json; using System; +using System.Text.Json.Serialization; namespace nanoFramework.nanoCLR.CLI { [Serializable] internal class CloudsmithPackageInfo { - [JsonProperty("version")] + [JsonPropertyName("version")] public string Version { get; set; } - [JsonProperty("cdn_url")] + [JsonPropertyName("cdn_url")] public string DownloadUrl { get; set; } - [JsonProperty("name")] + [JsonPropertyName("name")] public string TargetName { get; set; } - [JsonProperty("uploaded_at")] + [JsonPropertyName("uploaded_at")] public DateTime PackageDate { get; set; } } } diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/ClrInstanceOperationsProcessor.cs b/targets/netcore/nanoFramework.nanoCLR.CLI/ClrInstanceOperationsProcessor.cs index e06ed55e1d..2a4cab6972 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/ClrInstanceOperationsProcessor.cs +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/ClrInstanceOperationsProcessor.cs @@ -7,9 +7,9 @@ using System.Linq; using System.Net.Http; using System.Reflection; +using System.Text.Json; using System.Threading.Tasks; using nanoFramework.nanoCLR.Host; -using Newtonsoft.Json; namespace nanoFramework.nanoCLR.CLI { @@ -147,7 +147,7 @@ private static async Task UpdateNanoCLRAsync( return ExitCode.E9005; } - var packageInfo = JsonConvert.DeserializeObject>(responseBody); + var packageInfo = JsonSerializer.Deserialize>(responseBody); if (packageInfo.Count != 1) { diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj b/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj index 5d61572b23..6c9e40f6f7 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0 AnyCPU any AnyCPU @@ -36,7 +36,7 @@ True - tools\net6.0\any\NanoCLR + tools\net8.0\any\NanoCLR PreserveNewest @@ -63,14 +63,14 @@ - - net6.0\ + + net8.0\ - - + + diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/packages.lock.json b/targets/netcore/nanoFramework.nanoCLR.CLI/packages.lock.json index c39cdfbcb0..32c576dec1 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/packages.lock.json +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/packages.lock.json @@ -1,7 +1,7 @@ { "version": 1, "dependencies": { - "net6.0": { + "net8.0": { "CommandLineParser": { "type": "Direct", "requested": "[2.9.1, )", @@ -10,15 +10,20 @@ }, "Nerdbank.GitVersioning": { "type": "Direct", - "requested": "[3.5.119, )", - "resolved": "3.5.119", - "contentHash": "x8k4zV6YKZA5Rr810439lG9NngdbyPtFv0QpIYz32m1Im59kvSbEHO8gKGZoNvsfZSquayjEDUCa8acbut372g==" + "requested": "[3.7.115, )", + "resolved": "3.7.115", + "contentHash": "EpXamaAdRfG/BMxGgvZlTM0npRnkmXUjAj8OdNKd17t4oN+2nvjdv/KnFmzOOMDqvlwB49UCwtOHJrAQTfUBtQ==" }, - "Newtonsoft.Json": { + "System.Runtime.Serialization.Json": { "type": "Direct", - "requested": "[13.0.2, )", - "resolved": "13.0.2", - "contentHash": "R2pZ3B0UjeyHShm9vG+Tu0EBb2lC8b0dFzV9gVn50ofHXh9Smjk6kTn7A/FdAsC8B5cKib1OnGYOXxRBz5XQDg==" + "requested": "[4.3.0, )", + "resolved": "4.3.0", + "contentHash": "CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==", + "dependencies": { + "System.IO": "4.3.0", + "System.Private.DataContractSerialization": "4.3.0", + "System.Runtime": "4.3.0" + } }, "System.Security.Principal.Windows": { "type": "Direct", @@ -26,96 +31,795 @@ "resolved": "5.0.0", "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" + }, "runtime.linux-arm.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "75q52H7CSpgIoIDwXb9o833EvBZIXJ0mdPhz1E6jSisEXUBlSCPalC29cj3EXsjpuDwr0dj1LRXZepIQH/oL4Q==" + "resolved": "8.0.0", + "contentHash": "gK720fg6HemDg8sXcfy+xCMZ9+hF78Gc7BmREbmkS4noqlu1BAr9qZtuWGhLzFjBfgecmdtl4+SYVwJ1VneZBQ==" }, "runtime.linux-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xn2bMThmXr3CsvOYmS8ex2Yz1xo+kcnhVg2iVhS9PlmqjZPAkrEo/I40wjrBZH/tU4kvH0s1AE8opAvQ3KIS8g==" + "resolved": "8.0.0", + "contentHash": "KYG6/3ojhEWbb3FwQAKgGWPHrY+HKUXXdVjJlrtyCLn3EMcNTaNcPadb2c0ndQzixZSmAxZKopXJr0nLwhOrpQ==" }, "runtime.linux-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "16nbNXwv0sC+gLGIuecri0skjuh6R1maIJggsaNP7MQBcbVcEfWFUOkEnsnvoLEjy0XerfibuRptfQ8AmdIcWA==" + "resolved": "8.0.0", + "contentHash": "Wnw5vhA4mgGbIFoo6l9Fk3iEcwRSq49a1aKwJgXUCUtEQLCSUDjTGSxqy/oMUuOyyn7uLHsH8KgZzQ1y3lReiQ==" }, "runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "KaaXlpOcuZjMdmyF5wzzx3b+PRKIzt6A5Ax9dKenPDQbVJAFpev+casD0BIig1pBcbs3zx7CqWemzUJKAeHdSQ==", + "resolved": "8.0.0", + "contentHash": "Ee7Sz5llLpTgyKIWzKI/GeuRSbFkOABgJRY00SqTY0OkTYtkB+9l5rFZfE7fxPA3c22RfytCBYkUdAkcmwMjQg==", "dependencies": { - "runtime.linux-arm.runtime.native.System.IO.Ports": "6.0.0", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.linux-x64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.osx-x64.runtime.native.System.IO.Ports": "6.0.0" + "runtime.linux-arm.runtime.native.System.IO.Ports": "8.0.0", + "runtime.linux-arm64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.linux-x64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.osx-arm64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.osx-x64.runtime.native.System.IO.Ports": "8.0.0" } }, "runtime.osx-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "fXG12NodG1QrCdoaeSQ1gVnk/koi4WYY4jZtarMkZeQMyReBm1nZlSRoPnUjLr2ZR36TiMjpcGnQfxymieUe7w==" + "resolved": "8.0.0", + "contentHash": "rbUBLAaFW9oVkbsb0+XSrAo2QdhBeAyzLl5KQ6Oci9L/u626uXGKInsVJG6B9Z5EO8bmplC8tsMiaHK8wOBZ+w==" }, "runtime.osx-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/As+zPY49+dSUXkh+fTUbyPhqrdGN//evLxo4Vue88pfh1BHZgF7q4kMblTkxYvwR6Vi03zSYxysSFktO8/SDQ==" + "resolved": "8.0.0", + "contentHash": "IcfB4jKtM9pkzP9OpYelEcUX1MiDt0IJPBh3XYYdEISFF+6Mc+T8WWi0dr9wVh1gtcdVjubVEIBgB8BHESlGfQ==" + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Diagnostics.Debug": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tools": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "dependencies": { + "System.Runtime": "4.3.0" + } }, "System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "dRyGI7fUESar5ZLIpiBOaaNLW7YyOBGftjj5Of+xcduC/Rjl7RjhEnWDvvNBmHuF3d0tdXoqdVI/yrVA8f00XA==", + "resolved": "8.0.0", + "contentHash": "MaiPbx2/QXZc62gm/DrajRrGPG1lU4m08GWMoWiymPYM+ba4kfACp2PbiYpqJ4QiFGhHD00zX3RoVDTucjWe9g==", + "dependencies": { + "runtime.native.System.IO.Ports": "8.0.0" + } + }, + "System.Linq": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Private.DataContractSerialization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + } + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit.ILGeneration": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit.Lightweight": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.Serialization.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==", + "dependencies": { + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Text.RegularExpressions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "System.Threading": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Xml.ReaderWriter": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + } + }, + "System.Xml.XDocument": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "System.Xml.XmlDocument": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + } + }, + "System.Xml.XmlSerializer": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==", "dependencies": { - "runtime.native.System.IO.Ports": "6.0.0" + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" } }, "nanoframework.nanoclr.host": { "type": "Project", "dependencies": { - "System.IO.Ports": "[6.0.0, )" + "System.IO.Ports": "[8.0.0, )" } } }, - "net6.0/any": { + "net8.0/any": { "System.Security.Principal.Windows": { "type": "Direct", "requested": "[5.0.0, )", "resolved": "5.0.0", "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" }, + "runtime.any.System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "23g6rqftKmovn2cLeGsuHUYm0FD7pdutb0uQMJpZ3qTvq+zHkgmt6J65VtRry4WDGYlmkMa4xDACtaQ94alNag==", + "dependencies": { + "System.Runtime": "4.3.0" + } + }, + "runtime.any.System.Diagnostics.Tools": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "S/GPBmfPBB48ZghLxdDR7kDAJVAqgAuThyDJho3OLP5OS4tWD2ydyL8LKm8lhiBxce10OKe9X2zZ6DUjAqEbPg==" + }, + "runtime.any.System.Diagnostics.Tracing": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "1lpifymjGDzoYIaam6/Hyqf8GhBI3xXYLK2TgEvTtuZMorG3Kb9QnMTIKhLjJYXIiu1JvxjngHvtVFQQlpQ3HQ==" + }, + "runtime.any.System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "sMDBnad4rp4t7GY442Jux0MCUuKL4otn5BK6Ni0ARTXTSpRNBzZ7hpMfKSvnVSED5kYJm96YOWsqV0JH0d2uuw==" + }, + "runtime.any.System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "SDZ5AD1DtyRoxYtEcqQ3HDlcrorMYXZeCt7ZhG9US9I5Vva+gpIWDGMkcwa5XiKL0ceQKRZIX2x0XEjLX7PDzQ==" + }, + "runtime.any.System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "hLC3A3rI8jipR5d9k7+f0MgRCW6texsAp0MWkN/ci18FMtQ9KH7E2vDn/DH2LkxsszlpJpOn9qy6Z6/69rH6eQ==" + }, + "runtime.any.System.Reflection.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "cPhT+Vqu52+cQQrDai/V91gubXUnDKNRvlBnH+hOgtGyHdC17aQIU64EaehwAQymd7kJA5rSrVRNfDYrbhnzyA==" + }, + "runtime.any.System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "Nrm1p3armp6TTf2xuvaa+jGTTmncALWFq22CpmwRvhDf6dE9ZmH40EbOswD4GnFLrMRS0Ki6Kx5aUPmKK/hZBg==" + }, + "runtime.any.System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "Lxb89SMvf8w9p9+keBLyL6H6x/TEmc6QVsIIA0T36IuyOY3kNvIdyGddA2qt35cRamzxF8K5p0Opq4G4HjNbhQ==" + }, + "runtime.any.System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "fRS7zJgaG9NkifaAxGGclDDoRn9HC7hXACl52Or06a/fxdzDajWb5wov3c6a+gVSlekRoexfjwQSK9sh5um5LQ==", + "dependencies": { + "System.Private.Uri": "4.3.0" + } + }, + "runtime.any.System.Runtime.Handles": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "GG84X6vufoEzqx8PbeBKheE4srOhimv+yLtGb/JkR3Y2FmoqmueLNFU4Xx8Y67plFpltQSdK74x0qlEhIpv/CQ==" + }, + "runtime.any.System.Runtime.InteropServices": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "lBoFeQfxe/4eqjPi46E0LU/YaCMdNkQ8B4MZu/mkzdIAZh8RQ1NYZSj0egrQKdgdvlPFtP4STtob40r4o2DBAw==" + }, + "runtime.any.System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "+ihI5VaXFCMVPJNstG4O4eo1CfbrByLxRrQQTqOTp1ttK0kUKDqOdBSTaCB2IBk/QtjDrs6+x4xuezyMXdm0HQ==" + }, + "runtime.any.System.Text.Encoding.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "NLrxmLsfRrOuVqPWG+2lrQZnE53MLVeo+w9c54EV+TUo4c8rILpsDXfY8pPiOy9kHpUHHP07ugKmtsU3vVW5Jg==" + }, + "runtime.any.System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "OhBAVBQG5kFj1S+hCEQ3TUHBAEtZ3fbEMgZMRNdN8A0Pj4x+5nTELEqL59DU0TjKVE6II3dqKw4Dklb3szT65w==" + }, "runtime.linux-arm.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "75q52H7CSpgIoIDwXb9o833EvBZIXJ0mdPhz1E6jSisEXUBlSCPalC29cj3EXsjpuDwr0dj1LRXZepIQH/oL4Q==" + "resolved": "8.0.0", + "contentHash": "gK720fg6HemDg8sXcfy+xCMZ9+hF78Gc7BmREbmkS4noqlu1BAr9qZtuWGhLzFjBfgecmdtl4+SYVwJ1VneZBQ==" }, "runtime.linux-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xn2bMThmXr3CsvOYmS8ex2Yz1xo+kcnhVg2iVhS9PlmqjZPAkrEo/I40wjrBZH/tU4kvH0s1AE8opAvQ3KIS8g==" + "resolved": "8.0.0", + "contentHash": "KYG6/3ojhEWbb3FwQAKgGWPHrY+HKUXXdVjJlrtyCLn3EMcNTaNcPadb2c0ndQzixZSmAxZKopXJr0nLwhOrpQ==" }, "runtime.linux-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "16nbNXwv0sC+gLGIuecri0skjuh6R1maIJggsaNP7MQBcbVcEfWFUOkEnsnvoLEjy0XerfibuRptfQ8AmdIcWA==" + "resolved": "8.0.0", + "contentHash": "Wnw5vhA4mgGbIFoo6l9Fk3iEcwRSq49a1aKwJgXUCUtEQLCSUDjTGSxqy/oMUuOyyn7uLHsH8KgZzQ1y3lReiQ==" }, "runtime.osx-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "fXG12NodG1QrCdoaeSQ1gVnk/koi4WYY4jZtarMkZeQMyReBm1nZlSRoPnUjLr2ZR36TiMjpcGnQfxymieUe7w==" + "resolved": "8.0.0", + "contentHash": "rbUBLAaFW9oVkbsb0+XSrAo2QdhBeAyzLl5KQ6Oci9L/u626uXGKInsVJG6B9Z5EO8bmplC8tsMiaHK8wOBZ+w==" }, "runtime.osx-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/As+zPY49+dSUXkh+fTUbyPhqrdGN//evLxo4Vue88pfh1BHZgF7q4kMblTkxYvwR6Vi03zSYxysSFktO8/SDQ==" + "resolved": "8.0.0", + "contentHash": "IcfB4jKtM9pkzP9OpYelEcUX1MiDt0IJPBh3XYYdEISFF+6Mc+T8WWi0dr9wVh1gtcdVjubVEIBgB8BHESlGfQ==" + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Collections": "4.3.0" + } + }, + "System.Diagnostics.Tools": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Diagnostics.Tools": "4.3.0" + } + }, + "System.Diagnostics.Tracing": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Diagnostics.Tracing": "4.3.0" + } + }, + "System.Globalization": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Globalization": "4.3.0" + } + }, + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.any.System.IO": "4.3.0" + } }, "System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "dRyGI7fUESar5ZLIpiBOaaNLW7YyOBGftjj5Of+xcduC/Rjl7RjhEnWDvvNBmHuF3d0tdXoqdVI/yrVA8f00XA==", + "resolved": "8.0.0", + "contentHash": "MaiPbx2/QXZc62gm/DrajRrGPG1lU4m08GWMoWiymPYM+ba4kfACp2PbiYpqJ4QiFGhHD00zX3RoVDTucjWe9g==", + "dependencies": { + "runtime.native.System.IO.Ports": "8.0.0" + } + }, + "System.Private.Uri": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "I4SwANiUGho1esj4V4oSlPllXjzCZDE+5XXso2P03LW2vOda2Enzh8DWOxwN6hnrJyp314c7KuVu31QYhRzOGg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Reflection": "4.3.0" + } + }, + "System.Reflection.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Reflection.Extensions": "4.3.0" + } + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Reflection.Primitives": "4.3.0" + } + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Resources.ResourceManager": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "runtime.any.System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.InteropServices": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "runtime.any.System.Runtime.InteropServices": "4.3.0" + } + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Text.Encoding": "4.3.0" + } + }, + "System.Text.Encoding.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.any.System.Text.Encoding.Extensions": "4.3.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", "dependencies": { - "runtime.native.System.IO.Ports": "6.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "runtime.any.System.Threading.Tasks": "4.3.0" } } } diff --git a/targets/netcore/nanoFramework.nanoCLR.CLI/version.json b/targets/netcore/nanoFramework.nanoCLR.CLI/version.json index b974f609a7..7ee9d74cd5 100644 --- a/targets/netcore/nanoFramework.nanoCLR.CLI/version.json +++ b/targets/netcore/nanoFramework.nanoCLR.CLI/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.0", + "version": "1.1", "assemblyVersion": { "precision": "minor" }, @@ -23,4 +23,4 @@ "release": { "versionIncrement": "build" } -} \ No newline at end of file +} diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/nanoFramework.nanoCLR.Host.csproj b/targets/netcore/nanoFramework.nanoCLR.Host/nanoFramework.nanoCLR.Host.csproj index eb3ddaea9d..3f7b34cf7e 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/nanoFramework.nanoCLR.Host.csproj +++ b/targets/netcore/nanoFramework.nanoCLR.Host/nanoFramework.nanoCLR.Host.csproj @@ -1,8 +1,8 @@ - + Library - net6.0 + net8.0 AnyCPU AnyCPU ..\..\..\build\bin\$(Configuration) @@ -11,7 +11,7 @@ - + diff --git a/targets/netcore/nanoFramework.nanoCLR.Host/packages.lock.json b/targets/netcore/nanoFramework.nanoCLR.Host/packages.lock.json index 54cc90df09..e8c373fc67 100644 --- a/targets/netcore/nanoFramework.nanoCLR.Host/packages.lock.json +++ b/targets/netcore/nanoFramework.nanoCLR.Host/packages.lock.json @@ -1,52 +1,52 @@ { "version": 1, "dependencies": { - "net6.0": { + "net8.0": { "System.IO.Ports": { "type": "Direct", - "requested": "[6.0.0, )", - "resolved": "6.0.0", - "contentHash": "dRyGI7fUESar5ZLIpiBOaaNLW7YyOBGftjj5Of+xcduC/Rjl7RjhEnWDvvNBmHuF3d0tdXoqdVI/yrVA8f00XA==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "MaiPbx2/QXZc62gm/DrajRrGPG1lU4m08GWMoWiymPYM+ba4kfACp2PbiYpqJ4QiFGhHD00zX3RoVDTucjWe9g==", "dependencies": { - "runtime.native.System.IO.Ports": "6.0.0" + "runtime.native.System.IO.Ports": "8.0.0" } }, "runtime.linux-arm.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "75q52H7CSpgIoIDwXb9o833EvBZIXJ0mdPhz1E6jSisEXUBlSCPalC29cj3EXsjpuDwr0dj1LRXZepIQH/oL4Q==" + "resolved": "8.0.0", + "contentHash": "gK720fg6HemDg8sXcfy+xCMZ9+hF78Gc7BmREbmkS4noqlu1BAr9qZtuWGhLzFjBfgecmdtl4+SYVwJ1VneZBQ==" }, "runtime.linux-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "xn2bMThmXr3CsvOYmS8ex2Yz1xo+kcnhVg2iVhS9PlmqjZPAkrEo/I40wjrBZH/tU4kvH0s1AE8opAvQ3KIS8g==" + "resolved": "8.0.0", + "contentHash": "KYG6/3ojhEWbb3FwQAKgGWPHrY+HKUXXdVjJlrtyCLn3EMcNTaNcPadb2c0ndQzixZSmAxZKopXJr0nLwhOrpQ==" }, "runtime.linux-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "16nbNXwv0sC+gLGIuecri0skjuh6R1maIJggsaNP7MQBcbVcEfWFUOkEnsnvoLEjy0XerfibuRptfQ8AmdIcWA==" + "resolved": "8.0.0", + "contentHash": "Wnw5vhA4mgGbIFoo6l9Fk3iEcwRSq49a1aKwJgXUCUtEQLCSUDjTGSxqy/oMUuOyyn7uLHsH8KgZzQ1y3lReiQ==" }, "runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "KaaXlpOcuZjMdmyF5wzzx3b+PRKIzt6A5Ax9dKenPDQbVJAFpev+casD0BIig1pBcbs3zx7CqWemzUJKAeHdSQ==", + "resolved": "8.0.0", + "contentHash": "Ee7Sz5llLpTgyKIWzKI/GeuRSbFkOABgJRY00SqTY0OkTYtkB+9l5rFZfE7fxPA3c22RfytCBYkUdAkcmwMjQg==", "dependencies": { - "runtime.linux-arm.runtime.native.System.IO.Ports": "6.0.0", - "runtime.linux-arm64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.linux-x64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.osx-arm64.runtime.native.System.IO.Ports": "6.0.0", - "runtime.osx-x64.runtime.native.System.IO.Ports": "6.0.0" + "runtime.linux-arm.runtime.native.System.IO.Ports": "8.0.0", + "runtime.linux-arm64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.linux-x64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.osx-arm64.runtime.native.System.IO.Ports": "8.0.0", + "runtime.osx-x64.runtime.native.System.IO.Ports": "8.0.0" } }, "runtime.osx-arm64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "fXG12NodG1QrCdoaeSQ1gVnk/koi4WYY4jZtarMkZeQMyReBm1nZlSRoPnUjLr2ZR36TiMjpcGnQfxymieUe7w==" + "resolved": "8.0.0", + "contentHash": "rbUBLAaFW9oVkbsb0+XSrAo2QdhBeAyzLl5KQ6Oci9L/u626uXGKInsVJG6B9Z5EO8bmplC8tsMiaHK8wOBZ+w==" }, "runtime.osx-x64.runtime.native.System.IO.Ports": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/As+zPY49+dSUXkh+fTUbyPhqrdGN//evLxo4Vue88pfh1BHZgF7q4kMblTkxYvwR6Vi03zSYxysSFktO8/SDQ==" + "resolved": "8.0.0", + "contentHash": "IcfB4jKtM9pkzP9OpYelEcUX1MiDt0IJPBh3XYYdEISFF+6Mc+T8WWi0dr9wVh1gtcdVjubVEIBgB8BHESlGfQ==" } } } From f48da5a8473e3fe00ba23f3ef9fd5573654d0c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 17 Mar 2025 12:02:08 +0000 Subject: [PATCH 115/168] Fix type lookup table --- src/CLR/Core/TypeSystemLookup.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index a61c9816f9..7c158271d2 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -86,8 +86,8 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(I8 ), DT_CNV(I8 ), DT_CLS(Int64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I8 ) }, // DATATYPE_I8 { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_U8, DT_T(I8 ), DT_CNV(U8 ), DT_CLS(UInt64 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(U8 ) }, // DATATYPE_U8 { DT_NUM | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 64, DT_I8, DT_T(R8 ), DT_CNV(R8 ), DT_CLS(Double ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(R8 ) }, // DATATYPE_R8 - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(DateTime ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME - { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(TimeSpan ), DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(DATETIME ), DT_CNV(END ), DT_CLS(DateTime ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(DATETIME ) }, // DATATYPE_DATETIME + { DT_INT | DT_SGN | DT_VALUE | DT_DIRCT | DT_OPT | DT_MT , 64, DT_BL, DT_T(TIMESPAN ), DT_CNV(END ), DT_CLS(TimeSpan ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(TIMESPAN ) }, // DATATYPE_TIMESPAN { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT From 1d18fa1d5963465d2c04ab170c8912e967fc88a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 17 Mar 2025 12:22:37 +0000 Subject: [PATCH 116/168] Fix declarations --- src/CLR/CorLib/corlib_native.cpp | 62 +++++++++++++++---------- src/CLR/CorLib/corlib_native.h | 77 ++++++++++++-------------------- 2 files changed, 66 insertions(+), 73 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index b3fcd37b13..7fae5249f9 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -221,6 +221,13 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::System_Collections_IList_get_Item___OBJECT__I4, Library_corlib_native_System_Array::System_Collections_IList_set_Item___VOID__I4__OBJECT, nullptr, @@ -435,8 +442,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4, nullptr, - Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime, - Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime, nullptr, nullptr, nullptr, @@ -450,9 +455,13 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + Library_corlib_native_System_DateTime::GetUtcNowAsTicks___STATIC__I8, + Library_corlib_native_System_DateTime::GetTodayAsTicks___STATIC__I8, + nullptr, Library_corlib_native_System_Convert::NativeToInt64___STATIC__I8__STRING__BOOLEAN__I8__I8__I4__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDouble___STATIC__R8__STRING__BOOLEAN__BYREF_BOOLEAN, - Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN, + Library_corlib_native_System_Convert::NativeToDateTime___STATIC__VOID__STRING__BOOLEAN__BYREF_BOOLEAN__BYREF_SystemDateTime, nullptr, nullptr, nullptr, @@ -496,8 +505,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, Library_corlib_native_System_Reflection_Assembly::get_FullName___STRING, Library_corlib_native_System_Reflection_Assembly::GetType___SystemType__STRING, nullptr, @@ -567,11 +574,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, @@ -678,6 +680,7 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::InitializeArray___STATIC__VOID__SystemArray__SystemRuntimeFieldHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::GetObjectValue___STATIC__OBJECT__OBJECT, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::RunClassConstructor___STATIC__VOID__SystemRuntimeTypeHandle, @@ -791,6 +794,10 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -973,6 +980,13 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_Array::System_Collections_IList_get_Item___OBJECT__I4, Library_corlib_native_System_Array::System_Collections_IList_set_Item___VOID__I4__OBJECT, nullptr, @@ -1184,8 +1198,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4, nullptr, - Library_corlib_native_System_DateTime::get_UtcNow___STATIC__SystemDateTime, - Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime, nullptr, nullptr, nullptr, @@ -1199,9 +1211,13 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + Library_corlib_native_System_DateTime::GetUtcNowAsTicks___STATIC__I8, + Library_corlib_native_System_DateTime::GetTodayAsTicks___STATIC__I8, + nullptr, Library_corlib_native_System_Convert::NativeToInt64___STATIC__I8__STRING__BOOLEAN__I8__I8__I4__BOOLEAN__BYREF_BOOLEAN, Library_corlib_native_System_Convert::NativeToDouble___STATIC__R8__STRING__BOOLEAN__BYREF_BOOLEAN, - Library_corlib_native_System_Convert::NativeToDateTime___STATIC__SystemDateTime__STRING__BOOLEAN__BYREF_BOOLEAN, + Library_corlib_native_System_Convert::NativeToDateTime___STATIC__VOID__STRING__BOOLEAN__BYREF_BOOLEAN__BYREF_SystemDateTime, nullptr, nullptr, nullptr, @@ -1239,8 +1255,6 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_corlib_native_System_Diagnostics_Debugger::get_IsAttached___STATIC__BOOLEAN, Library_corlib_native_System_Diagnostics_Debugger::Break___STATIC__VOID, nullptr, - nullptr, - nullptr, Library_corlib_native_System_Enum::HasFlag___BOOLEAN__SystemEnum, nullptr, nullptr, @@ -1293,13 +1307,12 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, nullptr, nullptr, nullptr, - Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, - nullptr, nullptr, nullptr, nullptr, @@ -1315,15 +1328,11 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + Library_corlib_native_System_MathInternal::Abs___STATIC__I4__I4, nullptr, nullptr, nullptr, nullptr, - Library_corlib_native_System_MathInternal::Abs___STATIC__I4__I4, - NULL, - NULL, - NULL, - NULL, Library_corlib_native_System_MulticastDelegate::op_Equality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, Library_corlib_native_System_MulticastDelegate::op_Inequality___STATIC__BOOLEAN__SystemMulticastDelegate__SystemMulticastDelegate, nullptr, @@ -1356,6 +1365,7 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::InitializeArray___STATIC__VOID__SystemArray__SystemRuntimeFieldHandle, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::GetObjectValue___STATIC__OBJECT__OBJECT, Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers::RunClassConstructor___STATIC__VOID__SystemRuntimeTypeHandle, @@ -1456,6 +1466,10 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1483,11 +1497,11 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0x544772A9, + 0x9D7386C1, #elif (NANOCLR_REFLECTION == FALSE) - 0xE3A4B52F, + 0x98F2AA82, #else #error "NANOCLR_REFLECTION has to be define either TRUE or FALSE. Check the build options." diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index b272b9d743..444fc2fb2b 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -322,11 +322,22 @@ struct Library_corlib_native_System_Exception struct Library_corlib_native_System_ArgumentException { + static const int FIELD_STATIC__Arg_ArgumentException = 3; + static const int FIELD_STATIC__Arg_ParamName_Name = 4; + static const int FIELD_STATIC__Argument_EmptyString = 5; + static const int FIELD___paramName = 5; //--// }; +struct Library_corlib_native_System_ArgumentNullException +{ + static const int FIELD_STATIC__ArgumentNull_Generic = 6; + + //--// +}; + struct Library_corlib_native_System_Array { NANOCLR_NATIVE_DECLARE(System_Collections_IList_get_Item___OBJECT__I4); @@ -427,16 +438,8 @@ struct Library_corlib_native_System_Collections_ArrayList //--// }; -struct Library_corlib_native_System_ComponentModel_EditorBrowsableState -{ - - static const int FIELD__value__ = 1; - - //--// -}; struct Library_corlib_native_System_Double { - static const int FIELD__m_value = 1; NANOCLR_NATIVE_DECLARE(CompareTo___STATIC__I4__R8__R8); @@ -450,9 +453,9 @@ struct Library_corlib_native_System_Double struct Library_corlib_native_System_TimeSpan { - static const int FIELD_STATIC__Zero = 3; - static const int FIELD_STATIC__MaxValue = 4; - static const int FIELD_STATIC__MinValue = 5; + static const int FIELD_STATIC__Zero = 7; + static const int FIELD_STATIC__MaxValue = 8; + static const int FIELD_STATIC__MinValue = 9; static const int FIELD___ticks = 1; @@ -481,9 +484,9 @@ struct Library_corlib_native_System_TimeSpan struct Library_corlib_native_System_DateTime { - static const int FIELD_STATIC__MinValue = 6; - static const int FIELD_STATIC__MaxValue = 7; - static const int FIELD_STATIC__UnixEpoch = 8; + static const int FIELD_STATIC__MinValue = 10; + static const int FIELD_STATIC__MaxValue = 11; + static const int FIELD_STATIC__UnixEpoch = 12; static const int FIELD___ticks = 1; @@ -551,13 +554,6 @@ struct Library_corlib_native_System_Diagnostics_Debugger //--// }; -struct Library_corlib_native_System_Diagnostics_DebuggerBrowsableAttribute -{ - static const int FIELD___state = 1; - - //--// -}; - struct Library_corlib_native_System_UInt16 { static const int FIELD__m_value = 1; @@ -592,7 +588,7 @@ struct Library_corlib_native_System_Enum struct Library_corlib_native_System_EventArgs { - static const int FIELD_STATIC__Empty = 9; + static const int FIELD_STATIC__Empty = 13; //--// }; @@ -613,13 +609,6 @@ struct Library_corlib_native_System_Globalization_DateTimeFormat //--// }; -struct Library_corlib_native_System_UInt32 -{ - static const int FIELD__m_value = 1; - - //--// -}; - struct Library_corlib_native_System_Int16 { static const int FIELD__m_value = 1; @@ -629,19 +618,9 @@ struct Library_corlib_native_System_Int16 struct Library_corlib_native_System_Guid { - static const int FIELD_STATIC__Empty = 10; + static const int FIELD_STATIC__Empty = 14; - static const int FIELD___a = 1; - static const int FIELD___b = 2; - static const int FIELD___c = 3; - static const int FIELD___d = 4; - static const int FIELD___e = 5; - static const int FIELD___f = 6; - static const int FIELD___g = 7; - static const int FIELD___h = 8; - static const int FIELD___i = 9; - static const int FIELD___j = 10; - static const int FIELD___k = 11; + static const int FIELD___data = 1; NANOCLR_NATIVE_DECLARE(GenerateNewGuid___STATIC__SZARRAY_U1); @@ -809,13 +788,6 @@ struct Library_corlib_native_System_Reflection_RuntimeMethodInfo //--// }; -struct Library_corlib_native_System_Runtime_CompilerServices_AccessedThroughPropertyAttribute -{ - static const int FIELD___propertyName = 1; - - //--// -}; - struct Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers { NANOCLR_NATIVE_DECLARE(InitializeArray___STATIC__VOID__SystemArray__SystemRuntimeFieldHandle); @@ -980,7 +952,7 @@ struct Library_corlib_native_System_Threading_Thread struct Library_corlib_native_System_Threading_Timeout { - static const int FIELD_STATIC__InfiniteTimeSpan = 11; + static const int FIELD_STATIC__InfiniteTimeSpan = 15; //--// }; @@ -1022,6 +994,13 @@ struct Library_corlib_native_System_Threading_WaitHandle bool fWaitAll); }; +struct Library_corlib_native_System_UInt32 +{ + static const int FIELD__m_value = 1; + + //--// +}; + struct Library_corlib_native_System_UInt64 { static const int FIELD__m_value = 1; From de32afb4707ad6996daec342be8800ac4879e83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 18 Mar 2025 18:19:05 +0000 Subject: [PATCH 117/168] FindTypeDef is now able to process nested types - Following nanoframework/metadata-processor@20ed3fde6d6a1200f5561e277400e0ca70142978 --- src/CLR/Core/TypeSystem.cpp | 42 ++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 15cad626f2..a58e078c46 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4291,10 +4291,48 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C NATIVE_PROFILE_CLR_CORE(); const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); int tblSize = tablesSize[TBL_TypeDef]; + bool isNestedType = false; + + // Check if typeName contains '/' + const char *slashPos = strchr(typeName, '/'); + if (slashPos != nullptr) + { + // Extract the type name from the '/' to the end of the string + const char *extractedTypeName = slashPos + 1; + + // Extract the enclosed type name from the '/' backwards to the '.' before + const char *dotPos = strrchr(typeName, '.'); + std::string enclosedTypeName(dotPos + 1, slashPos); + + // Extract the namespace from the beginning of the string to that '.' + std::string extractedNamespace(typeName, dotPos - typeName); + + // Use the extracted values for further processing + typeName = extractedTypeName; + nameSpace = extractedNamespace.c_str(); + + // set flag to indicate that this is a nested type + isNestedType = true; + } for (int i = 0; i < tblSize; i++, target++) { - if (!target->HasValidEnclosingType()) + if (isNestedType) + { + // check if this is a nested type + if (target->HasValidEnclosingType()) + { + const char *szNameSpace = GetString(target->nameSpace); + const char *szName = GetString(target->name); + + if (!strcmp(szName, typeName) && !strcmp(szNameSpace, nameSpace)) + { + index.Set(assemblyIndex, i); + return true; + } + } + } + else if (!target->HasValidEnclosingType()) { const char *szNameSpace = GetString(target->nameSpace); const char *szName = GetString(target->name); @@ -4302,14 +4340,12 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C if (!strcmp(szName, typeName) && !strcmp(szNameSpace, nameSpace)) { index.Set(assemblyIndex, i); - return true; } } } index.Clear(); - return false; } From b6e028d11b255fcbd38ce5b408b50f87a19e882a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 18 Mar 2025 18:19:49 +0000 Subject: [PATCH 118/168] Fix ResolveToken for FieldDef when using TypeRefs --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index a58e078c46..27f3e2f8b6 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1150,7 +1150,7 @@ bool CLR_RT_FieldDef_Instance::ResolveToken(CLR_UINT32 tk, CLR_RT_Assembly *assm switch (fr->Owner()) { case TBL_TypeRef: - data = assm->crossReferenceFieldRef[fr->OwnerIndex()].target.data; + data = assm->crossReferenceFieldRef[index].target.data; assembly = g_CLR_RT_TypeSystem.m_assemblies[Assembly() - 1]; target = assembly->GetFieldDef(Field()); From c5a9177093d28954e70d1ebf1207555e9342783e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 20 Mar 2025 19:04:06 +0000 Subject: [PATCH 119/168] Fix attribute enumerator - Advance now checks not only table but also owner index for a full match. - Method index is now parsed from compressed token format. --- src/CLR/Core/TypeSystem.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 27f3e2f8b6..e6314766e3 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -6371,19 +6371,21 @@ bool CLR_RT_AttributeEnumerator::Advance() ptr++; num--; - if (ptr->Key() == key) + if (ptr->Key() == key && ptr->ownerIndex == m_data.ownerIndex) { - CLR_INDEX tk = ptr->constructor; - // check TYPEDEF - if (tk & 0x8000) - { - m_match = m_assm->crossReferenceMethodRef[tk & 0x7FFF].target; - } - else + // get the token of the constructor (compressed format) + CLR_UINT32 token = CLR_UncompressMethodToken(ptr->constructor); + + // get the method definition, by resolving the token + CLR_RT_MethodDef_Instance method{}; + if (method.ResolveToken(token, m_assm) == false) { - m_match.Set(m_assm->assemblyIndex, tk); + ASSERT(0); } + // get the method definition index + m_match.data = method.data; + m_blob = m_assm->GetSignature(ptr->data); fRes = true; From d1696c29f5d26677c9870407ccb0b7bebb435f8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Mar 2025 11:34:43 +0000 Subject: [PATCH 120/168] Fix decoding token in exception handler --- src/CLR/Core/TypeSystem.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index e6314766e3..0d0131bd0d 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -2110,14 +2110,8 @@ CLR_PMETADATA CLR_RECORD_EH::ExtractEhFromByteCode(CLR_PMETADATA ipEnd, const CL CLR_UINT32 CLR_RECORD_EH::GetToken() const { NATIVE_PROFILE_CLR_CORE(); - if (classToken & 0x8000) - { - return CLR_TkFromType(TBL_TypeRef, classToken & 0x7FFF); - } - else - { - return CLR_TkFromType(TBL_TypeDef, classToken); - } + + return CLR_UncompressTypeToken(classToken); } //////////////////////////////////////////////////////////////////////////////////////////////////// From 44b264aad382dffd61aca29a4afae814a1029f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Mar 2025 11:59:55 +0000 Subject: [PATCH 121/168] Fix compare double and floats --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 7adde4f2c5..e0ac1195a3 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -1380,6 +1380,29 @@ bool CLR_RT_HeapBlock::ObjectsEqual( return Compare_Values(pArgLeft, pArgRight, false) == 0; break; + // edge cases, in .NET a NaN is equal to another NaN + // https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-double-equals?WT.mc_id=DT-MVP-5004179#nan + case DATATYPE_R4: + if (__isnanf(pArgLeft.NumericByRefConst().r4) && __isnanf(pArgRight.NumericByRefConst().r4)) + { + return true; + } + else + { + return Compare_Values(pArgLeft, pArgRight, false) == 0; + } + break; + case DATATYPE_R8: + if (__isnand((double)pArgLeft.NumericByRefConst().r8) && __isnand((double)pArgRight.NumericByRefConst().r8)) + { + return true; + } + else + { + return Compare_Values(pArgLeft, pArgRight, false) == 0; + } + break; + case DATATYPE_BYREF: if (rightDataType == DATATYPE_OBJECT) { @@ -1699,9 +1722,9 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C case DATATYPE_R4: // deal with special cases: - // return 0 if the numbers are unordered (either or both are NaN) + // return 1 if the numbers are unordered (either or both are NaN) // this is post processed in interpreter so '1' will turn into '0' - if (__isnand(left.NumericByRefConst().r4) && __isnand(right.NumericByRefConst().r4)) + if (__isnanf(left.NumericByRefConst().r4) || __isnanf(right.NumericByRefConst().r4)) { return 1; } @@ -1732,7 +1755,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C case DATATYPE_R8: // deal with special cases: - // return 0 if the numbers are unordered (either or both are NaN) + // return 1 if the numbers are unordered (either or both are NaN) // this is post processed in interpreter so '1' will turn into '0' if (__isnand((double)left.NumericByRefConst().r8) || __isnand((double)right.NumericByRefConst().r8)) { From e48208ba004250b9aab2811c8faf732a72cf6af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 6 Feb 2025 17:17:55 +0000 Subject: [PATCH 122/168] Fix `Equal` and value comparison for double and float types (#3088) (cherry picked from commit 1b5dd621828741602718cb5fed0446a69f08954c) --- src/CLR/Core/CLR_RT_HeapBlock.cpp | 29 ++++++++++++++++++++++++-- src/PAL/Include/nanoPAL_NativeDouble.h | 5 +++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index e0ac1195a3..1de9e8a756 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -1146,8 +1146,21 @@ CLR_UINT32 CLR_RT_HeapBlock::GetHashCode(CLR_RT_HeapBlock *ptr, bool fRecurse, C break; case DATATYPE_R4: - crc = (CLR_INT32)ptr->NumericByRef().u8.LL; + { + // ensure that NaN and both zeros have the same hash code + int signBit = __signbitd(ptr->NumericByRef().r4); + + if (__isnanf(ptr->NumericByRef().r4) || (signBit && ptr->NumericByRef().r4 == 0)) + { + crc = (CLR_INT32)(ptr->NumericByRef().u8.LL & 0x7FFFFFFF); + } + else + { + crc = (CLR_INT32)ptr->NumericByRef().u8.LL; + } + break; + } case DATATYPE_U8: crc = ((CLR_INT32)ptr->NumericByRef().u8.LL ^ (CLR_INT32)ptr->NumericByRef().u8.HH); @@ -1158,8 +1171,20 @@ CLR_UINT32 CLR_RT_HeapBlock::GetHashCode(CLR_RT_HeapBlock *ptr, bool fRecurse, C break; case DATATYPE_R8: - crc = ((CLR_INT32)ptr->NumericByRef().r8.LL ^ (CLR_INT32)ptr->NumericByRef().r8.HH); + { + // ensure that NaN and both zeros have the same hash code + int signBit = __signbitd((double)ptr->NumericByRef().r8); + + if (__isnand((double)ptr->NumericByRef().r8) || (signBit && (double)ptr->NumericByRef().r8 == 0)) + { + crc = (CLR_INT32)(ptr->NumericByRef().r8.LL ^ ((CLR_INT32)ptr->NumericByRef().r8.HH & 0x7FFFFFFF)); + } + else + { + crc = ((CLR_INT32)ptr->NumericByRef().r8.LL ^ (CLR_INT32)ptr->NumericByRef().r8.HH); + } break; + } case DATATYPE_CLASS: case DATATYPE_VALUETYPE: diff --git a/src/PAL/Include/nanoPAL_NativeDouble.h b/src/PAL/Include/nanoPAL_NativeDouble.h index e7d29da7e9..0a48282157 100644 --- a/src/PAL/Include/nanoPAL_NativeDouble.h +++ b/src/PAL/Include/nanoPAL_NativeDouble.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -14,6 +14,7 @@ #include #define __isnand _isnan +#define __isnanf _isnan #define __isinfd(x) (!_finite(x)) inline int __signbitd(double x) @@ -23,7 +24,7 @@ inline int __signbitd(double x) } #define rint(x) floor((x) + 0.5) -#define remainder(x, y) ((x) - ((y)*rint((x) / (y)))) +#define remainder(x, y) ((x) - ((y) * rint((x) / (y)))) #define isgreater(param0, param1) (param0 > param1) #define isless(param0, param1) (param0 < param1) From d7fe88974a36470fd5707885da6840d1d4f56b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Mar 2025 14:01:50 +0000 Subject: [PATCH 123/168] Improve type resolution of nested types - Namespace doesn't get out of scope anymore. - Just comparing type name for the moment. --- src/CLR/Core/TypeSystem.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 0d0131bd0d..504e2091b0 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4286,6 +4286,7 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C const CLR_RECORD_TYPEDEF *target = GetTypeDef(0); int tblSize = tablesSize[TBL_TypeDef]; bool isNestedType = false; + std::string extractedNamespace; // Check if typeName contains '/' const char *slashPos = strchr(typeName, '/'); @@ -4296,10 +4297,19 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C // Extract the enclosed type name from the '/' backwards to the '.' before const char *dotPos = strrchr(typeName, '.'); - std::string enclosedTypeName(dotPos + 1, slashPos); + std::string enclosedTypeName; - // Extract the namespace from the beginning of the string to that '.' - std::string extractedNamespace(typeName, dotPos - typeName); + if (dotPos != nullptr) + { + enclosedTypeName.assign(dotPos + 1, slashPos); + // Extract the namespace from the beginning of the string to that '.' + extractedNamespace.assign(typeName, dotPos - typeName); + } + else + { + enclosedTypeName.assign(typeName, slashPos); + extractedNamespace.clear(); + } // Use the extracted values for further processing typeName = extractedTypeName; @@ -4319,7 +4329,9 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C const char *szNameSpace = GetString(target->nameSpace); const char *szName = GetString(target->name); - if (!strcmp(szName, typeName) && !strcmp(szNameSpace, nameSpace)) + // for nested types, there is no namespace encoded in the type + // looking at the type name only, does look a bit flaky but it will have to work for now + if (!strcmp(szName, typeName)) { index.Set(assemblyIndex, i); return true; From 05faf5ef5a8f4bfc5abda4c9e9698bffa59c63a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Mar 2025 15:10:58 +0000 Subject: [PATCH 124/168] Fix crawling of types in FindTypeDef - Was comparing against the wrong value. - Added extra check for valid enclosing type before moving forward. --- src/CLR/Core/TypeSystem.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 504e2091b0..021491d8e1 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4363,9 +4363,14 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, CLR_INDEX scope, CLR_RT_ for (int i = 0; i < tblSize; i++, target++) { - auto enclosingType = target->EnclosingType(); + if (!target->HasValidEnclosingType()) + { + continue; + } + + CLR_INDEX enclosingTypeIndex = target->EnclosingTypeIndex(); - if (enclosingType == scope) + if (enclosingTypeIndex == scope) { const char *szName = GetString(target->name); From eaba6c83e9bc33d77ab9f5a4b534b4dbb69e95ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 21 Mar 2025 16:33:49 +0000 Subject: [PATCH 125/168] Fix wrong access in get declaring type --- src/CLR/CorLib/corlib_native_System_Type.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/CorLib/corlib_native_System_Type.cpp b/src/CLR/CorLib/corlib_native_System_Type.cpp index fb9fa2719d..2263f6fe02 100644 --- a/src/CLR/CorLib/corlib_native_System_Type.cpp +++ b/src/CLR/CorLib/corlib_native_System_Type.cpp @@ -22,7 +22,7 @@ HRESULT Library_corlib_native_System_Type::get_DeclaringType___SystemType(CLR_RT if (td.target->HasValidEnclosingType()) { CLR_RT_HeapBlock *hbObj; - td.Set(td.Assembly(), td.target->EnclosingType()); + td.Set(td.Assembly(), td.target->EnclosingTypeIndex()); NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.TypeStatic)); hbObj = top.Dereference(); From 71afbc2184432a220602d3ea21a373de81754483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 18:48:32 +0100 Subject: [PATCH 126/168] Add missing files from last merge --- .../check-mscorlib-to-test.yml | 54 +++++++++++++++++++ azure-pipelines-templates/checkout-idf.yml | 28 ++++++++++ 2 files changed, 82 insertions(+) create mode 100644 azure-pipelines-templates/check-mscorlib-to-test.yml create mode 100644 azure-pipelines-templates/checkout-idf.yml diff --git a/azure-pipelines-templates/check-mscorlib-to-test.yml b/azure-pipelines-templates/check-mscorlib-to-test.yml new file mode 100644 index 0000000000..f64c9f2d94 --- /dev/null +++ b/azure-pipelines-templates/check-mscorlib-to-test.yml @@ -0,0 +1,54 @@ +# Copyright (c) .NET Foundation and Contributors +# See LICENSE file in the project root for full license information. + +steps: + - task: PowerShell@2 + name: Check_mscorlib_test + displayName: Check mscorlib to test + condition: ne(variables['System.PullRequest.PullRequestId'], '') + inputs: + failOnStderr: false + targetType: "inline" + script: | + + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + + # find PR + "Getting PR#$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline + $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json + + if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") + { + '##[command] OK' | Write-Host -ForegroundColor Green + } + + # grab PR commit message + $prCommitMessage = $($pr.body) + + # look for test prompt in PR commit message + # pattern is "Tested against nanoframework/CoreLibrary#NNNN" + + if($prCommitMessage -match "Tested against nanoframework/CoreLibrary#(\d+)") + { + $testPR = $matches[1] + "Test PR found: $testPR" | Write-Host -ForegroundColor White + + # move to the build sources directory + Set-Location -Path $(Agent.BuildDirectory)/s/CoreLibrary + + # need to call this first to setup authentication + gh auth setup-git + + # gh auth status + + Write-Host "Checking out mscorlib PR: #$testPR" + gh pr checkout $testPR + } + else + { + "No test PR found. Using main branch" | Write-Host -ForegroundColor White + } + env: + GITHUB_TOKEN: $(GitHubToken) diff --git a/azure-pipelines-templates/checkout-idf.yml b/azure-pipelines-templates/checkout-idf.yml new file mode 100644 index 0000000000..6bd5c07306 --- /dev/null +++ b/azure-pipelines-templates/checkout-idf.yml @@ -0,0 +1,28 @@ +# Copyright (c) .NET Foundation and Contributors +# See LICENSE file in the project root for full license information. + +parameters: + - name: repoDirectory + type: string + default: $(Agent.BuildDirectory)/s + +steps: + + - task: Cache@2 + displayName: Cache IDF repository + inputs: + key: 'esp-idf | "$(IDF_TAG)"' + path: $(Agent.BuildDirectory)/s/esp-idf + cacheHitVar: ESP32_IDF_REPO_RESTORED + + - task: PowerShell@2 + displayName: Checkout IDF repository + condition: ne(variables.ESP32_IDF_REPO_RESTORED, 'true') + inputs: + targetType: "inline" + script: | + # create directory for IDF, ignore if it already exists + New-Item -Path ${{ parameters.repoDirectory }} -ItemType "directory" -ErrorAction SilentlyContinue + # move to the build sources directory + Set-Location -Path ${{ parameters.repoDirectory }} + git clone --recurse-submodules --shallow-submodules --single-branch --depth 1 --branch $(IDF_TAG) https://github.com/espressif/esp-idf From 8abddbe1b90d01b664a177424c7dcdd584ba0560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 18:49:59 +0100 Subject: [PATCH 127/168] Fix dev containers versions --- .devcontainer/All/Dockerfile.All | 2 +- .devcontainer/AzureRTOS/Dockerfile.AzureRTOS | 2 +- .devcontainer/ChibiOS/Dockerfile.ChibiOS | 2 +- .devcontainer/ESP32/Dockerfile.ESP32 | 2 +- .devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP | 2 +- .devcontainer/TI/Dockerfile.TI | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.devcontainer/All/Dockerfile.All b/.devcontainer/All/Dockerfile.All index 32cf48ba94..c7f96a0b40 100644 --- a/.devcontainer/All/Dockerfile.All +++ b/.devcontainer/All/Dockerfile.All @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-all:v2.55 +FROM ghcr.io/nanoframework/dev-container-all:v2.0 diff --git a/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS b/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS index e833514aec..929a96b46f 100644 --- a/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS +++ b/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-azure-rtos:v1.32 +FROM ghcr.io/nanoframework/dev-container-azure-rtos:v2.0 diff --git a/.devcontainer/ChibiOS/Dockerfile.ChibiOS b/.devcontainer/ChibiOS/Dockerfile.ChibiOS index 8ebf406edc..cf94f2ba65 100644 --- a/.devcontainer/ChibiOS/Dockerfile.ChibiOS +++ b/.devcontainer/ChibiOS/Dockerfile.ChibiOS @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-chibios:v1.33 +FROM ghcr.io/nanoframework/dev-container-chibios:v2.0 diff --git a/.devcontainer/ESP32/Dockerfile.ESP32 b/.devcontainer/ESP32/Dockerfile.ESP32 index 8269826ac5..9b0706ff0f 100644 --- a/.devcontainer/ESP32/Dockerfile.ESP32 +++ b/.devcontainer/ESP32/Dockerfile.ESP32 @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-esp32:v2.35 +FROM ghcr.io/nanoframework/dev-container-esp32:v2.0 diff --git a/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP b/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP index 311203555d..64aeb71a1d 100644 --- a/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP +++ b/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-freertos-nxp:v1.05 +FROM ghcr.io/nanoframework/dev-container-freertos-nxp:v2.0 diff --git a/.devcontainer/TI/Dockerfile.TI b/.devcontainer/TI/Dockerfile.TI index f53c7b63d0..0d2fe5e45e 100644 --- a/.devcontainer/TI/Dockerfile.TI +++ b/.devcontainer/TI/Dockerfile.TI @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-ti:v1.26 +FROM ghcr.io/nanoframework/dev-container-ti:v2.0 From 93038294a74889770ca5354a1e4546f61ddef352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 19:02:59 +0100 Subject: [PATCH 128/168] Add missing implementation od DateTime::NewObject --- src/CLR/CorLib/corlib_native.h | 1 + src/CLR/CorLib/corlib_native_System_DateTime.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index be7a9697c5..3d59eceeea 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -498,6 +498,7 @@ struct Library_corlib_native_System_DateTime //--// + static CLR_INT64 *NewObject(CLR_RT_StackFrame &stack); static CLR_INT64 *GetValuePtr(CLR_RT_StackFrame &stack); static CLR_INT64 *GetValuePtr(CLR_RT_HeapBlock &ref); diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index e58aa0acc3..82ef7525a0 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -174,6 +174,19 @@ HRESULT Library_corlib_native_System_DateTime::GetTodayAsTicks___STATIC__I8(CLR_ NANOCLR_NOCLEANUP_NOLABEL(); } +//--// + +CLR_INT64 *Library_corlib_native_System_DateTime::NewObject(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + CLR_RT_HeapBlock &ref = stack.PushValue(); + + ref.SetDataId(CLR_RT_HEAPBLOCK_RAW_ID(DATATYPE_DATETIME, 0, 1)); + ref.ClearData(); + + return (CLR_INT64 *)&ref.NumericByRef().s8; +} + CLR_INT64 *Library_corlib_native_System_DateTime::GetValuePtr(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); From d43de1daf44a5606bded4e19c4c224fe20a79c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 00:17:16 +0100 Subject: [PATCH 129/168] Missed previous commit --- .../target_FileSystem.cpp | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_FileSystem.cpp diff --git a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_FileSystem.cpp b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_FileSystem.cpp new file mode 100644 index 0000000000..634a328ca7 --- /dev/null +++ b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_FileSystem.cpp @@ -0,0 +1,43 @@ +// +// Copyright (c) .NET Foundation and Contributors +// Portions Copyright (c) Microsoft Corporation. All rights reserved. +// See LICENSE file in the project root for full license information. +// + +#include +#include +#include +#include +#include "Target_System_IO_FileSystem.h" + +extern FILESYSTEM_DRIVER_INTERFACE g_FATFS_FILE_SYSTEM_DriverInterface; + +#if HAL_USE_SDC +#include +extern "C" void SdCardDetectCallback(void *arg); +#endif + +extern "C" void UsbMsdForceMount(); + +FILESYSTEM_INTERFACES g_AvailableFSInterfaces[] = { + // This is the place to add the available file systems to the system +}; + +const size_t g_InstalledFSCount = ARRAYSIZE(g_AvailableFSInterfaces); + +void FS_AddVolumes() +{ + // This is the place to add volumes to the system +} + +void FS_MountRemovableVolumes() +{ + +#if HAL_USE_SDC + SdCardDetectCallback(&SD_CARD_DRIVER); +#endif + +#if defined(HAL_USBH_USE_MSD) && (HAL_USBH_USE_MSD == TRUE) + UsbMsdForceMount(); +#endif +} From d061b029408230cf8d37504c8af44ee72acba72c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 17:45:56 +0100 Subject: [PATCH 130/168] Update GC implementation - Update mscorlib declaration. - Update native.runtime declaration. - Move implementation of GC API. - ExecuteGarbageCollection() now returns used bytes (instead of free memory). --- src/CLR/CorLib/corlib_native.cpp | 37 ++++++---- src/CLR/CorLib/corlib_native.h | 6 +- src/CLR/CorLib/corlib_native_System_GC.cpp | 72 +++++++++++++++---- src/CLR/Core/GarbageCollector.cpp | 2 +- .../Runtime.Native.vcxproj | 1 - .../Runtime.Native.vcxproj.filters | 3 - .../nf_rt_native.cpp | 6 +- .../nf_rt_native.h | 10 +-- 8 files changed, 89 insertions(+), 48 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index 7fae5249f9..73b02304b3 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -549,10 +549,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -794,10 +802,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1282,10 +1286,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -1466,10 +1478,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1497,11 +1505,12 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0x9D7386C1, + 0xB069B85F, #elif (NANOCLR_REFLECTION == FALSE) - 0x98F2AA82, + 0x14A216A1, +, #else #error "NANOCLR_REFLECTION has to be define either TRUE or FALSE. Check the build options." diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index 3d59eceeea..a133cf247d 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -595,9 +595,11 @@ struct Library_corlib_native_System_EventArgs struct Library_corlib_native_System_GC { - NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); - NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); NANOCLR_NATIVE_DECLARE(ReRegisterForFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); + NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); //--// }; diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index d919b54237..ebb0ead541 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -1,54 +1,98 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // #include "CorLib.h" -HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); - stack.SetResult_Boolean( - g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || - (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && - !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); +#if defined(NANOCLR_TRACE_MEMORY_STATS) + s_CLR_RT_fTrace_MemoryStats = stack.Arg0().NumericByRefConst().u1 != 0 ? c_CLR_RT_Trace_Info : c_CLR_RT_Trace_None; +#else + (void)stack; +#endif NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); + CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); + NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + + if (desc.m_handlerCls.HasFinalizer()) + { + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + } + NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); - NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + NANOCLR_NOCLEANUP(); +} - if (desc.m_handlerCls.HasFinalizer()) +HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + stack.SetResult_Boolean( + g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || + (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && + !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); + + NANOCLR_NOCLEANUP_NOLABEL(); +} + +HRESULT Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + + NANOCLR_HEADER(); + +#if defined(NANOCLR_GC_VERBOSE) + if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + CLR_Debug::Printf(" Memory: Debug.GC.\r\n"); } +#endif - NANOCLR_NOCLEANUP(); + stack.SetResult_I4(g_CLR_RT_ExecutionEngine.PerformGarbageCollection()); + + if (stack.Arg0().NumericByRefConst().u1) + { + // + // Decrement the number of GC, otherwise the outer loop may request another compaction. + // + g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections--; + + g_CLR_RT_ExecutionEngine.PerformHeapCompaction(); + } + + NANOCLR_NOCLEANUP_NOLABEL(); } diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index a79459a3a9..d91ff096b2 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -294,7 +294,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() g_CLR_PRF_Profiler.RecordGarbageCollectionEnd(); #endif - return m_freeBytes; + return m_totalBytes - m_freeBytes; } //--// diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj index 8fc5b88a20..b557016f7d 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj @@ -21,7 +21,6 @@ - diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters index a995bfae7f..5712633383 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters @@ -26,9 +26,6 @@ Source Files - - Source Files - Source Files diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp index d63bc663d3..ef50406a42 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp @@ -12,8 +12,6 @@ static const CLR_RT_MethodHandler method_lookup[] = { nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint::Install___STATIC__VOID__I4__I4, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, nullptr, nullptr, nullptr, @@ -42,9 +40,9 @@ static const CLR_RT_MethodHandler method_lookup[] = const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Native = { "nanoFramework.Runtime.Native", - 0x0EAE898B, + 0xAD1ECE38, method_lookup, - { 100, 0, 10, 0 } + { 100, 0, 11, 0 } }; // clang-format on diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.h b/src/nanoFramework.Runtime.Native/nf_rt_native.h index 5b8d9d9b32..a54efc934d 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.h +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -34,14 +34,6 @@ struct Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint //--// }; -struct Library_nf_rt_native_nanoFramework_Runtime_Native_GC -{ - NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); - NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); - - //--// -}; - struct Library_nf_rt_native_nanoFramework_Runtime_Native_Power { static const int FIELD_STATIC__OnRebootEvent = 0; From bec0038de4a8132ab158778d7cf9818271199fb4 Mon Sep 17 00:00:00 2001 From: "nfbot[bot]" Date: Tue, 1 Apr 2025 00:21:29 +0100 Subject: [PATCH 131/168] Code style fixes for nanoframework/nf-interpreter PR#3137 (#3139) --- .../CorLib/corlib_native_System_Exception.cpp | 11 +++------- src/CLR/CorLib/corlib_native_System_Guid.cpp | 21 +++++++++---------- ...untime_CompilerServices_RuntimeHelpers.cpp | 3 +-- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index ef5f7e5836..d26de54236 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -12,10 +12,7 @@ struct ExceptionLookup }; static const ExceptionLookup c_ExceptionLookup[] = { -#define EL(hr, fld) \ - { \ - hr, &g_CLR_RT_WellKnownTypes.fld \ - } +#define EL(hr, fld) {hr, &g_CLR_RT_WellKnownTypes.fld} EL(CLR_E_APPDOMAIN_EXITED, AppDomainUnloadedException), EL(CLR_E_INVALID_PARAMETER, ArgumentException), EL(CLR_E_ARGUMENT_NULL, ArgumentNullException), @@ -208,10 +205,8 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & (void)array; // create an empty array for the stack trace - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( - obj[FIELD___stackTrace], - depth, - g_CLR_RT_WellKnownTypes.UInt8)); + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Array::CreateInstance(obj[FIELD___stackTrace], depth, g_CLR_RT_WellKnownTypes.UInt8)); } else { diff --git a/src/CLR/CorLib/corlib_native_System_Guid.cpp b/src/CLR/CorLib/corlib_native_System_Guid.cpp index 2a3d2bb587..064991d42d 100644 --- a/src/CLR/CorLib/corlib_native_System_Guid.cpp +++ b/src/CLR/CorLib/corlib_native_System_Guid.cpp @@ -11,24 +11,23 @@ // Based on the version 4 GUID (random) // http://guid.one/guid/make - -HRESULT Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1( CLR_RT_StackFrame& stack ) +HRESULT Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_Random rand; - CLR_UINT8* buf; - CLR_RT_HeapBlock& top = stack.PushValueAndClear(); - + CLR_RT_Random rand; + CLR_UINT8 *buf; + CLR_RT_HeapBlock &top = stack.PushValueAndClear(); + // Create a array of 16 bytes on top of stack to return - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( top, 16, g_CLR_RT_WellKnownTypes.UInt8 )); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, 16, g_CLR_RT_WellKnownTypes.UInt8)); buf = top.DereferenceArray()->GetFirstElement(); rand.Initialize(); - rand.NextBytes(buf, 16); // fill with random numbers + rand.NextBytes(buf, 16); // fill with random numbers + + buf[7] = (buf[7] & 0x0f) | 0x40; // Set verion + buf[9] = (buf[7] & 0x3f) | 0x80; // Set variant - buf[7] = (buf[7] & 0x0f) | 0x40; // Set verion - buf[9] = (buf[7] & 0x3f) | 0x80; // Set variant - NANOCLR_NOCLEANUP(); } diff --git a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp index d133818bad..83ac08b5b8 100644 --- a/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp +++ b/src/CLR/CorLib/corlib_native_System_Runtime_CompilerServices_RuntimeHelpers.cpp @@ -25,8 +25,7 @@ HRESULT Library_corlib_native_System_Runtime_CompilerServices_RuntimeHelpers:: NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - if ((inst.target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || - inst.target->defaultValue == CLR_EmptyIndex) + if ((inst.target->flags & CLR_RECORD_FIELDDEF::FD_HasFieldRVA) == 0 || inst.target->defaultValue == CLR_EmptyIndex) { NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } From 1ff599c3499542f43913bc3fe0fcb83da1bca1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 17:45:56 +0100 Subject: [PATCH 132/168] Update GC implementation - Update mscorlib declaration. - Update native.runtime declaration. - Move implementation of GC API. - ExecuteGarbageCollection() now returns used bytes (instead of free memory). --- CMake/Modules/FindNF_CoreCLR.cmake | 1 - src/CLR/CorLib/corlib_native.cpp | 37 ++++++---- src/CLR/CorLib/corlib_native.h | 6 +- src/CLR/CorLib/corlib_native_System_GC.cpp | 72 +++++++++++++++---- src/CLR/Core/GarbageCollector.cpp | 2 +- .../Runtime.Native.vcxproj | 1 - .../Runtime.Native.vcxproj.filters | 3 - .../nf_rt_native.cpp | 6 +- .../nf_rt_native.h | 10 +-- ...native_nanoFramework_Runtime_Native_GC.cpp | 53 -------------- 10 files changed, 89 insertions(+), 102 deletions(-) delete mode 100644 src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp diff --git a/CMake/Modules/FindNF_CoreCLR.cmake b/CMake/Modules/FindNF_CoreCLR.cmake index 6479664948..3020e385a8 100644 --- a/CMake/Modules/FindNF_CoreCLR.cmake +++ b/CMake/Modules/FindNF_CoreCLR.cmake @@ -130,7 +130,6 @@ set(NF_CoreCLR_SRCS # Runtime.Native nf_rt_native.cpp nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp - nf_rt_native_nanoFramework_Runtime_Native_GC.cpp nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint.cpp nf_rt_native_nanoFramework_Runtime_Native_Power.cpp nf_rt_native_nanoFramework_Runtime_Native_Rtc_stubs.cpp diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index 7fae5249f9..73b02304b3 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -549,10 +549,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -794,10 +802,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1282,10 +1286,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -1466,10 +1478,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1497,11 +1505,12 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0x9D7386C1, + 0xB069B85F, #elif (NANOCLR_REFLECTION == FALSE) - 0x98F2AA82, + 0x14A216A1, +, #else #error "NANOCLR_REFLECTION has to be define either TRUE or FALSE. Check the build options." diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index 3d59eceeea..a133cf247d 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -595,9 +595,11 @@ struct Library_corlib_native_System_EventArgs struct Library_corlib_native_System_GC { - NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); - NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); NANOCLR_NATIVE_DECLARE(ReRegisterForFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); + NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); //--// }; diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index d919b54237..ebb0ead541 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -1,54 +1,98 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // #include "CorLib.h" -HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); - stack.SetResult_Boolean( - g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || - (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && - !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); +#if defined(NANOCLR_TRACE_MEMORY_STATS) + s_CLR_RT_fTrace_MemoryStats = stack.Arg0().NumericByRefConst().u1 != 0 ? c_CLR_RT_Trace_Info : c_CLR_RT_Trace_None; +#else + (void)stack; +#endif NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); + CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); + NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + + if (desc.m_handlerCls.HasFinalizer()) + { + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + } + NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); - NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + NANOCLR_NOCLEANUP(); +} - if (desc.m_handlerCls.HasFinalizer()) +HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + stack.SetResult_Boolean( + g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || + (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && + !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); + + NANOCLR_NOCLEANUP_NOLABEL(); +} + +HRESULT Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + + NANOCLR_HEADER(); + +#if defined(NANOCLR_GC_VERBOSE) + if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + CLR_Debug::Printf(" Memory: Debug.GC.\r\n"); } +#endif - NANOCLR_NOCLEANUP(); + stack.SetResult_I4(g_CLR_RT_ExecutionEngine.PerformGarbageCollection()); + + if (stack.Arg0().NumericByRefConst().u1) + { + // + // Decrement the number of GC, otherwise the outer loop may request another compaction. + // + g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections--; + + g_CLR_RT_ExecutionEngine.PerformHeapCompaction(); + } + + NANOCLR_NOCLEANUP_NOLABEL(); } diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index a79459a3a9..d91ff096b2 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -294,7 +294,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() g_CLR_PRF_Profiler.RecordGarbageCollectionEnd(); #endif - return m_freeBytes; + return m_totalBytes - m_freeBytes; } //--// diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj index 8fc5b88a20..b557016f7d 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj @@ -21,7 +21,6 @@ - diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters index a995bfae7f..5712633383 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters @@ -26,9 +26,6 @@ Source Files - - Source Files - Source Files diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp index d63bc663d3..ef50406a42 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp @@ -12,8 +12,6 @@ static const CLR_RT_MethodHandler method_lookup[] = { nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint::Install___STATIC__VOID__I4__I4, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, nullptr, nullptr, nullptr, @@ -42,9 +40,9 @@ static const CLR_RT_MethodHandler method_lookup[] = const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Native = { "nanoFramework.Runtime.Native", - 0x0EAE898B, + 0xAD1ECE38, method_lookup, - { 100, 0, 10, 0 } + { 100, 0, 11, 0 } }; // clang-format on diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.h b/src/nanoFramework.Runtime.Native/nf_rt_native.h index 5b8d9d9b32..a54efc934d 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.h +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -34,14 +34,6 @@ struct Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint //--// }; -struct Library_nf_rt_native_nanoFramework_Runtime_Native_GC -{ - NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); - NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); - - //--// -}; - struct Library_nf_rt_native_nanoFramework_Runtime_Native_Power { static const int FIELD_STATIC__OnRebootEvent = 0; diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp deleted file mode 100644 index ece7219695..0000000000 --- a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// Portions Copyright (c) Microsoft Corporation. All rights reserved. -// See LICENSE file in the project root for full license information. -// - - -#include "nf_rt_native.h" - - - -HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN( CLR_RT_StackFrame& stack ) -{ - NATIVE_PROFILE_CLR_CORE(); - - NANOCLR_HEADER(); - -#if defined(NANOCLR_GC_VERBOSE) - if(s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) - { - CLR_Debug::Printf( " Memory: Debug.GC.\r\n" ); - } -#endif - - stack.SetResult_I4( g_CLR_RT_ExecutionEngine.PerformGarbageCollection() ); - - if(stack.Arg0().NumericByRefConst().u1) - { - // - // Decrement the number of GC, otherwise the outer loop may request another compaction. - // - g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections--; - - g_CLR_RT_ExecutionEngine.PerformHeapCompaction(); - } - - NANOCLR_NOCLEANUP_NOLABEL(); -} - -HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( CLR_RT_StackFrame& stack ) -{ - NATIVE_PROFILE_CLR_CORE(); - - NANOCLR_HEADER(); - - #if defined(NANOCLR_TRACE_MEMORY_STATS) - s_CLR_RT_fTrace_MemoryStats = stack.Arg0().NumericByRefConst().u1 != 0 ? c_CLR_RT_Trace_Info : c_CLR_RT_Trace_None; - #else - (void)stack; - #endif - - NANOCLR_NOCLEANUP_NOLABEL(); -} From a8613984c7bdfe8e4bf0edf42b7170b2cef61f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 00:35:08 +0100 Subject: [PATCH 133/168] Fix build issues --- src/CLR/Core/TypeSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 4609a4ed56..6434e38af1 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -4,6 +4,7 @@ // See LICENSE file in the project root for full license information. // #include "stdafx.h" +#include #include "Core.h" #include "corhdr_private.h" @@ -4341,7 +4342,6 @@ bool CLR_RT_Assembly::FindTypeDef(const char *typeName, const char *nameSpace, C // check if this is a nested type if (target->HasValidEnclosingType()) { - const char *szNameSpace = GetString(target->nameSpace); const char *szName = GetString(target->name); // for nested types, there is no namespace encoded in the type From bd101617ff52345e78c90cf3587d080d3540f7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 01:19:32 +0100 Subject: [PATCH 134/168] Fix struct elements name --- .../CorLib/corlib_native_System_AppDomain.cpp | 4 ++-- .../CorLib/corlib_native_System_Exception.cpp | 2 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 2 +- src/CLR/Core/TypeSystem.cpp | 20 +++++++++---------- ...et_NetworkInformation_NetworkInterface.cpp | 2 +- ...native_System_Net_Sockets_NativeSocket.cpp | 2 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- ..._native_System_Device_Wifi_WifiAdapter.cpp | 4 ++-- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- ...Framework_GiantGecko_Adc_AdcController.cpp | 2 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- .../ESP32/_Network/NF_ESP32_OpenThread.cpp | 2 +- .../nimble_utils.cpp | 4 ++-- ...etooth_BluetoothLEAdvertisementWatcher.cpp | 4 ++-- ...nericAttributeProfile_GattWriteRequest.cpp | 6 +++--- ...Framework_Networking_Thread_OpenThread.cpp | 8 ++++---- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 2 +- ...ve_nanoFramework_Hardware_TI_Utilities.cpp | 2 +- ...amework_TI_EasyLink_EasyLinkController.cpp | 4 ++-- 20 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp index bc64d416d4..890e728ab4 100644 --- a/src/CLR/CorLib/corlib_native_System_AppDomain.cpp +++ b/src/CLR/CorLib/corlib_native_System_AppDomain.cpp @@ -83,7 +83,7 @@ HRESULT Library_corlib_native_System_AppDomain:: index.Set(assembly->m_index); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_Assembly)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = top.Dereference(); hbObj->SetReflection(index); @@ -226,7 +226,7 @@ HRESULT Library_corlib_native_System_AppDomain::GetAppDomain( } _ASSERTE(obj->DataType() == DATATYPE_CLASS); - _ASSERTE(obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.m_AppDomain.m_data); + _ASSERTE(obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.AppDomain.m_data); src = CLR_RT_ObjectToEvent_Source::ExtractInstance(obj[FIELD___appDomain]); FAULT_ON_NULL(src); diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index d26de54236..d3c82ad149 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -254,7 +254,7 @@ HRESULT Library_corlib_native_System_Exception::SetStackTrace(CLR_RT_HeapBlock & // create an empty array for the stack trace NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(obj[FIELD___stackTrace], depth, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(obj[FIELD___stackTrace], depth, g_CLR_RT_WellKnownTypes.UInt8)); #endif } diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index c57aa3bc17..dd821e580a 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -457,7 +457,7 @@ HRESULT CLR_RT_StackFrame::PopAppDomainTransition() _ASSERTE(m_owningThread->m_currentException.Dereference() != nullptr); _ASSERTE( m_owningThread->m_currentException.Dereference()->ObjectCls().m_data == - g_CLR_RT_WellKnownTypes.m_ThreadAbortException.m_data); + g_CLR_RT_WellKnownTypes.ThreadAbortException.m_data); _ASSERTE(!m_appDomain->IsLoaded()); m_owningThread->m_flags &= ~(CLR_RT_Thread::TH_F_Aborted | CLR_RT_Thread::TH_F_ContainsDoomedAppDomain); diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 6434e38af1..df8ae11d47 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -1035,9 +1035,9 @@ bool CLR_RT_TypeDef_Instance::ResolveToken( // } // else //{ - // m_data = g_CLR_RT_WellKnownTypes.m_Object.m_data; - // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.m_Object.Assembly() - 1]; - // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.m_Object.Type()); + // m_data = g_CLR_RT_WellKnownTypes.Object.m_data; + // m_assm = g_CLR_RT_TypeSystem.m_assemblies[g_CLR_RT_WellKnownTypes.Object.Assembly() - 1]; + // m_target = m_assm->GetTypeDef(g_CLR_RT_WellKnownTypes.Object.Type()); // } #if defined(NANOCLR_INSTANCE_NAMES) @@ -3250,7 +3250,7 @@ void CLR_RT_Assembly::ResolveLink() } #if defined(NANOCLR_APPDOMAINS) - if (inst.m_data == g_CLR_RT_WellKnownTypes.m_MarshalByRefObject.m_data) + if (inst.m_data == g_CLR_RT_WellKnownTypes.MarshalByRefObject.m_data) { dst->m_flags |= CLR_RT_TypeDef_CrossReference::TD_CR_IsMarshalByRefObject; } @@ -3473,7 +3473,7 @@ HRESULT CLR_RT_AppDomain::LoadAssembly(CLR_RT_Assembly *assm) CLR_RT_HeapBlock exception; NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.m_OutOfMemoryException)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(exception, g_CLR_RT_WellKnownTypes.OutOfMemoryException)); m_outOfMemoryException = exception.Dereference(); } @@ -3509,7 +3509,7 @@ HRESULT CLR_RT_AppDomain::GetManagedObject(CLR_RT_HeapBlock &res) _ASSERTE(FIMPLIES(obj, obj->DataType() == DATATYPE_CLASS || obj->DataType() == DATATYPE_VALUETYPE)); - if (obj && obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.m_AppDomain.m_data) + if (obj && obj->ObjectCls().m_data == g_CLR_RT_WellKnownTypes.AppDomain.m_data) { // managed appDomain is found. Use it. res.SetObjectReference(ref->m_objectPtr); @@ -3524,7 +3524,7 @@ HRESULT CLR_RT_AppDomain::GetManagedObject(CLR_RT_HeapBlock &res) CLR_RT_HeapBlock *pRes; CLR_RT_ProtectFromGC gc(res); - NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(res, g_CLR_RT_WellKnownTypes.m_AppDomain)); + NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObjectFromIndex(res, g_CLR_RT_WellKnownTypes.AppDomain)); pRes = res.Dereference(); @@ -3600,7 +3600,7 @@ HRESULT CLR_RT_AppDomain::MarshalObject(CLR_RT_HeapBlock &src, CLR_RT_HeapBlock CLR_RT_HeapBlock *proxySrc = nullptr; CLR_RT_HeapBlock *mbroSrc = nullptr; bool fSimpleAssign = false; - CLR_RT_TypeDef_Index indexVerify = g_CLR_RT_WellKnownTypes.m_Object; + CLR_RT_TypeDef_Index indexVerify = g_CLR_RT_WellKnownTypes.Object; NanoCLRDataType dtSrc = src.DataType(); CLR_RT_AppDomain *appDomainSav = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); @@ -3831,7 +3831,7 @@ HRESULT CLR_RT_AppDomain::GetAssemblies(CLR_RT_HeapBlock &ref) index.Set(pASSM->m_index); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.m_Assembly)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(*pArray, g_CLR_RT_WellKnownTypes.Assembly)); hbObj = pArray->Dereference(); hbObj->SetReflection(index); @@ -3844,7 +3844,7 @@ HRESULT CLR_RT_AppDomain::GetAssemblies(CLR_RT_HeapBlock &ref) if (pass == 0) { NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(ref, count, g_CLR_RT_WellKnownTypes.m_Assembly)); + CLR_RT_HeapBlock_Array::CreateInstance(ref, count, g_CLR_RT_WellKnownTypes.Assembly)); pArray = (CLR_RT_HeapBlock *)ref.DereferenceArray()->GetFirstElement(); } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp index bef405bdb8..d18959d560 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_NetworkInterface.cpp @@ -334,7 +334,7 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface:: // Return array of uint16[8] NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.m_UInt16)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 8, g_CLR_RT_WellKnownTypes.UInt16)); { uint16_t *p = (uint16_t *)stack.TopValue().DereferenceArray()->GetFirstElement(); memcpy(p, address, sizeof(address)); diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp index b8411620a9..9aa41fcf54 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp @@ -586,7 +586,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket::MarshalSockAddre ipAddressHbObj[Library_sys_net_native_System_Net_IPAddress::FIELD___numbers]; NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(numbersFieldRef, 8, g_CLR_RT_WellKnownTypes.m_UInt16)); + CLR_RT_HeapBlock_Array::CreateInstance(numbersFieldRef, 8, g_CLR_RT_WellKnownTypes.UInt16)); CLR_UINT16 *addrNumbers = (CLR_UINT16 *)numbersFieldRef.DereferenceArray()->GetFirstElement(); diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 0cf7fb6ad0..41ccf8d0b3 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -672,7 +672,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // managed stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp index 770ac22532..d93ddadb02 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp @@ -273,7 +273,7 @@ HRESULT Library_sys_dev_wifi_native_System_Device_Wifi_WifiAdapter::GetNativeSca // rlen = StoreApRecordsToString(0, ap_records, number); // } - // NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, rlen, g_CLR_RT_WellKnownTypes.m_UInt8)); + // NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, rlen, g_CLR_RT_WellKnownTypes.UInt8)); // array = top.DereferenceArray(); // buf = array->GetFirstElement(); @@ -331,7 +331,7 @@ HRESULT Library_sys_dev_wifi_native_System_Device_Wifi_WifiAdapter::NativeFindWi } // build array with indexes of Wireless interfaces - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, interfaceCount, g_CLR_RT_WellKnownTypes.m_UInt8)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, interfaceCount, g_CLR_RT_WellKnownTypes.UInt8)); array = top.DereferenceArray(); arrayOfIndexes = array->GetFirstElement(); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index b83732fc89..ef7128794c 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -673,7 +673,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // managed stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp index ff93141af5..935b6c6f19 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp @@ -421,7 +421,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( stack.PushValueAndClear(), ContinuousScanOperation->channelCount, - g_CLR_RT_WellKnownTypes.m_Int32)); + g_CLR_RT_WellKnownTypes.Int32)); sampleArray = stack.TopValue().DereferenceArray(); diff --git a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 16f43692cf..257350d56f 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -714,7 +714,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // managed stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp b/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp index 6d520a55e9..1c8d0358dd 100644 --- a/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp +++ b/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp @@ -311,7 +311,7 @@ HRESULT OpenThreadCliOutput(CLR_RT_HeapBlock &arrayBlock) NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( arrayBlock, cliOutputsList.size(), - g_CLR_RT_WellKnownTypes.m_String)); + g_CLR_RT_WellKnownTypes.String)); array = arrayBlock.Array(); diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp index a56c398bab..a8c457b78f 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp @@ -185,7 +185,7 @@ HRESULT OmBufferToStack(CLR_RT_StackFrame &stack, os_mbuf *om) // Create managed byte array of correct size as per OM buffer NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), om_len, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), om_len, g_CLR_RT_WellKnownTypes.UInt8)); // get a pointer to the first object in the array pReturnBuffer = stack.TopValue().DereferenceArray()->GetFirstElement(); @@ -202,7 +202,7 @@ HRESULT PushEmptyBufferToStack(CLR_RT_StackFrame &stack) { // Error return empty array, event not found ? NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 0, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 0, g_CLR_RT_WellKnownTypes.UInt8)); } NANOCLR_NOCLEANUP(); } diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp index 81b1357ee3..526ba26697 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp @@ -135,7 +135,7 @@ Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_Advertisement_Bluetoot NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( pThis[FIELD___rawAdvertData], gEvent->disc.length_data, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); buffer = pThis[FIELD___rawAdvertData].DereferenceArray()->GetFirstElement(); memcpy(buffer, gEvent->disc.data, gEvent->disc.length_data); @@ -151,4 +151,4 @@ Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_Advertisement_Bluetoot stack.SetResult_Boolean(result); } NANOCLR_NOCLEANUP(); -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattWriteRequest.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattWriteRequest.cpp index c1251e40c5..b2a00e019e 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattWriteRequest.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattWriteRequest.cpp @@ -35,7 +35,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( stack.PushValueAndClear(), om_len, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); // get a pointer to the first object in the array pReturnBuffer = stack.TopValue().DereferenceArray()->GetFirstElement(); @@ -53,7 +53,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu { // Error return empty array, event not found ? NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 0, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.PushValueAndClear(), 0, g_CLR_RT_WellKnownTypes.UInt8)); } } NANOCLR_NOCLEANUP(); @@ -105,4 +105,4 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu } } NANOCLR_NOCLEANUP_NOLABEL(); -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp index d27741d4e8..7cde2ef48d 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp @@ -108,7 +108,7 @@ HRESULT StoreDataset(CLR_RT_StackFrame &stack, otOperationalDataset &dataset, CL NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( datasetObject[OpenThreadDataSet::FIELD___networkName], len, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); memcpy( datasetObject[OpenThreadDataSet::FIELD___networkName].DereferenceArray()->GetElement(0), dataset.mNetworkName.m8, @@ -123,7 +123,7 @@ HRESULT StoreDataset(CLR_RT_StackFrame &stack, otOperationalDataset &dataset, CL NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( datasetObject[OpenThreadDataSet::FIELD___extendedPanId], OT_EXT_PAN_ID_SIZE, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); memcpy( datasetObject[OpenThreadDataSet::FIELD___extendedPanId].DereferenceArray()->GetElement(0), dataset.mExtendedPanId.m8, @@ -138,7 +138,7 @@ HRESULT StoreDataset(CLR_RT_StackFrame &stack, otOperationalDataset &dataset, CL NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( datasetObject[OpenThreadDataSet::FIELD___networkKey], OT_NETWORK_KEY_SIZE, - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); memcpy( datasetObject[OpenThreadDataSet::FIELD___networkKey].DereferenceArray()->GetElement(0), dataset.mNetworkKey.m8, @@ -360,7 +360,7 @@ HRESULT Library_net_thread_native_nanoFramework_Networking_Thread_OpenThread::Na stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Array::CreateInstance(stack.TopValue(), 16, g_CLR_RT_WellKnownTypes.m_UInt8)); + CLR_RT_HeapBlock_Array::CreateInstance(stack.TopValue(), 16, g_CLR_RT_WellKnownTypes.UInt8)); // Get address of frist element iparray = stack.TopValue().DereferenceArray()->GetFirstElement(); diff --git a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index efaa6cb8be..8afdaa6def 100644 --- a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -366,7 +366,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // Create return object NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index be08282165..a3e6693e97 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -259,7 +259,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // managed stack CLR_RT_HeapBlock &top = stack.PushValueAndClear(); NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.m_I2cTransferResult)); + g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); result = top.Dereference(); FAULT_ON_NULL(result); diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Utilities.cpp b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Utilities.cpp index a280c829ee..10f0c6a43a 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Utilities.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Utilities.cpp @@ -16,7 +16,7 @@ HRESULT Library_nf_hardware_ti_native_nanoFramework_Hardware_TI_Utilities::Nativ CLR_RT_HeapBlock &top = stack.PushValueAndClear(); // dereference the byte array from the static field - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, 8, g_CLR_RT_WellKnownTypes.m_UInt8)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(top, 8, g_CLR_RT_WellKnownTypes.UInt8)); ieeeAddress = top.DereferenceArray()->GetFirstElement(); FAULT_ON_NULL(ieeeAddress); diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp index dc1898449b..6248db070e 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp @@ -498,7 +498,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( packet[ReceivedPacket::FIELD___address], (CLR_UINT32)ARRAYSIZE(latestRxPacket.dstAddr), - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); buffer = packet[ReceivedPacket::FIELD___address].DereferenceArray(); // copy address memcpy(buffer->GetFirstElement(), latestRxPacket.dstAddr, ARRAYSIZE(latestRxPacket.dstAddr)); @@ -507,7 +507,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance( packet[ReceivedPacket::FIELD___payload], (CLR_UINT32)ARRAYSIZE(latestRxPacket.payload), - g_CLR_RT_WellKnownTypes.m_UInt8)); + g_CLR_RT_WellKnownTypes.UInt8)); buffer = packet[ReceivedPacket::FIELD___payload].DereferenceArray(); // copy payload content memcpy(buffer->GetFirstElement(), latestRxPacket.payload, ARRAYSIZE(latestRxPacket.payload)); From d0c8a7725e9d6565ebfc69397af316517261db06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 31 Mar 2025 17:45:56 +0100 Subject: [PATCH 135/168] Update GC implementation - Update mscorlib declaration. - Update native.runtime declaration. - Move implementation of GC API. - ExecuteGarbageCollection() now returns used bytes (instead of free memory). --- CMake/Modules/FindNF_CoreCLR.cmake | 1 - src/CLR/CorLib/corlib_native.cpp | 37 ++++++---- src/CLR/CorLib/corlib_native.h | 6 +- src/CLR/CorLib/corlib_native_System_GC.cpp | 72 +++++++++++++++---- src/CLR/Core/GarbageCollector.cpp | 2 +- .../Runtime.Native.vcxproj | 1 - .../Runtime.Native.vcxproj.filters | 3 - .../nf_rt_native.cpp | 6 +- .../nf_rt_native.h | 10 +-- ...native_nanoFramework_Runtime_Native_GC.cpp | 53 -------------- 10 files changed, 89 insertions(+), 102 deletions(-) delete mode 100644 src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp diff --git a/CMake/Modules/FindNF_CoreCLR.cmake b/CMake/Modules/FindNF_CoreCLR.cmake index 6479664948..3020e385a8 100644 --- a/CMake/Modules/FindNF_CoreCLR.cmake +++ b/CMake/Modules/FindNF_CoreCLR.cmake @@ -130,7 +130,6 @@ set(NF_CoreCLR_SRCS # Runtime.Native nf_rt_native.cpp nf_rt_native_nanoFramework_Runtime_Hardware_SystemInfo.cpp - nf_rt_native_nanoFramework_Runtime_Native_GC.cpp nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint.cpp nf_rt_native_nanoFramework_Runtime_Native_Power.cpp nf_rt_native_nanoFramework_Runtime_Native_Rtc_stubs.cpp diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index 7fae5249f9..73b02304b3 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -549,10 +549,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -794,10 +802,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1282,10 +1286,18 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, nullptr, - Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + nullptr, + nullptr, + Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, + nullptr, Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT, + nullptr, + Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN, + Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN, Library_corlib_native_System_Globalization_DateTimeFormat::FormatDigits___STATIC__STRING__I4__I4, nullptr, nullptr, @@ -1466,10 +1478,6 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, - nullptr, - nullptr, - nullptr, - nullptr, Library_corlib_native_System_ValueType::Equals___BOOLEAN__OBJECT, nullptr, nullptr, @@ -1497,11 +1505,12 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0x9D7386C1, + 0xB069B85F, #elif (NANOCLR_REFLECTION == FALSE) - 0x98F2AA82, + 0x14A216A1, +, #else #error "NANOCLR_REFLECTION has to be define either TRUE or FALSE. Check the build options." diff --git a/src/CLR/CorLib/corlib_native.h b/src/CLR/CorLib/corlib_native.h index 3d59eceeea..a133cf247d 100644 --- a/src/CLR/CorLib/corlib_native.h +++ b/src/CLR/CorLib/corlib_native.h @@ -595,9 +595,11 @@ struct Library_corlib_native_System_EventArgs struct Library_corlib_native_System_GC { - NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); - NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); NANOCLR_NATIVE_DECLARE(ReRegisterForFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(SuppressFinalize___STATIC__VOID__OBJECT); + NANOCLR_NATIVE_DECLARE(AnyPendingFinalizers___STATIC__BOOLEAN); + NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); //--// }; diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index d919b54237..ebb0ead541 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -1,54 +1,98 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. // #include "CorLib.h" -HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( + CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); - stack.SetResult_Boolean( - g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || - (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && - !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); +#if defined(NANOCLR_TRACE_MEMORY_STATS) + s_CLR_RT_fTrace_MemoryStats = stack.Arg0().NumericByRefConst().u1 != 0 ? c_CLR_RT_Trace_Info : c_CLR_RT_Trace_None; +#else + (void)stack; +#endif NANOCLR_NOCLEANUP_NOLABEL(); } -HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); + CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); + NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + + if (desc.m_handlerCls.HasFinalizer()) + { + NANOCLR_CHECK_HRESULT( + CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + } + NANOCLR_NOCLEANUP(); } -HRESULT Library_corlib_native_System_GC::ReRegisterForFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::SuppressFinalize___STATIC__VOID__OBJECT(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); - CLR_RT_TypeDescriptor desc{}; CLR_RT_HeapBlock *pObj = stack.Arg0().Dereference(); FAULT_ON_NULL(pObj); CLR_RT_HeapBlock_Finalizer::SuppressFinalize(pObj); - NANOCLR_CHECK_HRESULT(desc.InitializeFromObject(stack.Arg0())); + NANOCLR_NOCLEANUP(); +} - if (desc.m_handlerCls.HasFinalizer()) +HRESULT Library_corlib_native_System_GC::AnyPendingFinalizers___STATIC__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + NANOCLR_HEADER(); + + stack.SetResult_Boolean( + g_CLR_RT_ExecutionEngine.m_finalizersPending.IsEmpty() == false || + (g_CLR_RT_ExecutionEngine.m_finalizerThread != nullptr && + !g_CLR_RT_ExecutionEngine.m_finalizerThread->CanThreadBeReused())); + + NANOCLR_NOCLEANUP_NOLABEL(); +} + +HRESULT Library_corlib_native_System_GC::Run___STATIC__U4__BOOLEAN(CLR_RT_StackFrame &stack) +{ + NATIVE_PROFILE_CLR_CORE(); + + NANOCLR_HEADER(); + +#if defined(NANOCLR_GC_VERBOSE) + if (s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) { - NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_Finalizer::CreateInstance(stack.Arg0().Dereference(), desc.m_handlerCls)); + CLR_Debug::Printf(" Memory: Debug.GC.\r\n"); } +#endif - NANOCLR_NOCLEANUP(); + stack.SetResult_I4(g_CLR_RT_ExecutionEngine.PerformGarbageCollection()); + + if (stack.Arg0().NumericByRefConst().u1) + { + // + // Decrement the number of GC, otherwise the outer loop may request another compaction. + // + g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections--; + + g_CLR_RT_ExecutionEngine.PerformHeapCompaction(); + } + + NANOCLR_NOCLEANUP_NOLABEL(); } diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index a79459a3a9..d91ff096b2 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -294,7 +294,7 @@ CLR_UINT32 CLR_RT_GarbageCollector::ExecuteGarbageCollection() g_CLR_PRF_Profiler.RecordGarbageCollectionEnd(); #endif - return m_freeBytes; + return m_totalBytes - m_freeBytes; } //--// diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj index 8fc5b88a20..b557016f7d 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj @@ -21,7 +21,6 @@ - diff --git a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters index a995bfae7f..5712633383 100644 --- a/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters +++ b/src/nanoFramework.Runtime.Native/Runtime.Native.vcxproj.filters @@ -26,9 +26,6 @@ Source Files - - Source Files - Source Files diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp index d63bc663d3..ef50406a42 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.cpp +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.cpp @@ -12,8 +12,6 @@ static const CLR_RT_MethodHandler method_lookup[] = { nullptr, Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint::Install___STATIC__VOID__I4__I4, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN, - Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN, nullptr, nullptr, nullptr, @@ -42,9 +40,9 @@ static const CLR_RT_MethodHandler method_lookup[] = const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_nanoFramework_Runtime_Native = { "nanoFramework.Runtime.Native", - 0x0EAE898B, + 0xAD1ECE38, method_lookup, - { 100, 0, 10, 0 } + { 100, 0, 11, 0 } }; // clang-format on diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native.h b/src/nanoFramework.Runtime.Native/nf_rt_native.h index 5b8d9d9b32..a54efc934d 100644 --- a/src/nanoFramework.Runtime.Native/nf_rt_native.h +++ b/src/nanoFramework.Runtime.Native/nf_rt_native.h @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -34,14 +34,6 @@ struct Library_nf_rt_native_nanoFramework_Runtime_Native_ExecutionConstraint //--// }; -struct Library_nf_rt_native_nanoFramework_Runtime_Native_GC -{ - NANOCLR_NATIVE_DECLARE(Run___STATIC__U4__BOOLEAN); - NANOCLR_NATIVE_DECLARE(EnableGCMessages___STATIC__VOID__BOOLEAN); - - //--// -}; - struct Library_nf_rt_native_nanoFramework_Runtime_Native_Power { static const int FIELD_STATIC__OnRebootEvent = 0; diff --git a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp b/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp deleted file mode 100644 index ece7219695..0000000000 --- a/src/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_GC.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) .NET Foundation and Contributors -// Portions Copyright (c) Microsoft Corporation. All rights reserved. -// See LICENSE file in the project root for full license information. -// - - -#include "nf_rt_native.h" - - - -HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_GC::Run___STATIC__U4__BOOLEAN( CLR_RT_StackFrame& stack ) -{ - NATIVE_PROFILE_CLR_CORE(); - - NANOCLR_HEADER(); - -#if defined(NANOCLR_GC_VERBOSE) - if(s_CLR_RT_fTrace_GC >= c_CLR_RT_Trace_Info) - { - CLR_Debug::Printf( " Memory: Debug.GC.\r\n" ); - } -#endif - - stack.SetResult_I4( g_CLR_RT_ExecutionEngine.PerformGarbageCollection() ); - - if(stack.Arg0().NumericByRefConst().u1) - { - // - // Decrement the number of GC, otherwise the outer loop may request another compaction. - // - g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections--; - - g_CLR_RT_ExecutionEngine.PerformHeapCompaction(); - } - - NANOCLR_NOCLEANUP_NOLABEL(); -} - -HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( CLR_RT_StackFrame& stack ) -{ - NATIVE_PROFILE_CLR_CORE(); - - NANOCLR_HEADER(); - - #if defined(NANOCLR_TRACE_MEMORY_STATS) - s_CLR_RT_fTrace_MemoryStats = stack.Arg0().NumericByRefConst().u1 != 0 ? c_CLR_RT_Trace_Info : c_CLR_RT_Trace_None; - #else - (void)stack; - #endif - - NANOCLR_NOCLEANUP_NOLABEL(); -} From 04d5310ed17446db2b9ed46d02177c47cb13ea53 Mon Sep 17 00:00:00 2001 From: "nfbot[bot]" Date: Tue, 1 Apr 2025 01:22:13 +0100 Subject: [PATCH 136/168] Code style fixes (#152) Automated fixes for code style. --- src/CLR/CorLib/corlib_native_System_GC.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index ebb0ead541..d2d4b9fe48 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -5,8 +5,7 @@ // #include "CorLib.h" -HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( - CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); From b62eb84a0cb36c638c6be0dac3a882ee509e1bf1 Mon Sep 17 00:00:00 2001 From: "nfbot[bot]" Date: Tue, 1 Apr 2025 01:44:32 +0100 Subject: [PATCH 137/168] Code style fixes (#154) Automated fixes for code style. --- src/CLR/CorLib/corlib_native_System_GC.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/CLR/CorLib/corlib_native_System_GC.cpp b/src/CLR/CorLib/corlib_native_System_GC.cpp index ebb0ead541..d2d4b9fe48 100644 --- a/src/CLR/CorLib/corlib_native_System_GC.cpp +++ b/src/CLR/CorLib/corlib_native_System_GC.cpp @@ -5,8 +5,7 @@ // #include "CorLib.h" -HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN( - CLR_RT_StackFrame &stack) +HRESULT Library_corlib_native_System_GC::EnableGCMessages___STATIC__VOID__BOOLEAN(CLR_RT_StackFrame &stack) { NATIVE_PROFILE_CLR_CORE(); From 2073a7156ab2f1202f1f4d8990e278c4cf5a0b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 11:40:00 +0100 Subject: [PATCH 138/168] Fix merge --- ...Information_Wireless80211Configuration.cpp | 8 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 124 +----------------- 2 files changed, 11 insertions(+), 121 deletions(-) diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp index b2c1892459..46acfc3f1b 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_Wireless80211Configuration.cpp @@ -124,10 +124,10 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_Wireless80211Config hal_strncpy_s((char *)config.Ssid, WIRELESS82011_CONFIG_MAX_SSID_LEN, hbSsid->StringText(), ssidLength); // store configuration - if (ConfigurationManager_UpdateConfigurationBlock( - &config, - DeviceConfigurationOption_Wireless80211Network, - configurationIndex) != TRUE) + if ((ConfigurationManager_UpdateConfigurationBlock( + &config, + DeviceConfigurationOption_Wireless80211Network, + configurationIndex) == UpdateConfigurationResult_Failed)) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } diff --git a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 257350d56f..d8e955a35f 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -556,123 +556,13 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } else { - if (palI2c->ReadSize == 0) - { - // this is Write only transaction - transactionResult = i2cMasterTransmitTimeout( - palI2c->Driver, - palI2c->Address, - palI2c->WriteBuffer, - palI2c->WriteSize, - NULL, - 0, - TIME_MS2I(20)); - } - else - { - // this is a Read only transaction - transactionResult = i2cMasterReceiveTimeout( - palI2c->Driver, - palI2c->Address, - palI2c->ReadBuffer, - palI2c->ReadSize, - TIME_MS2I(20)); - } - } - } - - while (eventResult) - { - if (!isLongRunningOperation) - { - // this is not a long running operation so nothing to do here - break; - } - - if (palI2c->WorkingThread->state == CH_STATE_FINAL) - { - // I2C working thread is now complete - break; - } - - // non-blocking wait allowing other threads to run while we wait for the I2C transaction to complete - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeout, Event_I2cMaster, eventResult)); - } - - if (isLongRunningOperation) - { - // pop timeout heap block from stack - stack.PopValue(); - } - - if (eventResult || !isLongRunningOperation) - { - // event occurred - // OR this is NOT a long running operation - - i2cReleaseBus(palI2c->Driver); - - // create the return object (I2cTransferResult) - // only at this point we are sure that there will be a return from this thread so it's OK to use the - // managed stack - CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - NANOCLR_CHECK_HRESULT( - g_CLR_RT_ExecutionEngine.NewObjectFromIndex(top, g_CLR_RT_WellKnownTypes.I2cTransferResult)); - result = top.Dereference(); - FAULT_ON_NULL(result); - - if (isLongRunningOperation) - { - // ChibiOS requirement: need to call chThdWait for I2C working thread in order to have it's memory - // released to the heap, otherwise it won't be returned - transactionResult = chThdWait(palI2c->WorkingThread); - } - - // get the result from the working thread execution - if (transactionResult != MSG_OK) - { - // error in transaction - int errors = i2cGetErrors(palI2c->Driver); - - // figure out what was the error and set the status field - switch (errors) - { - case I2C_ACK_FAILURE: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_SlaveAddressNotAcknowledged); - break; - - case I2C_TIMEOUT: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_ClockStretchTimeout); - break; - - default: - result[I2cTransferResult::FIELD___status].SetInteger( - (CLR_UINT32)I2cTransferStatus_UnknownError); - } - - // set the bytes transferred count to 0 because we don't have a way to know how many bytes were - // actually sent/received - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger(0); - } - else - { - // successful transaction - // set the result field - result[I2cTransferResult::FIELD___status].SetInteger((CLR_UINT32)I2cTransferStatus_FullTransfer); - - // set the bytes transferred field - result[I2cTransferResult::FIELD___bytesTransferred].SetInteger( - (CLR_UINT32)(palI2c->WriteSize + palI2c->ReadSize)); - } - - if (palI2c->ReadSize > 0) - { - // invalidate cache over read buffer to ensure that content from DMA is read - // (only required for Cortex-M7) - cacheBufferInvalidate(palI2c->ReadBuffer, palI2c->ReadSize); + // this is a Read only transaction + transactionResult = i2cMasterReceiveTimeout( + palI2c->Driver, + palI2c->Address, + palI2c->ReadBuffer, + palI2c->ReadSize, + TIME_MS2I(20)); } } } From 3c2b107a7c513911652374f58680611f6270f959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 12:26:41 +0100 Subject: [PATCH 139/168] Fix migrated code --- src/CLR/Core/Serialization/BinaryFormatter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 041e90857d..01f201114f 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -1052,7 +1052,7 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::ReadValue(int &res) auto dstString = (char *)str->StringText(); NANOCLR_CHECK_HRESULT(m_bf->ReadArray((CLR_UINT8 *)dstString, len)); - dst[len] = 0; + dstString[len] = 0; } res = c_Action_None; From 03ba6a86af1272149c7c72a3c43725bf2e705d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 17:52:22 +0100 Subject: [PATCH 140/168] Fix elements name --- src/CLR/Diagnostics/Profiler.cpp | 2 +- targets/win32/nanoCLR/CLRStartup.cpp | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 6e30be74a3..bd64d0a525 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -540,7 +540,7 @@ void CLR_PRF_Profiler::DumpPointer(void *ptr) PackAndWriteBits((CLR_UINT32)(ptrVAlue >> 32)); PackAndWriteBits((CLR_UINT32)ptrVAlue); #else - PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.m_location)); + PackAndWriteBits((CLR_UINT32)((CLR_UINT8 *)ptr - s_CLR_RT_Heap.location)); #endif } diff --git a/targets/win32/nanoCLR/CLRStartup.cpp b/targets/win32/nanoCLR/CLRStartup.cpp index e18910303b..da91f585f1 100644 --- a/targets/win32/nanoCLR/CLRStartup.cpp +++ b/targets/win32/nanoCLR/CLRStartup.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -79,14 +79,14 @@ struct Settings : CLR_RT_ParseOptions NANOCLR_CHECK_HRESULT(CLR_RT_Assembly::CreateInstance(header, assm)); // Get handlers for native functions in assembly - pNativeAssmData = GetAssemblyNativeData(assm->m_szName); + pNativeAssmData = GetAssemblyNativeData(assm->name); // If pNativeAssmData not NULL- means this assembly has native calls and there is pointer to table with native // calls. if (pNativeAssmData != NULL) { // First verify that check sum in assembly object matches hardcoded check sum. - if (assm->m_header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) + if (assm->header->nativeMethodsChecksum != pNativeAssmData->m_checkSum) { CLR_Debug::Printf( "\r\n\r\n***********************************************************************\r\n"); @@ -96,8 +96,8 @@ struct Settings : CLR_RT_ParseOptions CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf( "* Invalid native checksum: %s 0x%08X!=0x%08X *\r\n", - assm->m_szName, - assm->m_header->nativeMethodsChecksum, + assm->name, + assm->header->nativeMethodsChecksum, pNativeAssmData->m_checkSum); CLR_Debug::Printf("* *\r\n"); CLR_Debug::Printf("***********************************************************************\r\n"); @@ -106,7 +106,7 @@ struct Settings : CLR_RT_ParseOptions } // Assembly has valid pointer to table with native methods. Save it. - assm->m_nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; + assm->nativeCode = (const CLR_RT_MethodHandler *)pNativeAssmData->m_pNativeMethods; } g_CLR_RT_TypeSystem.Link(assm); NANOCLR_NOCLEANUP(); @@ -305,7 +305,7 @@ struct Settings : CLR_RT_ParseOptions CLR_RT_Memory::Release(assembliesBuffer); break; } - assm->m_flags |= CLR_RT_Assembly::Deployed; + assm->flags |= CLR_RT_Assembly::Deployed; } if (!isXIP) CLR_RT_Memory::Release(headerBuffer); @@ -505,7 +505,7 @@ struct Settings : CLR_RT_ParseOptions break; } - CLR_RT_UnicodeHelper::ConvertFromUTF8(assm->m_szName, strName); + CLR_RT_UnicodeHelper::ConvertFromUTF8(assm->name, strName); m_assemblies[strName] = bufferSub; assm->DestroyInstance(); @@ -533,7 +533,7 @@ struct Settings : CLR_RT_ParseOptions NANOCLR_FOREACH_ASSEMBLY(g_CLR_RT_TypeSystem) { const CLR_RECORD_ASSEMBLYREF *src = (const CLR_RECORD_ASSEMBLYREF *)pASSM->GetTable(TBL_AssemblyRef); - for (int i = 0; i < pASSM->m_pTablesSize[TBL_AssemblyRef]; i++, src++) + for (int i = 0; i < pASSM->tablesSize[TBL_AssemblyRef]; i++, src++) { const char *szName = pASSM->GetString(src->name); @@ -542,10 +542,10 @@ struct Settings : CLR_RT_ParseOptions printf( "Missing assembly: %s (%d.%d.%d.%d)\n", szName, - src->version.iMajorVersion, - src->version.iMinorVersion, - src->version.iBuildNumber, - src->version.iRevisionNumber); + src->version.majorVersion, + src->version.minorVersion, + src->version.buildNumber, + src->version.revisionNumber); fError = true; } From ab6954f72577a78b83aa53a28eec6a5e9b43901a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 19:38:17 +0100 Subject: [PATCH 141/168] Disable LTO for Azure RTOS and TI SimpleLink targets --- CMake/Modules/AzureRTOS_EFM32GG11_GCC_options.cmake | 2 +- CMake/Modules/TI_SimpleLink_CC13X2_GCC_options.cmake | 2 +- CMake/binutils.AzureRTOS.cmake | 5 ++--- CMake/binutils.TI_SimpleLink.cmake | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CMake/Modules/AzureRTOS_EFM32GG11_GCC_options.cmake b/CMake/Modules/AzureRTOS_EFM32GG11_GCC_options.cmake index 0e60b8b219..7375984035 100644 --- a/CMake/Modules/AzureRTOS_EFM32GG11_GCC_options.cmake +++ b/CMake/Modules/AzureRTOS_EFM32GG11_GCC_options.cmake @@ -62,7 +62,7 @@ macro(nf_set_link_options) # set optimization linker flags for RELEASE and MinSizeRel if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") - set_property(TARGET ${NFSLO_TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Os -flto -fuse-linker-plugin ") + set_property(TARGET ${NFSLO_TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Os") endif() # request specs from newlib nano diff --git a/CMake/Modules/TI_SimpleLink_CC13X2_GCC_options.cmake b/CMake/Modules/TI_SimpleLink_CC13X2_GCC_options.cmake index 75cb9cf33b..dbb3f376f9 100644 --- a/CMake/Modules/TI_SimpleLink_CC13X2_GCC_options.cmake +++ b/CMake/Modules/TI_SimpleLink_CC13X2_GCC_options.cmake @@ -51,7 +51,7 @@ macro(nf_set_link_options) # set optimization linker flags for RELEASE and MinSizeRel if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") - set_property(TARGET ${NFSLO_TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Os -flto -fuse-linker-plugin ") + set_property(TARGET ${NFSLO_TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Os ") endif() # request specs from newlib nano diff --git a/CMake/binutils.AzureRTOS.cmake b/CMake/binutils.AzureRTOS.cmake index fa0e98e116..6e2be07abf 100644 --- a/CMake/binutils.AzureRTOS.cmake +++ b/CMake/binutils.AzureRTOS.cmake @@ -4,14 +4,13 @@ # include(binutils.common) -# include(ChibiOS_HAL) function(nf_set_optimization_options target) target_compile_options(${target} PRIVATE $<$:-Og -ggdb> - $<$:-O3 -flto> - $<$:-Os -flto> + $<$:-O3> + $<$:-Os> $<$:-Os -femit-class-debug-always -ggdb> ) diff --git a/CMake/binutils.TI_SimpleLink.cmake b/CMake/binutils.TI_SimpleLink.cmake index 44095e48f4..118b4da02d 100644 --- a/CMake/binutils.TI_SimpleLink.cmake +++ b/CMake/binutils.TI_SimpleLink.cmake @@ -13,8 +13,8 @@ function(nf_set_optimization_options target) # debug compile options: -Og (optimize for debugging) and -ggdb (produce debug symbols specifically for gdb) target_compile_options(${target} PRIVATE $<$:-Og -ggdb> - $<$:-O3 -flto> - $<$:-Os -flto> + $<$:-O3> + $<$:-Os> $<$:-Os -ggdb> ) From 9747a46e91747cdcc01eb0bc44cbf446571792e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 19:38:33 +0100 Subject: [PATCH 142/168] Fix includes for TI targets --- targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp | 1 - .../_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native.h | 1 - .../_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink.h | 1 - 3 files changed, 3 deletions(-) diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp index 310f1e0487..1f96c5a17f 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -11,7 +11,6 @@ #include #include -#include #include #include diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native.h b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native.h index 43913f88cd..19017fcc09 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native.h +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native.h @@ -7,7 +7,6 @@ #define NF_HARDWARE_TI_NATIVE_H #include -#include #include #include diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink.h b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink.h index d68ab64d2d..77c52cf33f 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink.h +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink.h @@ -7,7 +7,6 @@ #define NF_TI_EASYLINK_H #include -#include #include #include #include From 6618434b6523e96613b3187c73d26ca28f48b103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 19:39:06 +0100 Subject: [PATCH 143/168] Rename typedef for Void to disambiguate with TI SimpleLink SDK type --- src/CLR/Core/TypeSystem.cpp | 4 ++-- src/CLR/Include/nanoCLR_Runtime.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index df8ae11d47..77d3e03a86 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -598,7 +598,7 @@ HRESULT CLR_RT_SignatureParser::Advance(Element &res) NANOCLR_SET_AND_LEAVE(S_OK); case DATATYPE_VOID: - res.Class = g_CLR_RT_WellKnownTypes.Void; + res.Class = g_CLR_RT_WellKnownTypes.n_Void; NANOCLR_SET_AND_LEAVE(S_OK); case DATATYPE_GENERICINST: @@ -3983,7 +3983,7 @@ static const TypeIndexLookup c_TypeIndexLookup[] = { TIL("System", "TimeSpan", TimeSpan), TIL("System", "String", String), - TIL("System", "Void", Void), + TIL("System", "Void", n_Void), TIL("System", "Object", Object), TIL("System", "ValueType", ValueType), TIL("System", "Enum", Enum), diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 90ee299b02..6bbe680c71 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -1685,7 +1685,8 @@ struct CLR_RT_WellKnownTypes CLR_RT_TypeDef_Index TimeSpan; CLR_RT_TypeDef_Index String; - CLR_RT_TypeDef_Index Void; + // need this prefix to disambiguate type in TI plaform + CLR_RT_TypeDef_Index n_Void; CLR_RT_TypeDef_Index Object; CLR_RT_TypeDef_Index ValueType; CLR_RT_TypeDef_Index Enum; From 840714d18738449594afc1469a01135d5c604da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 20:00:48 +0100 Subject: [PATCH 144/168] Adjust storage block size for TI_CC1352R1_LAUNCHXL --- .../TI_CC1352R1_LAUNCHXL/common/Device_BlockStorage.c | 4 ++-- .../TI_CC1352R1_LAUNCHXL/nanoCLR/CC13x2_26x2_CLR.ld | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/common/Device_BlockStorage.c b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/common/Device_BlockStorage.c index a5970491c9..81655f6435 100644 --- a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/common/Device_BlockStorage.c +++ b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/common/Device_BlockStorage.c @@ -10,8 +10,8 @@ const BlockRange BlockRange1[] = { // the last block is reserved for Customer Configuration Area and Bootloader Backdoor configuration // so we don't take it into account for the map - {BlockRange_BLOCKTYPE_CODE, 0, 22}, // 0x00000000 nanoCLR - {BlockRange_BLOCKTYPE_DEPLOYMENT, 23, 42}, // 0x0002E000 deployment + {BlockRange_BLOCKTYPE_CODE, 0, 25}, // 0x00000000 nanoCLR + {BlockRange_BLOCKTYPE_DEPLOYMENT, 26, 42}, // 0x00034000 deployment }; const BlockRegionInfo BlockRegions[] = {{ diff --git a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/CC13x2_26x2_CLR.ld b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/CC13x2_26x2_CLR.ld index 200dc6725e..db6c8d1a3c 100644 --- a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/CC13x2_26x2_CLR.ld +++ b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/CC13x2_26x2_CLR.ld @@ -40,7 +40,7 @@ HEAPSIZE = 0x2500; /* Size of heap buffer used by HeapMem */ MEMORY { /* original flash LENGTH was 0x00057fa8 */ - FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x0002E000 + FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00034000 /* * Customer Configuration Area and Bootloader Backdoor configuration in * flash, 40 bytes From 994856b4531719f7e95fed616359856b188bcb50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 1 Apr 2025 20:00:58 +0100 Subject: [PATCH 145/168] Add sys call _exit required for TI_CC1352R1_LAUNCHXL --- .../TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/main.c b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/main.c index 055bcfdf86..bc397f9645 100644 --- a/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/main.c +++ b/targets/TI_SimpleLink/TI_CC1352R1_LAUNCHXL/nanoCLR/main.c @@ -108,3 +108,14 @@ int main(void) return (0); } + +/////////////////////////////////////////////////////////////////////// +// need this dummy implementation here (started with SDK 4.20.01.04) // +/////////////////////////////////////////////////////////////////////// +void __attribute__((naked)) _exit(int code) +{ + (void)code; + + for (;;) + ; +} From 6936d7c7ebf30b5d07f0d79038f0f2615457e369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 3 Apr 2025 19:33:25 +0100 Subject: [PATCH 146/168] Fix mscorlib declaration --- src/CLR/CorLib/corlib_native.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index 73b02304b3..a6abc3e847 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -578,11 +578,11 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, nullptr, nullptr, - Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, nullptr, @@ -1315,11 +1315,11 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, nullptr, nullptr, + Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, nullptr, nullptr, - Library_corlib_native_System_Guid::GenerateNewGuid___STATIC__SZARRAY_U1, nullptr, nullptr, nullptr, @@ -1505,11 +1505,11 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #if (NANOCLR_REFLECTION == TRUE) - 0xB069B85F, + 0x4E06901B, #elif (NANOCLR_REFLECTION == FALSE) - 0x14A216A1, + 0xB9FA421B, , #else @@ -1517,7 +1517,7 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #endif method_lookup, - { 100, 5, 0, 19 } + { 100, 5, 0, 24 } }; // clang-format on From 6a329f1d2b129feff9b4aa29914985e3de9b50aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Fri, 4 Apr 2025 11:22:22 +0100 Subject: [PATCH 147/168] Bump mscorlib native version --- src/CLR/CorLib/corlib_native.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/CorLib/corlib_native.cpp b/src/CLR/CorLib/corlib_native.cpp index a6abc3e847..f05e5fd438 100644 --- a/src/CLR/CorLib/corlib_native.cpp +++ b/src/CLR/CorLib/corlib_native.cpp @@ -1517,7 +1517,7 @@ const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_mscorlib = #endif method_lookup, - { 100, 5, 0, 24 } + { 100, 22, 0, 0 } }; // clang-format on From ec17b1f1e88b8760c578c090f3f9ad182dcd16dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 15:00:04 +0100 Subject: [PATCH 148/168] Remove test app - Moved to MDP unit tests. --- .../TestApplication/NF.TestApplication.nfproj | 42 ------ .../win32/netnf/TestApplication/Program.cs | 127 ------------------ .../Properties/AssemblyInfo.cs | 33 ----- .../netnf/TestApplication/TestApplication.sln | 25 ---- .../netnf/TestApplication/packages.config | 5 - 5 files changed, 232 deletions(-) delete mode 100644 targets/win32/netnf/TestApplication/NF.TestApplication.nfproj delete mode 100644 targets/win32/netnf/TestApplication/Program.cs delete mode 100644 targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs delete mode 100644 targets/win32/netnf/TestApplication/TestApplication.sln delete mode 100644 targets/win32/netnf/TestApplication/packages.config diff --git a/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj b/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj deleted file mode 100644 index e8ffb2c55d..0000000000 --- a/targets/win32/netnf/TestApplication/NF.TestApplication.nfproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - $(MSBuildExtensionsPath)\nanoFramework\v1.0\ - - - - Debug - AnyCPU - {11A8DD76-328B-46DF-9F39-F559912D0360};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 247f9798-e240-4d5b-956d-35e5ead21ce2 - Exe - Properties - 512 - TestApplication - TestApplication - v1.0 - TestApplication - - - - - - - - - packages\nanoFramework.CoreLibrary.1.14.2\lib\mscorlib.dll - - - packages\nanoFramework.System.Threading.1.1.19\lib\System.Threading.dll - - - - - - - - - - - - \ No newline at end of file diff --git a/targets/win32/netnf/TestApplication/Program.cs b/targets/win32/netnf/TestApplication/Program.cs deleted file mode 100644 index c71380c295..0000000000 --- a/targets/win32/netnf/TestApplication/Program.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System; -using System.Diagnostics; -using System.Threading; - -namespace NF.TestApplication_NEW -{ - public class Program - { - public interface TInt - { - void Do1(); - void Do2(); - } - - public static void StaticGenericDo(T1 val, T2 val2) where T1:TInt where T2 : TInt - { - Debug.WriteLine("Doing things"); - val.Do1(); - val.Do2(); - val2.Do1(); - val2.Do2(); - } - - public class IntDo : TInt - { - public void Do1() - { - Debug.WriteLine("Int::Do1"); - } - - public void Do2() - { - Debug.WriteLine("Int::Do2"); - } - } - - public class StringDo : TInt - { - public void Do1() - { - Debug.WriteLine("String::Do1"); - } - - public void Do2() - { - Debug.WriteLine("String::Do1"); - } - } - - static Task B() - { - Debug.WriteLine("B"); - return new Task(() => - { - Debug.WriteLine("B:Task"); - for (int i = 0; i < 10000; i++) - { - } - Debug.WriteLine("B:Done"); - }); - } - - static Task C() - { - Debug.WriteLine("C"); - var task = new Task(() => - { - Debug.WriteLine("C:Long Task"); - for (int i = 0; i < 1000000; i++) - { - } - Debug.WriteLine("C:Done"); - return 1; - }); - //Debug.WriteLine("C:End"); - //var task = Task.FromResult(1); - Debug.WriteLine("C:Ret"); - return task; - } - - static async void AsyncTest() - { - //await B(); - //await B(); - Debug.WriteLine("XXX"); - var t = C(); - Debug.WriteLine("Got C"); - var c = await t; - Debug.WriteLine($"Result {c}"); - } - - - class GenericClass - { - public void InstanceGenericDo(T t) - { - T t2 = t; - Debug.WriteLine($"TClassDo {t2}"); - } - - public void InstanceGenericDo2(T t, T2 t2) - { - T _t = t; - Debug.WriteLine($"TClassDo {_t} {t2}"); - } - } - - public static void Main() - { - Debug.WriteLine("Hello"); - var m = new GenericClass(); - m.InstanceGenericDo(1); - m.InstanceGenericDo2(1, "OK"); - var m2 = new GenericClass(); - m2.InstanceGenericDo("OK"); - m2.InstanceGenericDo2("OK", "Now"); - StaticGenericDo(new IntDo(), new StringDo()); - StaticGenericDo(new StringDo(), new IntDo()); - Debug.WriteLine("World"); - AsyncTest(); - while (true) - { - Thread.Sleep(1000); - } - } - } -} diff --git a/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs b/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs deleted file mode 100644 index 262254df74..0000000000 --- a/targets/win32/netnf/TestApplication/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CSharp.BlankApplication")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("CSharp.BlankApplication")] -[assembly: AssemblyCopyright("Copyright © ")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/targets/win32/netnf/TestApplication/TestApplication.sln b/targets/win32/netnf/TestApplication/TestApplication.sln deleted file mode 100644 index 85e8689ea3..0000000000 --- a/targets/win32/netnf/TestApplication/TestApplication.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.4.33213.308 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{11A8DD76-328B-46DF-9F39-F559912D0360}") = "NF.TestApplication", "NF.TestApplication.nfproj", "{247F9798-E240-4D5B-956D-35E5EAD21CE2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {247F9798-E240-4D5B-956D-35E5EAD21CE2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {62117BDC-3FD8-42D4-9171-A4B4F12F46BB} - EndGlobalSection -EndGlobal diff --git a/targets/win32/netnf/TestApplication/packages.config b/targets/win32/netnf/TestApplication/packages.config deleted file mode 100644 index cf3f8184b3..0000000000 --- a/targets/win32/netnf/TestApplication/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file From ee4e249cb4482a376486d13d1ad873cdb2322d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 15:07:39 +0100 Subject: [PATCH 149/168] Add implementation for VerifyStackOK --- src/CLR/Core/Checks.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/CLR/Core/Checks.cpp b/src/CLR/Core/Checks.cpp index 35ab93bf21..6a9ca300a7 100644 --- a/src/CLR/Core/Checks.cpp +++ b/src/CLR/Core/Checks.cpp @@ -9,11 +9,21 @@ HRESULT CLR_Checks::VerifyStackOK(const CLR_RT_StackFrame &stack, const CLR_RT_HeapBlock *top, const int num) { - (void)stack; - (void)top; - (void)num; + NANOCLR_HEADER(); + + // Check if stack has enough space for num elements + if (top + num > stack.m_evalStackEnd) + { + NANOCLR_SET_AND_LEAVE(CLR_E_STACK_OVERFLOW); + } - return S_OK; + // Check if top is within stack bounds + if (top < stack.m_evalStack || top >= stack.m_evalStackEnd) + { + NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); + } + + NANOCLR_NOCLEANUP(); } HRESULT CLR_Checks::VerifyObject(CLR_RT_HeapBlock &top) From cff23c26467a2037b03233afd46bcfd9707c6ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 15:17:18 +0100 Subject: [PATCH 150/168] Remove duplicated code --- src/CLR/Diagnostics/Profiler.cpp | 33 -------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index bd64d0a525..2b9476f2a0 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -32,11 +32,6 @@ HRESULT CLR_PRF_Profiler::CreateInstance() g_CLR_PRF_Profiler.m_currentThreadPID = 0; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(g_CLR_PRF_Profiler.m_stream, nullptr, 0)); - -#if defined(VIRTUAL_DEVICE) - // need to do the here to send the memory layout in the first packet - g_CLR_PRF_Profiler.SendMemoryLayout(); -#endif #if defined(VIRTUAL_DEVICE) // need to do the here to send the memory layout in the first packet g_CLR_PRF_Profiler.SendMemoryLayout(); @@ -816,34 +811,6 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) } #endif -#if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) - { - // build type name - char fullTypeName[1024] = {0}; - char *szBuffer = fullTypeName; - size_t iBuffer = MAXSTRLEN(fullTypeName); - - CLR_RT_TypeDef_Instance arrayTypeDef{}; - CLR_UINT32 levels; - arrayTypeDef.InitializeFromReflection(array->ReflectionData(), &levels); - - g_CLR_RT_TypeSystem.BuildTypeName(arrayTypeDef, szBuffer, iBuffer); - - // compose output message - std::string objectCreation = std::format( - "New {}[] @ 0x{:X} {} bytes [{:08x}] {} elements {} level(s)\r\n", - fullTypeName, - (CLR_UINT64)((CLR_UINT8 *)ptr), - (dataSize * sizeof(struct CLR_RT_HeapBlock)), - elementIdx.data, - array->m_numOfElements, - levels); - - g_ProfilerMessageCallback(objectCreation.c_str()); - } -#endif - #ifdef NANOCLR_TRACE_PROFILER_MESSAGES #ifdef _WIN64 From badf168ac5c4b0f48d95a3a429267daa14edbf4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 16:23:33 +0100 Subject: [PATCH 151/168] Another pass addressing compiler warnings about nullptr usage --- .../CLR_RT_InteropAssembliesTable.cpp.in | 2 +- .../CorLib/corlib_native_System_DateTime.cpp | 2 +- .../CorLib/corlib_native_System_Exception.cpp | 2 +- ...rlib_native_System_Reflection_Assembly.cpp | 4 +- ...lib_native_System_Reflection_FieldInfo.cpp | 2 +- ...ve_System_Reflection_RuntimeMethodInfo.cpp | 2 +- .../corlib_native_System_RuntimeType.cpp | 4 +- .../CorLib/corlib_native_System_String.cpp | 12 +- .../corlib_native_System_Threading_Thread.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock.cpp | 22 ++-- src/CLR/Core/CLR_RT_HeapBlock_Array.cpp | 2 +- src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp | 4 +- src/CLR/Core/CLR_RT_HeapBlock_String.cpp | 4 +- src/CLR/Core/CLR_RT_Interop.cpp | 4 +- src/CLR/Core/CLR_RT_StackFrame.cpp | 2 +- src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp | 4 +- src/CLR/Core/Execution.cpp | 14 +- src/CLR/Core/FileStream/FileStream.cpp | 8 +- src/CLR/Core/GarbageCollector.cpp | 2 +- src/CLR/Core/GarbageCollector_Compaction.cpp | 6 +- src/CLR/Core/GarbageCollector_Info.cpp | 4 +- src/CLR/Core/Interpreter.cpp | 12 +- .../NativeEventDispatcher.cpp | 10 +- .../Core/Serialization/BinaryFormatter.cpp | 12 +- .../Serialization/BinaryFormatter_stub.cpp | 6 +- src/CLR/Core/Thread.cpp | 32 ++--- src/CLR/Core/TypeSystem.cpp | 6 +- src/CLR/Core/TypeSystemLookup.cpp | 74 +++++------ src/CLR/Debugger/Debugger.cpp | 8 +- src/CLR/Diagnostics/Profiler.cpp | 20 +-- src/CLR/Include/nanoCLR_Interop.h | 10 +- src/CLR/Include/nanoCLR_Runtime.h | 2 +- .../Include/nanoCLR_Runtime__Serialization.h | 2 +- src/CLR/Messaging/Messaging.cpp | 2 +- src/CLR/Startup/CLRStartup.cpp | 4 +- src/CLR/System.Math/nf_native_system_math.cpp | 2 +- .../System.Net/sys_net_native.cpp | 120 +++++++++--------- ...orkInformation_WirelessAPConfiguration.cpp | 6 +- ...System_Net_Security_CertificateManager.cpp | 4 +- ...t_native_System_Net_Security_SslNative.cpp | 26 ++-- ...native_System_Net_Sockets_NativeSocket.cpp | 24 ++-- ...aphy_X509Certificates_X509Certificate2.cpp | 2 +- src/HAL/Include/nanoHAL.h | 38 +++--- src/HAL/Include/nanoHAL_Network.h | 2 +- src/HAL/Include/nanoHAL_ReleaseInfo.h | 6 +- src/PAL/COM/sockets/Sockets_debugger.cpp | 10 +- src/PAL/COM/sockets/sockets_lwip.cpp | 8 +- .../ssl/MbedTLS/ssl_accept_internal.cpp | 2 +- .../MbedTLS/ssl_add_cert_auth_internal.cpp | 4 +- .../ssl/MbedTLS/ssl_available_internal.cpp | 6 +- .../ssl/MbedTLS/ssl_close_socket_internal.cpp | 4 +- .../ssl/MbedTLS/ssl_connect_internal.cpp | 4 +- .../ssl_decode_private_key_internal.cpp | 2 +- .../ssl/MbedTLS/ssl_exit_context_internal.cpp | 4 +- .../COM/sockets/ssl/MbedTLS/ssl_generic.cpp | 2 +- .../ssl/MbedTLS/ssl_generic_init_internal.cpp | 40 +++--- .../sockets/ssl/MbedTLS/ssl_read_internal.cpp | 2 +- .../ssl/MbedTLS/ssl_uninitialize_internal.cpp | 2 +- .../ssl/MbedTLS/ssl_write_internal.cpp | 2 +- src/PAL/COM/sockets/ssl/ssl.cpp | 2 +- src/PAL/Events/nanoPAL_Events.cpp | 6 +- src/PAL/Events/nanoPAL_Events_driver.cpp | 2 +- src/PAL/FileSystem/nanoPAL_FileSystem.cpp | 16 +-- src/PAL/Lwip/lwIP_Sockets.cpp | 70 +++++----- src/PAL/Lwip/lwIP_Sockets_functions.cpp | 2 +- ...tive_System_Device_Gpio_GpioController.cpp | 22 ++-- ...gpio_native_System_Device_Gpio_GpioPin.cpp | 10 +- src/System.Device.Spi/nanoHAL_Spi.cpp | 2 +- ...spi_native_System_Device_Spi_SpiDevice.cpp | 38 +++--- ..._sys_io_filesystem_System_IO_Directory.cpp | 18 +-- ..._sys_io_filesystem_System_IO_DriveInfo.cpp | 4 +- .../nf_sys_io_filesystem_System_IO_File.cpp | 6 +- ..._filesystem_System_IO_NativeFileStream.cpp | 8 +- ...io_filesystem_System_IO_NativeFindFile.cpp | 8 +- ...f_sys_io_filesystem_System_IO_NativeIO.cpp | 14 +- ...er_native_System_IO_Ports_SerialPort__.cpp | 12 +- ...tion_Formatters_Binary_BinaryFormatter.cpp | 2 +- .../Graphics/Core/Graphics.cpp | 4 +- .../Graphics/Core/GraphicsDriver.cpp | 20 +-- .../Graphics/Core/Support/Fonts/Font.cpp | 8 +- .../Graphics/Core/Support/Gif/Gif.cpp | 2 +- .../Graphics/Core/Support/Gif/GifDecoder.cpp | 4 +- .../Graphics/Core/Support/Jpeg/Jpeg.cpp | 4 +- .../Core/Support/Jpeg/jmemnanoclr.cpp | 2 +- .../Graphics/Displays/Generic_SPI.cpp | 14 +- .../Graphics/Displays/Spi_To_Display.cpp | 2 +- ...ework_Graphics_nanoFramework_UI_Bitmap.cpp | 18 +-- ...aphics_nanoFramework_UI_DisplayControl.cpp | 2 +- ...amework_Graphics_nanoFramework_UI_Font.cpp | 4 +- ...ramework_Graphics_nanoFramework_UI_Ink.cpp | 14 +- ...amework_UI_TouchCollectorConfiguration.cpp | 4 +- ...s_nanoFramework_UI_TouchEventProcessor.cpp | 6 +- .../TouchPanel/Core/Gestures.cpp | 2 +- .../TouchPanel/Core/Ink.cpp | 12 +- .../TouchPanel/Core/TouchPanel.cpp | 40 +++--- .../TouchPanel/Devices/CST816S.cpp | 4 +- .../TouchPanel/Devices/STMPE811QTR_I2C.cpp | 2 +- .../TouchPanel/Devices/XPT2046.cpp | 2 +- .../TouchPanel/Devices/ft6x06_I2C.cpp | 2 +- ...llections_System_Collections_Hashtable.cpp | 2 +- ..._hashing_System_IO_Hashing_Crc32_stubs.cpp | 4 +- ...raphy_System_Security_Cryptography_Aes.cpp | 22 ++-- .../targetHAL_ConfigurationManager.cpp | 22 ++-- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 74 +++++------ .../ST/_nanoCLR/System.Device.Spi/cpu_spi.cpp | 40 +++--- targets/AzureRTOS/ST/_nanoCLR/targetHAL.cpp | 4 +- .../targetHAL_ConfigurationManager.cpp | 22 ++-- ...dc_native_System_Device_Adc_AdcChannel.cpp | 4 +- ...native_System_Device_Adc_AdcController.cpp | 4 +- .../_nanoCLR/System.Device.Gpio/cpu_gpio.cpp | 34 ++--- .../System.Device.I2c/nano_sl_i2cspm.c | 2 +- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 74 +++++------ ...wm_native_System_Device_Pwm_PwmChannel.cpp | 14 +- .../_nanoCLR/System.Device.Spi/cpu_spi.cpp | 28 ++-- .../System.Device.Spi/nf_gecko_spi_driver.cpp | 80 ++++++------ ...eam_native_System_Device_Usb_UsbStream.cpp | 10 +- ..._ser_native_System_IO_Ports_SerialPort.cpp | 84 ++++++------ .../sys_io_ser_native_target.h | 10 +- ...noFramework_Device_OneWire_OneWireHost.cpp | 6 +- ...anoFramework_GiantGecko_Adc_AdcChannel.cpp | 4 +- ...Framework_GiantGecko_Adc_AdcController.cpp | 28 ++-- ...sys_io_hashing_System_IO_Hashing_Crc32.cpp | 4 +- .../SiliconLabs/_nanoCLR/targetHAL.cpp | 38 +++--- targets/AzureRTOS/_common/nanoCLR/nanoCRT.cpp | 6 +- .../_common/nanoCLR/targetPAL_Events.cpp | 2 +- .../_common/nanoCLR/targetPAL_Time.cpp | 2 +- .../target_system_device_adc_config.cpp | 6 +- .../target_system_device_adc_config.cpp | 6 +- .../I2C_To_TouchPanel.cpp | 2 +- .../target_system_device_adc_config.cpp | 6 +- .../I2C_To_TouchPanel.cpp | 2 +- .../target_system_device_adc_config.cpp | 6 +- targets/ChibiOS/_FatFs/fatfs_FS_Driver.cpp | 26 ++-- .../targetHAL_ConfigurationManager.cpp | 22 ++-- .../_common/targetHAL_StorageOperation.cpp | 10 +- .../ChibiOS/_littlefs/littlefs_FS_Driver.cpp | 38 +++--- ...dc_native_System_Device_Adc_AdcChannel.cpp | 8 +- ...native_System_Device_Adc_AdcController.cpp | 8 +- ...ac_native_System_Device_Dac_DacChannel.cpp | 6 +- ...native_System_Device_Dac_DacController.cpp | 6 +- .../_nanoCLR/System.Device.Gpio/cpu_gpio.cpp | 18 +-- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 58 ++++----- ...wm_native_System_Device_Pwm_PwmChannel.cpp | 20 +-- .../_nanoCLR/System.Device.Spi/cpu_spi.cpp | 40 +++--- ..._ser_native_System_IO_Ports_SerialPort.cpp | 96 +++++++------- .../sys_io_ser_native_target.h | 28 ++-- targets/ChibiOS/_nanoCLR/nanoCRT.cpp | 6 +- ...nanoFramework_Device_Can_CanController.cpp | 28 ++-- ...noFramework_Device_OneWire_OneWireHost.cpp | 8 +- ...oFramework_Hardware_Stm32_BackupMemory.cpp | 4 +- ...Framework_Hardware_Stm32_Configuration.cpp | 10 +- ...ive_nanoFramework_Hardware_Stm32_Power.cpp | 4 +- ...ative_nanoFramework_Hardware_Stm32_RTC.cpp | 2 +- ...sys_io_hashing_System_IO_Hashing_Crc32.cpp | 4 +- targets/ChibiOS/_nanoCLR/targetHAL.cpp | 4 +- targets/ChibiOS/_nanoCLR/targetPAL_Events.cpp | 2 +- targets/ChibiOS/_nanoCLR/targetPAL_Time.cpp | 2 +- .../Graphics_Memory.cpp | 2 +- ...wm_native_System_Device_Pwm_PwmChannel.cpp | 10 +- .../Graphics_Memory.cpp | 2 +- ...wm_native_System_Device_Pwm_PwmChannel.cpp | 10 +- .../Graphics_Memory.cpp | 2 +- .../Graphics_Memory.cpp | 2 +- targets/ESP32/_FatFs/fatfs_FS_Driver.cpp | 22 ++-- targets/ESP32/_Network/NF_ESP32_Ethernet.cpp | 4 +- .../ESP32/_Network/NF_ESP32_OpenThread.cpp | 12 +- .../ESP32/_Network/NF_ESP32_SmartConfig.cpp | 6 +- targets/ESP32/_Network/NF_ESP32_Wireless.cpp | 24 ++-- targets/ESP32/_common/Target_Network.cpp | 4 +- .../_common/Target_System_IO_FileSystem.c | 2 +- .../_common/targetHAL_ConfigStorageLittlefs.c | 36 +++--- .../targetHAL_ConfigurationManager.cpp | 26 ++-- .../ESP32/_common/targetHAL_FileOperation.cpp | 10 +- targets/ESP32/_common/targetHAL_Network.cpp | 10 +- .../_common/targetHAL_StorageOperation.cpp | 8 +- .../ESP32/_littlefs/littlefs_FS_Driver.cpp | 32 ++--- targets/ESP32/_nanoCLR/Memory.cpp | 4 +- ...dc_native_System_Device_Adc_AdcChannel.cpp | 2 +- ...native_System_Device_Adc_AdcController.cpp | 2 +- ...ac_native_System_Device_Dac_DacChannel.cpp | 6 +- ...native_System_Device_Dac_DacController.cpp | 4 +- .../_nanoCLR/System.Device.Gpio/cpu_gpio.cpp | 22 ++-- ...ative_System_Device_I2c_I2cSlaveDevice.cpp | 40 +++--- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 26 ++-- ...i2s_native_System_Device_I2s_I2sDevice.cpp | 30 ++--- ...wm_native_System_Device_Pwm_PwmChannel.cpp | 8 +- .../_nanoCLR/System.Device.Spi/cpu_spi.cpp | 4 +- ..._native_System_Device_Wifi_WifiAdapter.cpp | 2 +- ...oFramework_System_IO_FileSystem_SDCard.cpp | 8 +- ..._ser_native_System_IO_Ports_SerialPort.cpp | 114 ++++++++--------- targets/ESP32/_nanoCLR/nanoCRT.cpp | 6 +- .../esp32_nimble.cpp | 8 +- .../nimble_utils.cpp | 4 +- ...etooth_BluetoothLEAdvertisementWatcher.cpp | 2 +- ...ork_Device_Bluetooth_BluetoothLEDevice.cpp | 16 +-- ...k_Device_Bluetooth_BluetoothNanoDevice.cpp | 6 +- ...icAttributeProfile_GattServiceProvider.cpp | 48 +++---- ...noFramework_Device_OneWire_OneWireHost.cpp | 8 +- ...ve_System_Device_Gpio_GpioPulseCounter.cpp | 36 +++--- ...ramework_Hardware_Esp32_Touch_TouchPad.cpp | 18 +-- ...ork_Hardware_Esp32_Rmt_ReceiverChannel.cpp | 24 ++-- ...ramework_Hardware_Esp32_Rmt_RmtChannel.cpp | 4 +- ..._Hardware_Esp32_Rmt_TransmitterChannel.cpp | 18 +-- ...Framework_Networking_Thread_OpenThread.cpp | 8 +- ...ative_nanoFramework_Runtime_Native_Rtc.cpp | 2 +- ...sys_io_hashing_System_IO_Hashing_Crc32.cpp | 4 +- targets/ESP32/_nanoCLR/targetHAL.cpp | 8 +- targets/ESP32/_nanoCLR/targetHAL_Time.cpp | 4 +- targets/ESP32/_nanoCLR/targetPAL_Events.cpp | 2 +- .../targetHAL_ConfigurationManager.cpp | 12 +- .../_nanoCLR/System.Device.Gpio/cpu_gpio.cpp | 30 ++--- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 28 ++-- ..._ser_native_System_IO_Ports_SerialPort.cpp | 80 ++++++------ targets/FreeRTOS/NXP/_nanoCLR/targetHAL.cpp | 8 +- targets/FreeRTOS/_common/nanoCLR/nanoCRT.cpp | 6 +- .../_common/nanoCLR/targetPAL_Events.cpp | 2 +- .../_common/simplelink_sockets.cpp | 6 +- .../_common/simplelink_sockets_functions.cpp | 4 +- .../_common/sockets_simplelink.cpp | 32 ++--- .../TI_SimpleLink/_common/ssl_simplelink.cpp | 24 ++-- ...etHAL_ConfigurationManager_CC13xx_26xx.cpp | 22 ++-- .../targetHAL_ConfigurationManager_CC32xx.cpp | 22 ++-- ...dc_native_System_Device_Adc_AdcChannel.cpp | 4 +- ...native_System_Device_Adc_AdcController.cpp | 2 +- .../_nanoCLR/System.Device.Gpio/cpu_gpio.cpp | 34 ++--- ...i2c_native_System_Device_I2c_I2cDevice.cpp | 38 +++--- ...wm_native_System_Device_Pwm_PwmChannel.cpp | 12 +- .../_nanoCLR/System.Device.Spi/cpu_spi.cpp | 4 +- ..._ser_native_System_IO_Ports_SerialPort.cpp | 106 ++++++++-------- targets/TI_SimpleLink/_nanoCLR/nanoCRT.cpp | 6 +- ...native_nanoFramework_Hardware_TI_Power.cpp | 6 +- ...amework_TI_EasyLink_EasyLinkController.cpp | 26 ++-- targets/TI_SimpleLink/_nanoCLR/targetHAL.cpp | 8 +- .../_nanoCLR/targetPAL_Events.cpp | 4 +- .../TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp | 2 +- .../netcore/littlefs/littlefs_FS_Driver.cpp | 38 +++--- .../nanoFramework.nanoCLR/target_littlefs.cpp | 2 +- 237 files changed, 1722 insertions(+), 1722 deletions(-) diff --git a/InteropAssemblies/CLR_RT_InteropAssembliesTable.cpp.in b/InteropAssemblies/CLR_RT_InteropAssembliesTable.cpp.in index 46428092cb..145f6b75b5 100644 --- a/InteropAssemblies/CLR_RT_InteropAssembliesTable.cpp.in +++ b/InteropAssemblies/CLR_RT_InteropAssembliesTable.cpp.in @@ -19,7 +19,7 @@ const CLR_RT_NativeAssemblyData *g_CLR_InteropAssembliesNativeData[] = &g_CLR_AssemblyNative_mscorlib, &g_CLR_AssemblyNative_nanoFramework_Runtime_Native, @CLR_RT_NativeAssemblyDataTableEntries@ - NULL + nullptr }; const uint16_t g_CLR_InteropAssembliesCount = (@CLR_RT_NativeAssembliesCount@ + 2); diff --git a/src/CLR/CorLib/corlib_native_System_DateTime.cpp b/src/CLR/CorLib/corlib_native_System_DateTime.cpp index 82ef7525a0..9ebd28aef3 100644 --- a/src/CLR/CorLib/corlib_native_System_DateTime.cpp +++ b/src/CLR/CorLib/corlib_native_System_DateTime.cpp @@ -205,7 +205,7 @@ CLR_INT64 *Library_corlib_native_System_DateTime::GetValuePtr(CLR_RT_HeapBlock & if (!obj) { - return NULL; + return nullptr; } dt = obj->DataType(); diff --git a/src/CLR/CorLib/corlib_native_System_Exception.cpp b/src/CLR/CorLib/corlib_native_System_Exception.cpp index d3c82ad149..a6246732ca 100644 --- a/src/CLR/CorLib/corlib_native_System_Exception.cpp +++ b/src/CLR/CorLib/corlib_native_System_Exception.cpp @@ -50,7 +50,7 @@ HRESULT Library_corlib_native_System_Exception::get_StackTrace___STRING(CLR_RT_S CLR_RT_HeapBlock tmpArray; CLR_RT_HeapBlock *pThis; - tmpArray.SetObjectReference(NULL); + tmpArray.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmpArray); pThis = stack.This(); diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp index 8d41183199..d43ca996ee 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_Assembly.cpp @@ -131,7 +131,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly::GetVersion___VOID__BYR const CLR_RECORD_VERSION &version = assm.assembly->header->version; - // we do not check for the reference not to be NULL because this is an internal method + // we do not check for the reference not to be nullptr because this is an internal method stack.Arg1().Dereference()->NumericByRef().s4 = version.majorVersion; stack.Arg2().Dereference()->NumericByRef().s4 = version.minorVersion; stack.Arg3().Dereference()->NumericByRef().s4 = version.buildNumber; @@ -266,7 +266,7 @@ HRESULT Library_corlib_native_System_Reflection_Assembly:: NANOCLR_CLEANUP(); - // Avoid exception handling in common case. Just return NULL on failure. + // Avoid exception handling in common case. Just return nullptr on failure. // Managed code decides to throw the exception or not. hr = S_OK; diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp index da0f547cd5..dc94df6c3a 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_FieldInfo.cpp @@ -167,7 +167,7 @@ HRESULT Library_corlib_native_System_Reflection_FieldInfo::GetCustomAttributesNa // the return array has two positions for each attribute: // 1st: the attribute type - // 2nd: the constructor parameters or NULL, if the attribute has no constructor + // 2nd: the constructor parameters or nullptr, if the attribute has no constructor // 1st pass: count attributes do diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp index 044ef3bb12..6cf73be7ef 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_RuntimeMethodInfo.cpp @@ -61,7 +61,7 @@ HRESULT Library_corlib_native_System_Reflection_RuntimeMethodInfo::GetCustomAttr // the return array has two positions for each attribute: // 1st: the attribute type - // 2nd: the constructor parameters or NULL, if the attribute has no constructor + // 2nd: the constructor parameters or nullptr, if the attribute has no constructor // 1st pass: count attributes do diff --git a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp index a48440adae..8bb6f14d8e 100644 --- a/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp +++ b/src/CLR/CorLib/corlib_native_System_RuntimeType.cpp @@ -288,7 +288,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributesNative___SZ // the return array has two positions for each attribute: // 1st: the attribute type - // 2nd: the constructor parameters or NULL, if the attribute has no constructor + // 2nd: the constructor parameters or nullptr, if the attribute has no constructor // 1st pass: count attributes do @@ -375,7 +375,7 @@ HRESULT Library_corlib_native_System_RuntimeType::GetCustomAttributes( // no parameters for the constructor returnArray++; - // set next position to NULL + // set next position to nullptr returnArray->SetObjectReference(nullptr); } else if (val->m_mode == CLR_RT_AttributeParser::Value::c_ConstructorArgument) diff --git a/src/CLR/CorLib/corlib_native_System_String.cpp b/src/CLR/CorLib/corlib_native_System_String.cpp index f0e9b7c45a..059c7132eb 100644 --- a/src/CLR/CorLib/corlib_native_System_String.cpp +++ b/src/CLR/CorLib/corlib_native_System_String.cpp @@ -206,7 +206,7 @@ HRESULT Library_corlib_native_System_String::_ctor___VOID__CHAR__I4(CLR_RT_Stack { CLR_RT_HeapBlock tmp; - tmp.SetObjectReference(NULL); + tmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmp); NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_Array::CreateInstance(tmp, len, g_CLR_RT_WellKnownTypes.Char)); @@ -864,7 +864,7 @@ HRESULT Library_corlib_native_System_String::ChangeCase(CLR_RT_StackFrame &stack CLR_RT_HeapBlock_Array *arrayTmp; CLR_RT_HeapBlock refTmp; - refTmp.SetObjectReference(NULL); + refTmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -905,7 +905,7 @@ HRESULT Library_corlib_native_System_String::Substring(CLR_RT_StackFrame &stack, CLR_RT_HeapBlock_Array *arrayTmp; CLR_RT_HeapBlock refTmp; - refTmp.SetObjectReference(NULL); + refTmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -946,7 +946,7 @@ HRESULT Library_corlib_native_System_String::Trim( CLR_RT_HeapBlock refTmp; CLR_RT_HeapBlock_Array *arrayTmp; - refTmp.SetObjectReference(NULL); + refTmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refTmp); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refTmp, arrayTmp, 0, -1)); @@ -1059,7 +1059,7 @@ HRESULT Library_corlib_native_System_String::Split(CLR_RT_StackFrame &stack, CLR { CLR_RT_HeapBlock refSrc; - refSrc.SetObjectReference(NULL); + refSrc.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refSrc); NANOCLR_CHECK_HRESULT(ConvertToCharArray(stack, refSrc, arraySrc, 0, -1)); @@ -1152,7 +1152,7 @@ HRESULT Library_corlib_native_System_String::Concat(CLR_RT_StackFrame &stack, CL for (int iStr = 0; iStr < num; iStr++) { - if (ptrSrc->Dereference() != NULL && ptrSrc->Dereference()->DataType() == DATATYPE_STRING) + if (ptrSrc->Dereference() != nullptr && ptrSrc->Dereference()->DataType() == DATATYPE_STRING) { szTextSrc = ptrSrc->RecoverString(); diff --git a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp index fc60177417..75cc747dba 100644 --- a/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp +++ b/src/CLR/CorLib/corlib_native_System_Threading_Thread.cpp @@ -168,7 +168,7 @@ HRESULT Library_corlib_native_System_Threading_Thread::get_Priority___SystemThre pri = pThis[FIELD___priority].NumericByRef().s4; // Here we check consistency of values stored in C# and internal thread objects. - // Get thread associated with C# thread object. It might be NULL if thread was not started. + // Get thread associated with C# thread object. It might be nullptr if thread was not started. NANOCLR_CHECK_HRESULT(GetThread(stack, th, false, false)); // If thread was started, then we use priority from the CLR_RT_Thread. diff --git a/src/CLR/Core/CLR_RT_HeapBlock.cpp b/src/CLR/Core/CLR_RT_HeapBlock.cpp index 1de9e8a756..9a167f438b 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock.cpp @@ -547,7 +547,7 @@ HRESULT CLR_RT_HeapBlock::StoreToReference(CLR_RT_HeapBlock &ref, int size) CLR_INT32 sizeArray = array->m_sizeOfElement; // - // Cannot copy NULL reference to a primitive type array. + // Cannot copy nullptr reference to a primitive type array. // obj = FixBoxingReference(); FAULT_ON_NULL(obj); @@ -1441,7 +1441,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( if (rightObj->DataType() == DATATYPE_VALUETYPE) { CLR_RT_TypeDef_Instance inst{}; - CLR_RT_HeapBlock *obj = NULL; + CLR_RT_HeapBlock *obj = nullptr; if (!inst.InitializeFromIndex(rightObj->ObjectCls())) { @@ -1462,7 +1462,7 @@ bool CLR_RT_HeapBlock::ObjectsEqual( } else { - if (rightObj == NULL) + if (rightObj == nullptr) { return false; } @@ -1652,11 +1652,11 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C if (!leftObj) { - return !rightObj ? 0 : -1; // NULL references always compare smaller than non-NULL ones. + return !rightObj ? 0 : -1; // nullptr references always compare smaller than non-nullptr ones. } else if (!rightObj) { - return 1; // NULL references always compare smaller than non-NULL ones. + return 1; // nullptr references always compare smaller than non-nullptr ones. } return Compare_Values(*leftObj, *rightObj, fSigned); @@ -1691,11 +1691,11 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C if (!leftLen) { - return !rightLen ? 0 : -1; // NULL references always compare smaller than non-NULL ones. + return !rightLen ? 0 : -1; // nullptr references always compare smaller than non-nullptr ones. } else // rightLen != 0 for sure. { - return 1; // NULL references always compare smaller than non-NULL ones. + return 1; // nullptr references always compare smaller than non-nullptr ones. } } @@ -1847,7 +1847,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C if (!rightObj) { - return 1; // NULL references always compare smaller than non-NULL ones. + return 1; // nullptr references always compare smaller than non-nullptr ones. } return Compare_Values(left, *rightObj, fSigned); @@ -1859,7 +1859,7 @@ CLR_INT32 CLR_RT_HeapBlock::Compare_Values(const CLR_RT_HeapBlock &left, const C if (!leftObj) { - return -1; // NULL references always compare smaller than non-NULL ones. + return -1; // nullptr references always compare smaller than non-nullptr ones. } return Compare_Values(*leftObj, right, fSigned); @@ -1965,7 +1965,7 @@ HRESULT CLR_RT_HeapBlock::NumericAdd(const CLR_RT_HeapBlock &right) // Adding of value to array reference is like advancing the index in array. case DATATYPE_ARRAY_BYREF: { - // Retrieve refernced array. Test if it is not NULL + // Retrieve refernced array. Test if it is not nullptr CLR_RT_HeapBlock_Array *array = m_data.arrayReference.array; FAULT_ON_NULL(array); // Advance current index. C# on pointer operations multiplies the offset by object size. We need to reverse @@ -2052,7 +2052,7 @@ HRESULT CLR_RT_HeapBlock::NumericSub(const CLR_RT_HeapBlock &right) // Substructing of value to array reference is like decreasing the index in array. case DATATYPE_ARRAY_BYREF: { - // Retrieve refernced array. Test if it is not NULL + // Retrieve refernced array. Test if it is not nullptr CLR_RT_HeapBlock_Array *array = m_data.arrayReference.array; FAULT_ON_NULL(array); // Advance current index. C# on pointer operations multiplies the offset by object size. We need to reverse diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index e9734df9ff..7190963a25 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -399,7 +399,7 @@ HRESULT CLR_RT_HeapBlock_Array::Copy( CLR_RT_HeapBlock ref; CLR_RT_HeapBlock elem; - elem.SetObjectReference(NULL); + elem.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(elem); NANOCLR_CHECK_HRESULT(descDst.InitializeFromObject(*arrayDst)); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp index f8d920c4b8..f5b2d5629f 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Delegate.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -55,7 +55,7 @@ HRESULT CLR_RT_HeapBlock_Delegate::CreateInstance( dlg->m_numOfStackFrames = length; #endif - dlg->m_object.SetObjectReference(NULL); + dlg->m_object.SetObjectReference(nullptr); #if defined(NANOCLR_APPDOMAINS) dlg->m_appDomain = g_CLR_RT_ExecutionEngine.GetCurrentAppDomain(); diff --git a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp index 5d2703d172..4e5d2ff0c4 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_String.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_String.cpp @@ -15,7 +15,7 @@ CLR_RT_HeapBlock_String *CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBloc CLR_UINT32 totLength = sizeof(CLR_RT_HeapBlock_String) + length + 1; CLR_RT_HeapBlock_String *str; - reference.SetObjectReference(NULL); + reference.SetObjectReference(nullptr); str = (CLR_RT_HeapBlock_String *)g_CLR_RT_ExecutionEngine.ExtractHeapBytesForObjects(DATATYPE_STRING, 0, totLength); if (str) @@ -88,7 +88,7 @@ HRESULT CLR_RT_HeapBlock_String::CreateInstance(CLR_RT_HeapBlock &reference, con CLR_RT_HeapBlock_String *str; - reference.SetObjectReference(NULL); + reference.SetObjectReference(nullptr); // get heap block for the string object // only the header is required as we're just pointing to the string stored in the assembly diff --git a/src/CLR/Core/CLR_RT_Interop.cpp b/src/CLR/Core/CLR_RT_Interop.cpp index 49d829b011..90386e23c4 100644 --- a/src/CLR/Core/CLR_RT_Interop.cpp +++ b/src/CLR/Core/CLR_RT_Interop.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -146,7 +146,7 @@ HRESULT Interop_Marshal_LPCSTR(const CLR_RT_StackFrame &stackFrame, unsigned int NANOCLR_SET_AND_LEAVE(CLR_E_WRONG_TYPE); } - // Checks that the string was actually present in managed code, not a NULL reference to sting. + // Checks that the string was actually present in managed code, not a nullptr reference to sting. param = stackFrame.ArgN(paramIndex).RecoverString(); FAULT_ON_NULL(param); diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index dd821e580a..c4e047ae2d 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -578,7 +578,7 @@ HRESULT CLR_RT_StackFrame::MakeCall( CLR_RT_StackFrame *stackSub; CLR_RT_HeapBlock tmp; - tmp.SetObjectReference(NULL); + tmp.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(tmp); if (mdR->flags & CLR_RECORD_METHODDEF::MD_Constructor) diff --git a/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp b/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp index 3daac20df4..ea8e841019 100644 --- a/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp +++ b/src/CLR/Core/CLR_RT_SystemAssembliesTable.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -9,7 +9,7 @@ static const CLR_RT_NativeAssemblyData *LookUpAssemblyNativeDataByName( const CLR_RT_NativeAssemblyData **pAssembliesNativeData, const char *lpszAssemblyName) { - // Just sanity check to avoid crash in strcmp if name is NULL. + // Just sanity check to avoid crash in strcmp if name is nullptr. if (lpszAssemblyName == nullptr) { return nullptr; diff --git a/src/CLR/Core/Execution.cpp b/src/CLR/Core/Execution.cpp index d36929273e..2192853454 100644 --- a/src/CLR/Core/Execution.cpp +++ b/src/CLR/Core/Execution.cpp @@ -656,7 +656,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS if (stack->m_call.target->argumentsCount > 0) { // Main entrypoint takes an optional String[] parameter. - // Set the arg to NULL, if that's the case. + // Set the arg to nullptr, if that's the case. #if defined(VIRTUAL_DEVICE) if (entryPointArgs != nullptr) @@ -677,7 +677,7 @@ HRESULT CLR_RT_ExecutionEngine::Execute(wchar_t *entryPointArgs, int maxContextS // To debug static constructors, the thread should be created after the entrypoint thread. NANOCLR_CHECK_HRESULT(WaitForDebugger()); - // m_cctorThread is NULL before call and inialized by the SpawnStaticConstructor + // m_cctorThread is nullptr before call and inialized by the SpawnStaticConstructor SpawnStaticConstructor(m_cctorThread); while (true) @@ -949,7 +949,7 @@ bool CLR_RT_ExecutionEngine::SpawnStaticConstructorHelper( CLR_RT_HeapBlock_Delegate *dlg; CLR_RT_HeapBlock refDlg; - refDlg.SetObjectReference(NULL); + refDlg.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(refDlg); if (SUCCEEDED(CLR_RT_HeapBlock_Delegate::CreateInstance(refDlg, indexNext, nullptr))) @@ -1046,7 +1046,7 @@ void CLR_RT_ExecutionEngine::SpawnFinalizer() { CLR_RT_HeapBlock delegate; - delegate.SetObjectReference(NULL); + delegate.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(delegate); #if defined(NANOCLR_APPDOMAINS) @@ -1208,7 +1208,7 @@ HRESULT CLR_RT_ExecutionEngine::ScheduleThreads(int maxContextSwitch) } } - // If th->Next() is NULL, then there are no Ready to run threads in the system. + // If th->Next() is nullptr, then there are no Ready to run threads in the system. // In this case we spawn finalizer and make finalizer thread as ready one. if (th->Next() == nullptr) { @@ -1665,7 +1665,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( #endif // Getting here during a GC is possible, since the watchdog ISR may now require - // dynamic memory allocation for logging. Returning NULL means the watchdog log will + // dynamic memory allocation for logging. Returning nullptr means the watchdog log will // be lost, but without major restructuring there is not much we can do. return nullptr; } @@ -1760,7 +1760,7 @@ CLR_RT_HeapBlock *CLR_RT_ExecutionEngine::ExtractHeapBlocks( if (g_CLR_RT_GarbageCollector.m_freeBytes >= (length * sizeof(struct CLR_RT_HeapBlock))) { // A compaction probably would have saved this OOM - // Compaction will occur for Bitmaps, Arrays, etc. if this function returns NULL, so lets not + // Compaction will occur for Bitmaps, Arrays, etc. if this function returns nullptr, so lets not // through an assert here // Throw the OOM, and schedule a compaction at a safe point diff --git a/src/CLR/Core/FileStream/FileStream.cpp b/src/CLR/Core/FileStream/FileStream.cpp index bde7ba205f..2d52e942c5 100644 --- a/src/CLR/Core/FileStream/FileStream.cpp +++ b/src/CLR/Core/FileStream/FileStream.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -33,7 +33,7 @@ HRESULT CLR_RT_FileStream::CreateInstance(CLR_RT_HeapBlock &ref, const char *pat NANOCLR_CHECK_HRESULT(CLR_RT_FileStream::SplitFilePath(path, rootName, rootNameLength, relativePath)); // Retrieve appropriate driver that handles this root name - if ((driver = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == NULL) + if ((driver = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_DRIVER); } @@ -62,7 +62,7 @@ HRESULT CLR_RT_FileStream::CreateInstance(CLR_RT_HeapBlock &ref, const char *pat } NANOCLR_CHECK_HRESULT( - CLR_RT_HeapBlock_BinaryBlob::CreateInstance(ref, blobSize, NULL, CLR_RT_FileStream::RelocationHandler, 0)); + CLR_RT_HeapBlock_BinaryBlob::CreateInstance(ref, blobSize, nullptr, CLR_RT_FileStream::RelocationHandler, 0)); blob = ref.DereferenceBinaryBlob(); fs = (CLR_RT_FileStream *)blob->GetData(); @@ -86,7 +86,7 @@ HRESULT CLR_RT_FileStream::CreateInstance(CLR_RT_HeapBlock &ref, const char *pat } // I/O is asynchronous from a HAL level or HW buffer: the runtime will just handle the existing memory case DRIVER_BUFFERED_IO: - if ((sdd->inputBuffer == NULL && sdd->canRead) || (sdd->outputBuffer == NULL && sdd->canWrite)) + if ((sdd->inputBuffer == nullptr && sdd->canRead) || (sdd->outputBuffer == nullptr && sdd->canWrite)) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_DRIVER); } diff --git a/src/CLR/Core/GarbageCollector.cpp b/src/CLR/Core/GarbageCollector.cpp index d91ff096b2..8a3386c164 100644 --- a/src/CLR/Core/GarbageCollector.cpp +++ b/src/CLR/Core/GarbageCollector.cpp @@ -642,7 +642,7 @@ void CLR_RT_GarbageCollector::CheckMemoryPressure() { val.InitializeFromHash(weak->m_identity.m_selectorHash); - if (inst.InitializeFromReflection(val, NULL)) + if (inst.InitializeFromReflection(val, nullptr)) { g_CLR_RT_TypeSystem.BuildTypeName(inst, szBuffer, iBuffer); rgBuffer[MAXSTRLEN(rgBuffer)] = 0; diff --git a/src/CLR/Core/GarbageCollector_Compaction.cpp b/src/CLR/Core/GarbageCollector_Compaction.cpp index 744ea98c65..d662b4f89b 100644 --- a/src/CLR/Core/GarbageCollector_Compaction.cpp +++ b/src/CLR/Core/GarbageCollector_Compaction.cpp @@ -126,7 +126,7 @@ void CLR_RT_GarbageCollector::Heap_Compact() break; } - freeRegion = NULL; + freeRegion = nullptr; freeRegion_hc = freeRegion_hcNext; } @@ -328,12 +328,12 @@ void CLR_RT_GarbageCollector::Heap_Compact() freeRegion = freeRegion_hc->m_freeList.FirstNode(); - if (freeRegion != NULL && freeRegion->Next()) + if (freeRegion != nullptr && freeRegion->Next()) { break; } - freeRegion = NULL; + freeRegion = nullptr; freeRegion_hc = freeRegion_hcNext; } diff --git a/src/CLR/Core/GarbageCollector_Info.cpp b/src/CLR/Core/GarbageCollector_Info.cpp index e543c7ac4f..17222a342c 100644 --- a/src/CLR/Core/GarbageCollector_Info.cpp +++ b/src/CLR/Core/GarbageCollector_Info.cpp @@ -270,8 +270,8 @@ bool CLR_RT_GarbageCollector::TestPointers_PopulateOld_Worker(void **ref) ptr->oldRef = ref; ptr->oldPtr = dst; - ptr->newRef = NULL; - ptr->newPtr = NULL; + ptr->newRef = nullptr; + ptr->newPtr = nullptr; ptr->data = *dst; diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index bdc5eba532..eeddbb2395 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -429,12 +429,12 @@ bool CLR_RT_Thread::FindEhBlock( const CLR_RECORD_EH *ptrEh = nullptr; CLR_UINT32 numEh = 0; - // FROM is always non-NULL and indicates the current IP + // FROM is always non-nullptr and indicates the current IP _ASSERTE(from); - // onlyFinallys is false when we're searching for a handler for an exception, and to should be NULL - _ASSERTE(FIMPLIES(!onlyFinallys, to == NULL)); - // onlyFinallys is true in Phase2, endfinally, leave, etc. to is NULL when we want to leave outside of the current - // stack frame, or non-NULL and pointing to an IL instruction that we are going to when finally's, if any, are + // onlyFinallys is false when we're searching for a handler for an exception, and to should be nullptr + _ASSERTE(FIMPLIES(!onlyFinallys, to == nullptr)); + // onlyFinallys is true in Phase2, endfinally, leave, etc. to is nullptr when we want to leave outside of the current + // stack frame, or non-nullptr and pointing to an IL instruction that we are going to when finally's, if any, are // processed. #if defined(NANOCLR_TRACE_EXCEPTIONS) @@ -2171,7 +2171,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) NANOCLR_CHECK_HRESULT(CLR_RT_TypeDescriptor::ExtractTypeIndexFromObject(pThis[0], cls)); // This test is for performance reasons. c# emits a callvirt on all instance methods to - // make sure that a NullReferenceException is thrown if 'this' is NULL. However, if the + // make sure that a NullReferenceException is thrown if 'this' is nullptr. However, if the // instance method isn't virtual we don't need to do the more expensive virtual method // lookup. if (op == CEE_CALLVIRT && diff --git a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp index 9d010b4f9e..322fdf8d2c 100644 --- a/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp +++ b/src/CLR/Core/NativeEventDispatcher/NativeEventDispatcher.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -72,11 +72,11 @@ HRESULT CLR_RT_HeapBlock_NativeEventDispatcher::CreateInstance(CLR_RT_HeapBlock NANOCLR_CHECK_HRESULT(CLR_RT_ObjectToEvent_Source::CreateInstance(event, owner, eventRef)); } - // Set pointer to driver custom data to NULL. It initialized later by users of + // Set pointer to driver custom data to nullptr. It initialized later by users of // CLR_RT_HeapBlock_NativeEventDispatcher - event->pDrvCustomData = NULL; - // Set pointers to drivers methods to NULL. - event->driverMethods = NULL; + event->pDrvCustomData = nullptr; + // Set pointers to drivers methods to nullptr. + event->driverMethods = nullptr; NANOCLR_CLEANUP(); diff --git a/src/CLR/Core/Serialization/BinaryFormatter.cpp b/src/CLR/Core/Serialization/BinaryFormatter.cpp index 01f201114f..b03d818085 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter.cpp @@ -67,8 +67,8 @@ HRESULT CLR_RT_BinaryFormatter::TypeHandler::SetValue(CLR_RT_HeapBlock *v) NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_HEADER(); - m_value = NULL; - m_type = NULL; + m_value = nullptr; + m_type = nullptr; v = TypeHandler::FixNull(v); if (v) @@ -1798,8 +1798,8 @@ HRESULT CLR_RT_BinaryFormatter::CreateInstance(CLR_UINT8 *buf, int len, CLR_RT_B ptr->m_states.DblLinkedList_Initialize(); // CLR_RT_DblLinkedList m_states; // EVENT HEAP - // NO RELOCATION - list of CLR_RT_BinaryFormatter::State // - ptr->m_fDeserialize = (buf != NULL); // bool m_fDeserialize; - ptr->m_value.SetObjectReference(NULL); // CLR_RT_HeapBlock m_value; + ptr->m_fDeserialize = (buf != nullptr); // bool m_fDeserialize; + ptr->m_value.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_value; ptr->m_value_desc.TypeDescriptor_Initialize(); // CLR_RT_TypeDescriptor m_value_desc; NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_MemoryStream::CreateInstance(ptr->m_stream, buf, len)); @@ -1865,7 +1865,7 @@ HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_Heap CLR_RT_HeapBlock cls; CLR_UINT32 flags = 0; - cls.SetObjectReference(NULL); + cls.SetObjectReference(nullptr); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; @@ -1918,7 +1918,7 @@ HRESULT CLR_RT_BinaryFormatter::Deserialize( NANOCLR_HEADER(); CLR_RT_HeapBlock cls; - cls.SetObjectReference(NULL); + cls.SetObjectReference(nullptr); // unbox reflection types CLR_RT_HeapBlock *pObj = &object; diff --git a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp index f73a1b0edb..066a97d1ae 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp @@ -16,7 +16,7 @@ __nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::TypeHandler::FixDereference(C (void)v; NATIVE_PROFILE_CLR_SERIALIZATION(); - return NULL; + return nullptr; } __nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::TypeHandler::FixNull(CLR_RT_HeapBlock *v) @@ -24,7 +24,7 @@ __nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::TypeHandler::FixNull(CLR_RT_H (void)v; NATIVE_PROFILE_CLR_SERIALIZATION(); - return NULL; + return nullptr; } //--// @@ -361,7 +361,7 @@ __nfweak CLR_RT_HeapBlock *CLR_RT_BinaryFormatter::GetDuplicate(CLR_UINT32 index (void)index; NATIVE_PROFILE_CLR_SERIALIZATION(); - return NULL; + return nullptr; } //--//--// diff --git a/src/CLR/Core/Thread.cpp b/src/CLR/Core/Thread.cpp index f4bbf25e4a..c752ec5ac2 100644 --- a/src/CLR/Core/Thread.cpp +++ b/src/CLR/Core/Thread.cpp @@ -1,4 +1,4 @@ -// +// // Copyright (c) .NET Foundation and Contributors // Portions Copyright (c) Microsoft Corporation. All rights reserved. // See LICENSE file in the project root for full license information. @@ -216,16 +216,16 @@ HRESULT CLR_RT_Thread::CreateInstance(int pid, int priority, CLR_RT_Thread *&th, th->Initialize(); - th->m_pid = pid; // int m_pid; - th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; - th->m_flags = flags; // CLR_UINT32 m_flags; - th->m_executionCounter = 0; // int m_executionCounter; - th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; - // - th->m_dlg = NULL; // CLR_RT_HeapBlock_Delegate* m_dlg; - th->m_currentException.SetObjectReference(NULL); // CLR_RT_HeapBlock m_currentException; - // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; - th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; + th->m_pid = pid; // int m_pid; + th->m_status = TH_S_Unstarted; // CLR_UINT32 m_status; + th->m_flags = flags; // CLR_UINT32 m_flags; + th->m_executionCounter = 0; // int m_executionCounter; + th->m_timeQuantumExpired = false; // bool m_timeQuantumExpired; + // + th->m_dlg = nullptr; // CLR_RT_HeapBlock_Delegate* m_dlg; + th->m_currentException.SetObjectReference(nullptr); // CLR_RT_HeapBlock m_currentException; + // UnwindStack m_nestedExceptions[c_MaxStackUnwindDepth]; + th->m_nestedExceptionsPos = 0; // int m_nestedExceptionsPos; // // //--// @@ -821,8 +821,8 @@ HRESULT CLR_RT_Thread::ProcessException_Phase1() us.GetPhase() < UnwindStack::p_1_SearchingForHandler_2_SentUsersChance && stack->m_IP) { // We have a debugger attached and we need to send some messages before we start searching. - // These messages should only get sent when the search reaches managed code. Stack::Push sets m_IP to NULL - // for native code, so therefore we need IP to be non-NULL + // These messages should only get sent when the search reaches managed code. Stack::Push sets m_IP to nullptr + // for native code, so therefore we need IP to be non-nullptr us.m_handlerStack = stack; @@ -1144,7 +1144,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() if (iterStack->m_IP) { // handlerBlockStart is used to not execute finally's who's protected blocks contain the handler - // itself. NULL is used when we're not in the handler stack frame to make it work in the case of + // itself. nullptr is used when we're not in the handler stack frame to make it work in the case of // recursive functions with filtered handlers. if (FindEhBlock( iterStack, @@ -1171,7 +1171,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() if (CLR_EE_DBG_IS_NOT(NoStackTraceInExceptions)) { #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == nullptr) #endif { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); @@ -1212,7 +1212,7 @@ HRESULT CLR_RT_Thread::ProcessException_Phase2() if (CLR_EE_DBG_IS_NOT(NoStackTraceInExceptions)) { #ifndef NANOCLR_NO_IL_INLINE - if (iterStack->m_inlineFrame == NULL) + if (iterStack->m_inlineFrame == nullptr) #endif { g_CLR_RT_ExecutionEngine.Breakpoint_StackFrame_Pop(iterStack, true); diff --git a/src/CLR/Core/TypeSystem.cpp b/src/CLR/Core/TypeSystem.cpp index 77d3e03a86..1f9dc82ee2 100644 --- a/src/CLR/Core/TypeSystem.cpp +++ b/src/CLR/Core/TypeSystem.cpp @@ -3466,7 +3466,7 @@ HRESULT CLR_RT_AppDomain::LoadAssembly(CLR_RT_Assembly *assm) // Preemptively allocate an out of memory exception. // We can never get into a case where an out of memory exception cannot be thrown. - if (m_outOfMemoryException == NULL) + if (m_outOfMemoryException == nullptr) { _ASSERTE(!strcmp(assm->m_szName, "mscorlib")); // always the first assembly to be loaded @@ -6506,7 +6506,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has no fields, no properties and only default constructor m_lastValue.m_mode = Value::c_DefaultConstructor; - m_lastValue.m_name = NULL; + m_lastValue.m_name = nullptr; NANOCLR_CHECK_HRESULT(g_CLR_RT_ExecutionEngine.NewObject(m_lastValue.m_value, m_td)); @@ -6521,7 +6521,7 @@ HRESULT CLR_RT_AttributeParser::Next(Value *&res) // Attribute class has a constructor with parameter(s) m_lastValue.m_mode = Value::c_ConstructorArgument; - m_lastValue.m_name = NULL; + m_lastValue.m_name = nullptr; // get type NANOCLR_CHECK_HRESULT(m_parser.Advance(m_res)); diff --git a/src/CLR/Core/TypeSystemLookup.cpp b/src/CLR/Core/TypeSystemLookup.cpp index 7c158271d2..5870731314 100644 --- a/src/CLR/Core/TypeSystemLookup.cpp +++ b/src/CLR/Core/TypeSystemLookup.cpp @@ -53,7 +53,7 @@ #define DT_CNV(x) (CLR_UINT8)ELEMENT_TYPE_##x #define DT_CLS(x) &g_CLR_RT_WellKnownTypes.x -#define DT_NOREL(x) NULL +#define DT_NOREL(x) nullptr #define DT_REL(x) (CLR_RT_HeapBlockRelocate)&x #if defined(VIRTUAL_DEVICE) || defined(NANOCLR_TRACE_MEMORY_STATS) @@ -62,14 +62,14 @@ #define DT_OPT_NAME(x) #endif -#define DATATYPE_NOT_SUPPORTED { DT_NA, DT_NA, DT_NA, DT_T(FIRST_INVALID), DT_CNV(END), NULL, DT_NOREL(CLR_RT_HeapBlock) DT_OPT_NAME(NOT_SUPPORTED) }, +#define DATATYPE_NOT_SUPPORTED { DT_NA, DT_NA, DT_NA, DT_T(FIRST_INVALID), DT_CNV(END), nullptr, DT_NOREL(CLR_RT_HeapBlock) DT_OPT_NAME(NOT_SUPPORTED) }, const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { //// flags, sizeInBits, sizeInBytes, promoteTo, convertToElementType, cls, relocate, name //// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID + { DT_NA , DT_NA, DT_NA, DT_T(VOID ), DT_CNV(VOID ), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VOID ) }, // DATATYPE_VOID // { DT_NUM | DT_INT | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 1, DT_U1, DT_T(I4 ), DT_CNV(BOOLEAN ), DT_CLS(Boolean ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(BOOLEAN ) }, // DATATYPE_BOOLEAN { DT_NUM | DT_INT | DT_SGN | DT_PRIM | DT_DIRCT | DT_OPT | DT_MT , 8, DT_I1, DT_T(I4 ), DT_CNV(I1 ), DT_CLS(Int8 ), DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(I1 ) }, // DATATYPE_I1 @@ -91,56 +91,56 @@ const CLR_RT_DataTypeLookup c_CLR_RT_DataTypeLookup[] = { DT_REF | DT_PRIM | DT_DIRCT | DT_MT , DT_VS, DT_BL, DT_T(STRING ), DT_CNV(STRING ), DT_CLS(String ), DT_REL (CLR_RT_HeapBlock ::Relocate_String ) DT_OPT_NAME(STRING ) }, // DATATYPE_STRING // { DT_REF | DT_DIRCT | DT_MT , DT_NA, DT_BL, DT_T(OBJECT ), DT_CNV(OBJECT ), DT_CLS(Object ), DT_REL (CLR_RT_HeapBlock ::Relocate_Obj ) DT_OPT_NAME(OBJECT ) }, // DATATYPE_OBJECT - { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS - { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE + { DT_REF | DT_CLASS | DT_MT , DT_NA, DT_BL, DT_T(CLASS ), DT_CNV(CLASS ), nullptr , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(CLASS ) }, // DATATYPE_CLASS + { DT_REF | DT_VALUE | DT_MT , DT_NA, DT_BL, DT_T(VALUETYPE ), DT_CNV(VALUETYPE ), nullptr , DT_REL (CLR_RT_HeapBlock ::Relocate_Cls ) DT_OPT_NAME(VALUETYPE ) }, // DATATYPE_VALUETYPE { DT_REF | DT_CLASS | DT_ARRAY | DT_MT , DT_NA, DT_BL, DT_T(SZARRAY ), DT_CNV(SZARRAY ), DT_CLS(Array ), DT_REL (CLR_RT_HeapBlock_Array ::Relocate ) DT_OPT_NAME(SZARRAY ) }, // DATATYPE_SZARRAY - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(BYREF ), DT_CNV(BYREF ), nullptr , DT_REL (CLR_RT_HeapBlock ::Relocate_Ref ) DT_OPT_NAME(BYREF ) }, // DATATYPE_BYREF - { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR - { DT_MT | DT_GENER, DT_NA, DT_BL, DT_T(GENERICINST ), DT_CNV(GENERICINST), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(GENERICINST ) }, // DATATYPE_GENERICINST - { DT_MT | DT_MVAR , DT_NA, DT_BL, DT_T(MVAR ), DT_CNV(MVAR ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(MVAR ) }, // DATATYPE_MVAR + { DT_MT | DT_VAR , DT_NA, DT_BL, DT_T(VAR ), DT_CNV(VAR ), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(VAR ) }, // DATATYPE_VAR + { DT_MT | DT_GENER, DT_NA, DT_BL, DT_T(GENERICINST ), DT_CNV(GENERICINST), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(GENERICINST ) }, // DATATYPE_GENERICINST + { DT_MT | DT_MVAR , DT_NA, DT_BL, DT_T(MVAR ), DT_CNV(MVAR ), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(MVAR ) }, // DATATYPE_MVAR - { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK - { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK - { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY + { DT_NA , DT_NA, DT_NA, DT_T(FREEBLOCK ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(FREEBLOCK ) }, // DATATYPE_FREEBLOCK + { DT_NA , DT_NA, DT_NA, DT_T(CACHEDBLOCK ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_Node ) DT_OPT_NAME(CACHEDBLOCK ) }, // DATATYPE_CACHEDBLOCK + { DT_REF , DT_NA, DT_NA, DT_T(ASSEMBLY ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_Assembly ::Relocate ) DT_OPT_NAME(ASSEMBLY ) }, // DATATYPE_ASSEMBLY { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(WEAKCLASS ), DT_CNV(END ), DT_CLS(WeakReference ), DT_REL (CLR_RT_HeapBlock_WeakReference::Relocate ) DT_OPT_NAME(WEAKCLASS ) }, // DATATYPE_WEAKCLASS - { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION - { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF - { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), NULL , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT - { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD + { DT_MT , DT_NA, DT_NA, DT_T(REFLECTION ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock ) DT_OPT_NAME(REFLECTION ) }, // DATATYPE_REFLECTION + { DT_MT , DT_NA, DT_NA, DT_T(ARRAY_BYREF ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock ::Relocate_ArrayRef) DT_OPT_NAME(ARRAY_BYREF ) }, // DATATYPE_ARRAY_BYREF + { DT_REF | DT_MT , DT_NA, DT_BL, DT_T(DELEGATE_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_Delegate ::Relocate ) DT_OPT_NAME(DELEGATE_HEAD ) }, // DATATYPE_DELEGATE_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(DELEGATELIST_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_Delegate_List::Relocate ) DT_OPT_NAME(DELEGATELIST_HEAD ) }, // DATATYPE_DELEGATELIST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(OBJECT_TO_EVENT ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_ObjectToEvent_Source ::Relocate ) DT_OPT_NAME(OBJECT_TO_EVENT ) }, // DATATYPE_OBJECT_TO_EVENT + { DT_REF , DT_NA, DT_NA, DT_T(BINARY_BLOB_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_BinaryBlob ::Relocate ) DT_OPT_NAME(BINARY_BLOB_HEAD ) }, // DATATYPE_BINARY_BLOB_HEAD // - { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD - { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD - { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), NULL , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME - { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD - { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA + { DT_REF , DT_NA, DT_NA, DT_T(THREAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_Thread ::Relocate ) DT_OPT_NAME(THREAD ) }, // DATATYPE_THREAD + { DT_REF , DT_NA, DT_NA, DT_T(SUBTHREAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_SubThread ::Relocate ) DT_OPT_NAME(SUBTHREAD ) }, // DATATYPE_SUBTHREAD + { DT_REF , DT_NA, DT_NA, DT_T(STACK_FRAME ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_StackFrame ::Relocate ) DT_OPT_NAME(STACK_FRAME ) }, // DATATYPE_STACK_FRAME + { DT_REF , DT_NA, DT_NA, DT_T(TIMER_HEAD ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_Timer ) DT_OPT_NAME(TIMER_HEAD ) }, // DATATYPE_TIMER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate ) DT_OPT_NAME(LOCK_HEAD ) }, // DATATYPE_LOCK_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_OWNER_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_Lock ::Relocate_Owner ) DT_OPT_NAME(LOCK_OWNER_HEAD ) }, // DATATYPE_LOCK_OWNER_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(LOCK_REQUEST_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_LockRequest ::Relocate ) DT_OPT_NAME(LOCK_REQUEST_HEAD ) }, // DATATYPE_LOCK_REQUEST_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(WAIT_FOR_OBJECT_HEAD), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_WaitForObject::Relocate ) DT_OPT_NAME(WAIT_FOR_OBJECT_HEAD) }, // DATATYPE_WAIT_FOR_OBJECT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(FINALIZER_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock_Finalizer ::Relocate ) DT_OPT_NAME(FINALIZER_HEAD ) }, // DATATYPE_FINALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_HEAD ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_HEAD ) }, // DATATYPE_MEMORY_STREAM_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(MEMORY_STREAM_DATA ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_MemoryStream ) DT_OPT_NAME(MEMORY_STREAM_DATA ) }, // DATATYPE_MEMORY_STREAM_DATA // - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE - { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_HEAD ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_HEAD ) }, // DATATYPE_SERIALIZER_HEAD + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_DUPLICATE), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_DUPLICATE) }, // DATATYPE_SERIALIZER_DUPLICATE + { DT_NA , DT_NA, DT_NA, DT_T(SERIALIZER_STATE ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_BinaryFormatter ) DT_OPT_NAME(SERIALIZER_STATE ) }, // DATATYPE_SERIALIZER_STATE // - { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD + { DT_REF , DT_NA, DT_NA, DT_T(ENDPOINT_HEAD ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_EndPoint ) DT_OPT_NAME(ENDPOINT_HEAD ) }, // DATATYPE_ENDPOINT_HEAD // DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED - { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), NULL , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT + { DT_REF , DT_NA, DT_NA, DT_T(IO_PORT ), DT_CNV(END ), nullptr , DT_NOREL(CLR_RT_HeapBlock_NativeEventDispatcher ) DT_OPT_NAME(IO_PORT ) }, // DATATYPE_IO_PORT DATATYPE_NOT_SUPPORTED //VTU_PORT #if defined(NANOCLR_APPDOMAINS) - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD - { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY - { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), NULL , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_HEAD ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_AppDomain::Relocate ) DT_OPT_NAME(APPDOMAIN_HEAD ) }, // DATATYPE_APPDOMAIN_HEAD + { DT_REF | DT_MT , DT_NA, DT_NA, DT_T(TRANSPARENT_PROXY ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_HeapBlock::Relocate_TransparentProxy ) DT_OPT_NAME(TRANSPARENT_PROXY ) }, // DATATYPE_TRANSPARENT_PROXY + { DT_REF , DT_NA, DT_NA, DT_T(APPDOMAIN_ASSEMBLY ), DT_CNV(END ), nullptr , DT_REL (CLR_RT_AppDomainAssembly::Relocate ) DT_OPT_NAME(APPDOMAIN_ASSEMBLY ) }, // DATATYPE_APPDOMAIN_ASSEMBLY #else DATATYPE_NOT_SUPPORTED DATATYPE_NOT_SUPPORTED diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 5d7c72f94d..01ce9ba32c 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -1276,7 +1276,7 @@ bool CLR_DBG_Debugger::Monitor_QueryConfiguration(WP_Message *message) (HAL_Configuration_WirelessAP *)platform_malloc(sizeof(HAL_Configuration_WirelessAP)); // check allocation - if (configWirelessAPNetworkInterface != NULL) + if (configWirelessAPNetworkInterface != nullptr) { memset(configWirelessAPNetworkInterface, 0, sizeof(HAL_Configuration_WirelessAP)); @@ -2138,7 +2138,7 @@ static HRESULT Debugging_Thread_Create_Helper(CLR_RT_MethodDef_Index &md, CLR_RT NANOCLR_HEADER(); CLR_RT_HeapBlock ref; - ref.SetObjectReference(NULL); + ref.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(ref); CLR_RT_Thread *realThread = (pid != 0) ? CLR_DBG_Debugger::GetThreadFromPid(pid) : nullptr; @@ -2891,7 +2891,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetField(WP_Message *msg) CLR_RT_FieldDef_Instance inst; CLR_UINT32 offset; - if (blk != NULL && cmd->m_offset > 0) + if (blk != nullptr && cmd->m_offset > 0) { if (FAILED(desc.InitializeFromObject(*blk))) { @@ -3340,7 +3340,7 @@ static HRESULT Assign_Helper(CLR_RT_HeapBlock *blkDst, CLR_RT_HeapBlock *blkSrc) AnalyzeObject aoSrc; CLR_RT_HeapBlock srcVal; - srcVal.SetObjectReference(NULL); + srcVal.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(srcVal); NANOCLR_CHECK_HRESULT(AnalyzeObject_Helper(blkDst, aoDst)); diff --git a/src/CLR/Diagnostics/Profiler.cpp b/src/CLR/Diagnostics/Profiler.cpp index 2b9476f2a0..890eb82676 100644 --- a/src/CLR/Diagnostics/Profiler.cpp +++ b/src/CLR/Diagnostics/Profiler.cpp @@ -73,7 +73,7 @@ void CLR_PRF_Profiler::SendMemoryLayout() Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { std::string memoryLayout = std::format( "** Memory layout **\r\n start:0x{:X}\r\n end:0x{:X}\r\n size:0x{:X}\r\n", @@ -731,7 +731,7 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) PackAndWriteBits(idx); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { // build type name char fullTypeName[1024] = {0}; @@ -784,7 +784,7 @@ void CLR_PRF_Profiler::TrackObjectCreation(CLR_RT_HeapBlock *ptr) PackAndWriteBits(array->ReflectionDataConst().levels); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { // build type name char fullTypeName[1024] = {0}; @@ -893,7 +893,7 @@ void CLR_PRF_Profiler::TrackObjectDeletion(CLR_RT_HeapBlock *ptr) Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { if (dt == DATATYPE_SZARRAY) { @@ -1046,7 +1046,7 @@ void CLR_PRF_Profiler::TrackObjectRelocation(void *previousAddress, void *destin { #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { CLR_RT_HeapBlock *ptr = (CLR_RT_HeapBlock *)destinationAddress; CLR_UINT8 dt = ptr->DataType(); @@ -1132,7 +1132,7 @@ void CLR_PRF_Profiler::RecordGarbageCollectionBegin() Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { std::string garbageCollection = std::format("GC: Starting run #{}\r\n", g_CLR_RT_GarbageCollector.m_numberOfGarbageCollections); @@ -1179,7 +1179,7 @@ void CLR_PRF_Profiler::RecordGarbageCollectionEnd() Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { std::string garbageCollection = std::format( "GC: Finished run #{} - {} bytes free\r\n", @@ -1241,7 +1241,7 @@ void CLR_PRF_Profiler::RecordHeapCompactionBegin() Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { std::string heapCompaction = std::format("Heap compaction: Starting run #{} \r\n", g_CLR_RT_GarbageCollector.m_numberOfCompactions); @@ -1289,7 +1289,7 @@ void CLR_PRF_Profiler::RecordHeapCompactionEnd() Stream_Send(); #if defined(VIRTUAL_DEVICE) - if (g_ProfilerMessageCallback != NULL) + if (g_ProfilerMessageCallback != nullptr) { std::string heapCompaction = std::format("Heap compaction: Finished run #{}\r\n", g_CLR_RT_GarbageCollector.m_numberOfCompactions); @@ -1449,7 +1449,7 @@ HRESULT CLR_PRF_Profiler::Stream_Flush() } #if defined(VIRTUAL_DEVICE) - if (g_ProfilerDataCallback != NULL) + if (g_ProfilerDataCallback != nullptr) { g_ProfilerDataCallback(ptr->m_payload, payloadLength); } diff --git a/src/CLR/Include/nanoCLR_Interop.h b/src/CLR/Include/nanoCLR_Interop.h index ba64aef847..fe726c98ff 100644 --- a/src/CLR/Include/nanoCLR_Interop.h +++ b/src/CLR/Include/nanoCLR_Interop.h @@ -18,7 +18,7 @@ extern HRESULT NANOCLR_DEBUG_PROCESS_EXCEPTION(HRESULT hr, const char *szFunc, c #define NANOCLR_LEAVE() \ { \ if (FAILED(hr)) \ - NANOCLR_DEBUG_PROCESS_EXCEPTION(hr, NULL, NULL, 0); \ + NANOCLR_DEBUG_PROCESS_EXCEPTION(hr, nullptr, nullptr, 0); \ goto nanoCLR_Cleanup; \ } #define NANOCLR_RETURN() return hr @@ -204,7 +204,7 @@ HRESULT Interop_Marshal_double(const CLR_RT_StackFrame &stackFrame, unsigned int #endif HRESULT Interop_Marshal_LPCSTR(const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, const char *¶m); -// For unsupported types we set param to NULL. +// For unsupported types we set param to nullptr. HRESULT Interop_Marshal_UNSUPPORTED_TYPE( const CLR_RT_StackFrame &stackFrame, unsigned int paramIndex, @@ -519,7 +519,7 @@ HRESULT Interop_Marshal_double_ByRef( #endif -// For unsuppoted types return NULL reference +// For unsuppoted types return nullptr reference HRESULT Interop_Marshal_UNSUPPORTED_TYPE_ByRef( const CLR_RT_StackFrame &stackFrame, @@ -549,7 +549,7 @@ HRESULT Interop_Marshal_StoreRef(CLR_RT_StackFrame &stackFrame, void *pVoidHeapB ** ** Arguments: [stackFrame] - Reference to the managed stack frame. ** -** Returns: Pointer to managed object or NULL in case of error. +** Returns: Pointer to managed object or nullptr in case of error. **********************************************************************/ CLR_RT_HeapBlock *Interop_Marshal_RetrieveManagedObject(CLR_RT_StackFrame &stackFrame); @@ -583,7 +583,7 @@ signed int &Interop_Marshal_GetField_float(CLR_RT_HeapBlock *pThis, unsigned int signed __int64 &Interop_Marshal_GetField_double(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex); #endif -// For all other unsupported types we always return NULL reference. +// For all other unsupported types we always return nullptr reference. UNSUPPORTED_TYPE &Interop_Marshal_GetField_UNSUPPORTED_TYPE(CLR_RT_HeapBlock *pThis, unsigned int fieldIndex); /********************************************************************** diff --git a/src/CLR/Include/nanoCLR_Runtime.h b/src/CLR/Include/nanoCLR_Runtime.h index 6bbe680c71..2393b66e80 100644 --- a/src/CLR/Include/nanoCLR_Runtime.h +++ b/src/CLR/Include/nanoCLR_Runtime.h @@ -3272,7 +3272,7 @@ struct CLR_RT_Thread : public CLR_RT_ObjectToEvent_Destination // EVENT HEAP - N //--// // - // For example, timers are implemented in terms of Threads. If not NULL, this is a worker thread for a timer. + // For example, timers are implemented in terms of Threads. If not nullptr, this is a worker thread for a timer. // ThreadTerminationCallback m_terminationCallback; void *m_terminationParameter; // EVENT HEAP - NO RELOCATION - diff --git a/src/CLR/Include/nanoCLR_Runtime__Serialization.h b/src/CLR/Include/nanoCLR_Runtime__Serialization.h index 9dd4304ef2..19528e2c09 100644 --- a/src/CLR/Include/nanoCLR_Runtime__Serialization.h +++ b/src/CLR/Include/nanoCLR_Runtime__Serialization.h @@ -70,7 +70,7 @@ struct CLR_RT_BinaryFormatter : public CLR_RT_HeapBlock_Node // EVENT HEAP - NO // // Type of signatures: // - // 1) NULL + // 1) nullptr // // Invalid for NeverNull // diff --git a/src/CLR/Messaging/Messaging.cpp b/src/CLR/Messaging/Messaging.cpp index f57327e387..cb09cb96b5 100644 --- a/src/CLR/Messaging/Messaging.cpp +++ b/src/CLR/Messaging/Messaging.cpp @@ -308,7 +308,7 @@ HRESULT CLR_Messaging::DeleteInstance() // free messaging platform_free(g_CLR_Messaging); - g_CLR_Messaging = NULL; + g_CLR_Messaging = nullptr; NANOCLR_NOCLEANUP_NOLABEL(); } diff --git a/src/CLR/Startup/CLRStartup.cpp b/src/CLR/Startup/CLRStartup.cpp index 90a10b74fe..b69c42757f 100644 --- a/src/CLR/Startup/CLRStartup.cpp +++ b/src/CLR/Startup/CLRStartup.cpp @@ -71,7 +71,7 @@ struct Settings // Get handlers for native functions in assembly pNativeAssmData = GetAssemblyNativeData(assm->name); - // If pNativeAssmData not NULL - means this assembly has native calls and there is pointer to table with native + // If pNativeAssmData not nullptr - means this assembly has native calls and there is pointer to table with native // calls. if (pNativeAssmData != nullptr) { @@ -400,7 +400,7 @@ void ClrStartup(CLR_SETTINGS params) CLR_Debug::Printf("Ready.\r\n"); #endif - hr = g_CLR_RT_ExecutionEngine.Execute(NULL, params.MaxContextSwitches); + hr = g_CLR_RT_ExecutionEngine.Execute(nullptr, params.MaxContextSwitches); #if !defined(BUILD_RTM) CLR_Debug::Printf("Done.\r\n"); diff --git a/src/CLR/System.Math/nf_native_system_math.cpp b/src/CLR/System.Math/nf_native_system_math.cpp index a2e855da2e..bd99579315 100644 --- a/src/CLR/System.Math/nf_native_system_math.cpp +++ b/src/CLR/System.Math/nf_native_system_math.cpp @@ -32,7 +32,7 @@ static const CLR_RT_MethodHandler method_lookup[] = nullptr, Library_nf_native_system_math_System_Math::Max___STATIC__R8__R8__R8, Library_nf_native_system_math_System_Math::Max___STATIC__R4__R4__R4, - NULL, + nullptr, Library_nf_native_system_math_System_Math::Min___STATIC__R8__R8__R8, Library_nf_native_system_math_System_Math::Min___STATIC__R4__R4__R4, Library_nf_native_system_math_System_Math::Pow___STATIC__R8__R8__R8, diff --git a/src/DeviceInterfaces/System.Net/sys_net_native.cpp b/src/DeviceInterfaces/System.Net/sys_net_native.cpp index 9be082cb6c..ed629b6894 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native.cpp @@ -50,68 +50,68 @@ static const CLR_RT_MethodHandler method_lookup[] = Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::GetNetworkInterface___STATIC__SystemNetNetworkInformationNetworkInterface__U4, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::IPV4AddressFromString___STATIC__I8__STRING, Library_sys_net_native_System_Net_NetworkInformation_NetworkInterface::IPV6AddressFromString___STATIC__SZARRAY_U2__STRING, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_IPAddress::IPv4ToString___STATIC__STRING__U4, Library_sys_net_native_System_Net_IPAddress::IPv6ToString___STATIC__STRING__SZARRAY_U2, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, Library_sys_net_native_System_Net_NetworkInformation_IPGlobalProperties::GetIPAddress___STATIC__SystemNetIPAddress, nullptr, nullptr, diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp index 2e384429cf..19366bafb7 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_NetworkInformation_WirelessAPConfiguration.cpp @@ -94,12 +94,12 @@ HRESULT Library_sys_net_native_System_Net_NetworkInformation_WirelessAPConfigura HAL_Configuration_WirelessAP config; CLR_RT_HeapBlock *pConfig = stack.Arg0().Dereference(); - _ASSERTE(pConfig != NULL); + _ASSERTE(pConfig != nullptr); CLR_UINT32 configurationIndex = pConfig[FIELD___apConfigurationIndex].NumericByRefConst().u4; - CLR_RT_HeapBlock_String *hbPassword = NULL; - CLR_RT_HeapBlock_String *hbSsid = NULL; + CLR_RT_HeapBlock_String *hbPassword = nullptr; + CLR_RT_HeapBlock_String *hbSsid = nullptr; CLR_UINT32 ssidLength; CLR_UINT32 passwordLength; diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_CertificateManager.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_CertificateManager.cpp index fad2c19d73..e4fa5c9031 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_CertificateManager.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_CertificateManager.cpp @@ -14,7 +14,7 @@ HRESULT Library_sys_net_native_System_Net_Security_CertificateManager:: uint32_t certificateSize; uint32_t allocationSize; - HAL_Configuration_X509CaRootBundle *caBundle = NULL; + HAL_Configuration_X509CaRootBundle *caBundle = nullptr; CLR_RT_HeapBlock_Array *arrayCA = stack.Arg0().DereferenceArray(); @@ -74,7 +74,7 @@ HRESULT Library_sys_net_native_System_Net_Security_CertificateManager:: NANOCLR_CLEANUP(); - if (caBundle != NULL) + if (caBundle != nullptr) { platform_free(caBundle); } diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp index c946530d4c..8a4f4d2b8a 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Security_SslNative.cpp @@ -419,15 +419,15 @@ HRESULT Library_sys_net_native_System_Net_Security_SslNative::InitHelper(CLR_RT_ CLR_RT_HeapBlock *hbCert = stack.Arg2().Dereference(); CLR_RT_HeapBlock *caCert = stack.Arg3().Dereference(); bool useDeviceCertificate = (bool)stack.Arg4().NumericByRef().u1; - CLR_RT_HeapBlock_Array *arrCert = NULL; - CLR_RT_HeapBlock_Array *privateKey = NULL; - CLR_UINT8 *sslCert = NULL; + CLR_RT_HeapBlock_Array *arrCert = nullptr; + CLR_RT_HeapBlock_Array *privateKey = nullptr; + CLR_UINT8 *sslCert = nullptr; volatile int result; - uint8_t *pk = NULL; - const char *pkPassword = NULL; + uint8_t *pk = nullptr; + const char *pkPassword = nullptr; CLR_UINT32 pkPasswordLength = 0; - if (hbCert != NULL) + if (hbCert != nullptr) { g_CLR_RT_TypeSystem.FindTypeDef( "X509Certificate2", @@ -471,9 +471,9 @@ HRESULT Library_sys_net_native_System_Net_Security_SslNative::InitHelper(CLR_RT_ sslMode, sslVerify, (const char *)sslCert, - sslCert == NULL ? 0 : arrCert->m_numOfElements, + sslCert == nullptr ? 0 : arrCert->m_numOfElements, pk, - pk == NULL ? 0 : privateKey->m_numOfElements, + pk == nullptr ? 0 : privateKey->m_numOfElements, pkPassword, pkPasswordLength, sslContext, @@ -488,9 +488,9 @@ HRESULT Library_sys_net_native_System_Net_Security_SslNative::InitHelper(CLR_RT_ sslMode, sslVerify, (const char *)sslCert, - sslCert == NULL ? 0 : arrCert->m_numOfElements, + sslCert == nullptr ? 0 : arrCert->m_numOfElements, pk, - pk == NULL ? 0 : privateKey->m_numOfElements, + pk == nullptr ? 0 : privateKey->m_numOfElements, pkPassword, pkPasswordLength, sslContext, @@ -501,12 +501,12 @@ HRESULT Library_sys_net_native_System_Net_Security_SslNative::InitHelper(CLR_RT_ NANOCLR_CHECK_HRESULT(ThrowOnError(stack, result)); - if (caCert != NULL) + if (caCert != nullptr) { arrCert = caCert[X509Certificate::FIELD___certificate].DereferenceArray(); - // If arrCert == NULL then the certificate is an X509Certificate2 which uses a certificate handle - if (arrCert == NULL) + // If arrCert == nullptr then the certificate is an X509Certificate2 which uses a certificate handle + if (arrCert == nullptr) { arrCert = caCert[X509Certificate::FIELD___handle].DereferenceArray(); FAULT_ON_NULL(arrCert); diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp index 9aa41fcf54..de037df3aa 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Net_Sockets_NativeSocket.cpp @@ -120,7 +120,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket::accept___STATIC_ NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } - ret = SOCK_accept(handle, NULL, NULL); + ret = SOCK_accept(handle, nullptr, nullptr); if (ret != SOCK_SOCKET_ERROR) { @@ -142,7 +142,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: LPCSTR szName = stack.Arg0().RecoverString(); struct SOCK_addrinfo hints; - struct SOCK_addrinfo *addr = NULL; + struct SOCK_addrinfo *addr = nullptr; struct SOCK_addrinfo *addrT; CLR_UINT32 cAddresses = 0; CLR_RT_HeapBlock *pAddress; @@ -162,7 +162,7 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: { memset(&hints, 0, sizeof(hints)); - ret = SOCK_getaddrinfo(szName, NULL, &hints, &addr); + ret = SOCK_getaddrinfo(szName, nullptr, &hints, &addr); if (ret == SOCK_SOCKET_ERROR) { @@ -216,17 +216,17 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket:: CLR_RT_HeapBlock hbCanonicalName; CLR_RT_HeapBlock hbAddresses; - hbCanonicalName.SetObjectReference(NULL); + hbCanonicalName.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc(hbCanonicalName); - hbAddresses.SetObjectReference(NULL); + hbAddresses.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc2(hbAddresses); for (int pass = 0; pass < 2; pass++) { cAddresses = 0; - for (addrT = addr; addrT != NULL; addrT = addrT->ai_next) + for (addrT = addr; addrT != nullptr; addrT = addrT->ai_next) { if (pass == 1) { @@ -473,9 +473,9 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket::BindConnectHelpe CLR_INT32 Library_sys_net_native_System_Net_Sockets_NativeSocket::Helper__SelectSocket(CLR_INT32 handle, CLR_INT32 mode) { struct SOCK_timeval timeval; - SOCK_fd_set *readfds = NULL; - SOCK_fd_set *writefds = NULL; - SOCK_fd_set *exceptfds = NULL; + SOCK_fd_set *readfds = nullptr; + SOCK_fd_set *writefds = nullptr; + SOCK_fd_set *exceptfds = nullptr; SOCK_fd_set fds; SOCK_fd_set fdsExcept; CLR_INT32 res = 0; @@ -503,7 +503,7 @@ CLR_INT32 Library_sys_net_native_System_Net_Sockets_NativeSocket::Helper__Select // for a read, a write or an except. This causes a problem when there is a socket exception. The // poll will continue to block forever because the select statement wasn't looking for exceptions // Therefore, we will force the select call to look for the except case if it is not already doing it. - if (exceptfds == NULL) + if (exceptfds == nullptr) { fdsExcept.fd_count = 1; fdsExcept.fd_array[0] = handle; @@ -548,11 +548,11 @@ HRESULT Library_sys_net_native_System_Net_Sockets_NativeSocket::MarshalSockAddre CLR_RT_HeapBlock *ipEndPointHbObj; CLR_RT_HeapBlock ipAddress; - ipAddress.SetObjectReference(NULL); + ipAddress.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc1(ipAddress); CLR_RT_HeapBlock ipEndPoint; - ipEndPoint.SetObjectReference(NULL); + ipEndPoint.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc2(ipEndPoint); CLR_INT32 port; diff --git a/src/DeviceInterfaces/System.Net/sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2.cpp b/src/DeviceInterfaces/System.Net/sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2.cpp index a1022aa598..84d00bb134 100644 --- a/src/DeviceInterfaces/System.Net/sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2.cpp +++ b/src/DeviceInterfaces/System.Net/sys_net_native_System_Security_Cryptography_X509Certificates_X509Certificate2.cpp @@ -15,7 +15,7 @@ HRESULT Library_sys_net_native_System_Security_Cryptography_X509Certificates_X50 CLR_RT_HeapBlock_Array *keyData = stack.Arg0().DereferenceArray(); CLR_UINT8 *keyBuffer; CLR_RT_HeapBlock *passwordHb = stack.Arg1().DereferenceString(); - const char *password = NULL; + const char *password = nullptr; CLR_UINT32 passwordLength = 0; // get key buffer diff --git a/src/HAL/Include/nanoHAL.h b/src/HAL/Include/nanoHAL.h index 9f778e2728..bd7272027a 100644 --- a/src/HAL/Include/nanoHAL.h +++ b/src/HAL/Include/nanoHAL.h @@ -141,8 +141,8 @@ template class HAL_DblLinkedNode public: void Initialize() { - m_nextNode = NULL; - m_prevNode = NULL; + m_nextNode = nullptr; + m_prevNode = nullptr; } T *Next() const @@ -165,7 +165,7 @@ template class HAL_DblLinkedNode bool IsLinked() const { - return m_nextNode != NULL; + return m_nextNode != nullptr; } //--// @@ -191,8 +191,8 @@ template class HAL_DblLinkedNode if (next) next->m_prevNode = prev; - m_nextNode = NULL; - m_prevNode = NULL; + m_nextNode = nullptr; + m_prevNode = nullptr; } }; @@ -222,7 +222,7 @@ template class HAL_DblLinkedList void Initialize() { m_first = Tail(); - m_null = NULL; + m_null = nullptr; m_last = Head(); } @@ -232,7 +232,7 @@ template class HAL_DblLinkedList T *ptrNext; int num = 0; - for (ptr = FirstNode(); (ptrNext = ptr->Next()) != NULL; ptr = ptrNext) + for (ptr = FirstNode(); (ptrNext = ptr->Next()) != nullptr; ptr = ptrNext) { num++; } @@ -258,12 +258,12 @@ template class HAL_DblLinkedList T *FirstValidNode() const { T *res = m_first; - return res->Next() ? res : NULL; + return res->Next() ? res : nullptr; } T *LastValidNode() const { T *res = m_last; - return res->Prev() ? res : NULL; + return res->Prev() ? res : nullptr; } T *Head() const @@ -292,7 +292,7 @@ template class HAL_DblLinkedList bool Exists(T *searchNode) { T *node = FirstValidNode(); - while (node != NULL && node != searchNode) + while (node != nullptr && node != searchNode) { if (node == node->Next()) { @@ -300,7 +300,7 @@ template class HAL_DblLinkedList } node = node->Next(); } - return (node == NULL ? false : true); + return (node == nullptr ? false : true); } #endif @@ -402,7 +402,7 @@ template class Hal_Queue_UnknownSize T *operator[](int index) { if (index < 0 || index >= NumberOfElements()) - return NULL; + return nullptr; return &m_data[(m_reader + index) % m_size]; } @@ -412,7 +412,7 @@ template class Hal_Queue_UnknownSize size_t oldWriter = m_writer; if (m_full) - return NULL; + return nullptr; m_writer++; if (m_writer == m_size) @@ -427,7 +427,7 @@ template class Hal_Queue_UnknownSize T *Peek() { if (m_writer == m_reader && !m_full) - return NULL; + return nullptr; return &m_data[m_reader]; } @@ -437,7 +437,7 @@ template class Hal_Queue_UnknownSize size_t oldReader = m_reader; if (m_reader == m_writer && !m_full) - return (T *)NULL; + return (T *)nullptr; m_reader++; if (m_reader == m_size) @@ -456,7 +456,7 @@ template class Hal_Queue_UnknownSize if (m_full || (nElements == 0)) { nElements = 0; - return NULL; + return nullptr; } if (m_writer < m_reader) @@ -482,7 +482,7 @@ template class Hal_Queue_UnknownSize size_t max = 0; if (nElements == 0) - return NULL; + return nullptr; if ((m_reader == m_writer) && !m_full) { @@ -490,7 +490,7 @@ template class Hal_Queue_UnknownSize // reset the reader/writer to maximize push potential m_reader = 0; m_writer = 0; - return NULL; + return nullptr; } if (m_writer <= m_reader) @@ -754,7 +754,7 @@ template class HAL_RingBuffer // store size of tail size_t tailSize = _write_index; - T *tempBuffer = NULL; + T *tempBuffer = nullptr; if (tailSize > 0) { diff --git a/src/HAL/Include/nanoHAL_Network.h b/src/HAL/Include/nanoHAL_Network.h index 2a965309ba..84cd437d27 100644 --- a/src/HAL/Include/nanoHAL_Network.h +++ b/src/HAL/Include/nanoHAL_Network.h @@ -202,7 +202,7 @@ typedef struct __nfpack HAL_Configuration_NetworkInterface // Specific configuration Id // Id of the configuration block specific for this interface type - // NULL otherwise + // nullptr otherwise // currently in use: // - HAL_Configuration_Wireless80211 for NetworkInterfaceType_Wireless80211 uint32_t SpecificConfigId; diff --git a/src/HAL/Include/nanoHAL_ReleaseInfo.h b/src/HAL/Include/nanoHAL_ReleaseInfo.h index f7fde4d1eb..1d79b2ea10 100644 --- a/src/HAL/Include/nanoHAL_ReleaseInfo.h +++ b/src/HAL/Include/nanoHAL_ReleaseInfo.h @@ -45,11 +45,11 @@ struct __nfpack NFReleaseInfo unsigned short minor = 0, unsigned short build = 0, unsigned short revision = 0, - const char *info = (const char *)NULL, + const char *info = (const char *)nullptr, size_t infoLen = 0, - const char *target = (const char *)NULL, + const char *target = (const char *)nullptr, size_t targetLen = 0, - const char *platform = (const char *)NULL, + const char *platform = (const char *)nullptr, size_t platformLen = 0); }; diff --git a/src/PAL/COM/sockets/Sockets_debugger.cpp b/src/PAL/COM/sockets/Sockets_debugger.cpp index af1e9767ad..6552b5623e 100644 --- a/src/PAL/COM/sockets/Sockets_debugger.cpp +++ b/src/PAL/COM/sockets/Sockets_debugger.cpp @@ -308,7 +308,7 @@ int Sockets_LWIP_Driver::Read(int ComPortNum, char *Data, size_t size) } } - if (SOCK_SOCKET_ERROR != HAL_SOCK_select(SOCK_FD_SETSIZE, &readSet, NULL, NULL, &timeout)) + if (SOCK_SOCKET_ERROR != HAL_SOCK_select(SOCK_FD_SETSIZE, &readSet, nullptr, nullptr, &timeout)) { // we always perform an accept so that we handle pending connections // if we already are connected and the debug stream socket is still active, then we immediately close @@ -452,9 +452,9 @@ bool Sockets_LWIP_Driver::UpgradeToSsl( 0x04, (const char *)pDeviceCert, deviceCertLen, - NULL, + nullptr, 0, - NULL, + nullptr, 0, g_DebuggerPort_SslCtx_Handle, false)) @@ -503,7 +503,7 @@ bool Sockets_LWIP_Driver::InitializeMulticastDiscovery() if (g_Sockets_LWIP_Driver.s_discoveryInitialized) return TRUE; - MulticastResponseContinuation.InitializeCallback(MulticastDiscoveryRespond, NULL); + MulticastResponseContinuation.InitializeCallback(MulticastDiscoveryRespond, nullptr); // set up discovery socket to list to defined discovery port for any ip address memset(&sockAddr, 0, sizeof(sockAddr)); @@ -580,7 +580,7 @@ void Sockets_LWIP_Driver::MulticastDiscoverySchedule() privRead.fd_array[0] = g_Sockets_LWIP_Driver.m_multicastSocket; privRead.fd_count = 1; - if (1 == HAL_SOCK_select(1, &privRead, NULL, NULL, &to)) + if (1 == HAL_SOCK_select(1, &privRead, nullptr, nullptr, &to)) { if (!MulticastResponseContinuation.IsLinked()) { diff --git a/src/PAL/COM/sockets/sockets_lwip.cpp b/src/PAL/COM/sockets/sockets_lwip.cpp index 27b073aa19..a18547aa2f 100644 --- a/src/PAL/COM/sockets/sockets_lwip.cpp +++ b/src/PAL/COM/sockets/sockets_lwip.cpp @@ -260,7 +260,7 @@ void Sockets_LWIP_Driver::CloseConnections(bool fCloseDbg) { struct SocketRegisterMap &entry = g_Sockets_LWIP_Driver.m_socketHandles[i]; - if (entry.m_socket != SOCK_SOCKET_ERROR && entry.m_sslData != NULL) + if (entry.m_socket != SOCK_SOCKET_ERROR && entry.m_sslData != nullptr) { SSL_CloseSocket(entry.m_socket); } @@ -282,7 +282,7 @@ void Sockets_LWIP_Driver::CloseConnections(bool fCloseDbg) g_Sockets_LWIP_Driver.m_socketHandles[i].m_socket = SOCK_SOCKET_ERROR; g_Sockets_LWIP_Driver.m_socketHandles[i].m_flags = 0; - g_Sockets_LWIP_Driver.m_socketHandles[i].m_sslData = NULL; + g_Sockets_LWIP_Driver.m_socketHandles[i].m_sslData = nullptr; g_Sockets_LWIP_Driver.m_cntSockets--; } else if (i > 0) @@ -422,7 +422,7 @@ bool Sockets_LWIP_Driver::Initialize() { g_Sockets_LWIP_Driver.m_socketHandles[i].m_socket = SOCK_SOCKET_ERROR; g_Sockets_LWIP_Driver.m_socketHandles[i].m_flags = 0; - g_Sockets_LWIP_Driver.m_socketHandles[i].m_sslData = NULL; + g_Sockets_LWIP_Driver.m_socketHandles[i].m_sslData = nullptr; } SOCKET_CHECK_bool(HAL_SOCK_Initialize()); @@ -496,7 +496,7 @@ void Sockets_LWIP_Driver::RegisterSocket(SOCK_SOCKET sock, bool selectable, bool g_Sockets_LWIP_Driver.m_socketHandles[g_Sockets_LWIP_Driver.m_cntSockets].m_socket = sock; g_Sockets_LWIP_Driver.m_socketHandles[g_Sockets_LWIP_Driver.m_cntSockets].m_flags = 0; - g_Sockets_LWIP_Driver.m_socketHandles[g_Sockets_LWIP_Driver.m_cntSockets].m_sslData = NULL; + g_Sockets_LWIP_Driver.m_socketHandles[g_Sockets_LWIP_Driver.m_cntSockets].m_sslData = nullptr; if (fDebug) SET_SOCKET_FLAG( diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_accept_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_accept_internal.cpp index 44d00c44e3..2b4ad85f3e 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_accept_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_accept_internal.cpp @@ -23,7 +23,7 @@ int ssl_accept_internal(int sd, int contextHandle) ssl = context->ssl; // sanity check - if (ssl == NULL) + if (ssl == nullptr) { return SOCK_SOCKET_ERROR; } diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_add_cert_auth_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_add_cert_auth_internal.cpp index dc25339fc8..80b502e0e9 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_add_cert_auth_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_add_cert_auth_internal.cpp @@ -20,7 +20,7 @@ bool ssl_add_cert_auth_internal(int contextHandle, const char *certificate, int // sd should already have been created context = (mbedTLS_NFContext *)g_SSL_Driver.ContextArray[contextHandle].Context; - if (context != NULL) + if (context != nullptr) { ///////////////////////////////////////////////////////////////////////////////////////////////// // developer notes: // @@ -30,7 +30,7 @@ bool ssl_add_cert_auth_internal(int contextHandle, const char *certificate, int if (mbedtls_x509_crt_parse(context->ca_cert, (const unsigned char *)certificate, certLength) == 0) { // add to CA chain - mbedtls_ssl_conf_ca_chain(context->conf, context->ca_cert, NULL); + mbedtls_ssl_conf_ca_chain(context->conf, context->ca_cert, nullptr); // done return true; diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_available_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_available_internal.cpp index 591f835949..02f37622d2 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_available_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_available_internal.cpp @@ -13,14 +13,14 @@ int ssl_available_internal(int sd) mbedtls_ssl_context *ssl = context->ssl; // sanity check - if (ssl == NULL) + if (ssl == nullptr) { return SOCK_SOCKET_ERROR; } // Developer note - // Ideally we should be making a call to read passing a NULL pointer and requesting 0 bytes - // Like this: mbedtls_ssl_read(ssl, NULL, 0) + // Ideally we should be making a call to read passing a nullptr pointer and requesting 0 bytes + // Like this: mbedtls_ssl_read(ssl, nullptr, 0) // It won't work because we are using blockign sockets. // Even if we unblock it temporarily, it will still won't return until there is something to be read. // That call will block the execution and the watchdog will eventually kick in. diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_close_socket_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_close_socket_internal.cpp index e69ced804b..355b542f75 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_close_socket_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_close_socket_internal.cpp @@ -11,14 +11,14 @@ int ssl_close_socket_internal(int sd) mbedTLS_NFContext *context = (mbedTLS_NFContext *)SOCKET_DRIVER.GetSocketSslData(sd); // sanity check - if (context != NULL) + if (context != nullptr) { mbedtls_ssl_context *ssl = context->ssl; // be nice and notify the peer that the connection is being closed mbedtls_ssl_close_notify(ssl); - SOCKET_DRIVER.SetSocketSslData(sd, NULL); + SOCKET_DRIVER.SetSocketSslData(sd, nullptr); } SOCK_close(sd); diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_connect_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_connect_internal.cpp index 8edb996c23..2d99ff92b5 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_connect_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_connect_internal.cpp @@ -25,7 +25,7 @@ int ssl_connect_internal(int sd, const char *szTargetHost, int contextHandle) // sd should already have been created // Now do the SSL negotiation context = (mbedTLS_NFContext *)g_SSL_Driver.ContextArray[contextHandle].Context; - if (context == NULL) + if (context == nullptr) { return false; } @@ -33,7 +33,7 @@ int ssl_connect_internal(int sd, const char *szTargetHost, int contextHandle) // set socket in network context context->server_fd->fd = sd; - if (szTargetHost != NULL && szTargetHost[0] != 0) + if (szTargetHost != nullptr && szTargetHost[0] != 0) { if ((ret = mbedtls_ssl_set_hostname(context->ssl, szTargetHost)) != 0) { diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_decode_private_key_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_decode_private_key_internal.cpp index 6c53716f4b..8c374fc3cc 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_decode_private_key_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_decode_private_key_internal.cpp @@ -57,7 +57,7 @@ int ssl_decode_private_key_internal( #if MBEDTLS_VERSION_MAJOR < 3 retCode = mbedtls_pk_parse_key(&pkey, key, keyLength, password, passwordLength); #else - retCode = mbedtls_pk_parse_key(&pkey, key, keyLength, password, passwordLength, random, NULL); + retCode = mbedtls_pk_parse_key(&pkey, key, keyLength, password, passwordLength, random, nullptr); #endif // need to free this here diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_exit_context_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_exit_context_internal.cpp index 93d9358d19..51569df987 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_exit_context_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_exit_context_internal.cpp @@ -14,13 +14,13 @@ bool ssl_exit_context_internal(int contextHandle) // Check contextHandle range if ((contextHandle >= (int)ARRAYSIZE(g_SSL_Driver.ContextArray)) || (contextHandle < 0) || - (g_SSL_Driver.ContextArray[contextHandle].Context == NULL)) + (g_SSL_Driver.ContextArray[contextHandle].Context == nullptr)) { return false; } context = (mbedTLS_NFContext *)g_SSL_Driver.ContextArray[contextHandle].Context; - if (context == NULL) + if (context == nullptr) { return false; } diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic.cpp index f2db6f340f..c0d2c63dda 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic.cpp @@ -156,7 +156,7 @@ int mbedtls_net_recv_timeout(void *ctx, unsigned char *buf, size_t len, uint32_t tv.tv_sec = timeout / 1000; tv.tv_usec = (timeout % 1000) * 1000; - ret = select(fd + 1, &read_fds, NULL, NULL, timeout == 0 ? NULL : &tv); + ret = select(fd + 1, &read_fds, nullptr, nullptr, timeout == 0 ? nullptr : &tv); /* Zero fds ready means we timed out */ if (ret == 0) diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic_init_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic_init_internal.cpp index 47d6a34ea9..5e13456c43 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic_init_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_generic_init_internal.cpp @@ -32,15 +32,15 @@ bool ssl_generic_init_internal( int endpoint = 0; int ret = 0; - HAL_Configuration_X509CaRootBundle *certStore = NULL; - HAL_Configuration_X509DeviceCertificate *deviceCert = NULL; + HAL_Configuration_X509CaRootBundle *certStore = nullptr; + HAL_Configuration_X509DeviceCertificate *deviceCert = nullptr; /////////////////////// mbedTLS_NFContext *context; for (uint32_t i = 0; i < ARRAYSIZE(g_SSL_Driver.ContextArray); i++) { - if (g_SSL_Driver.ContextArray[i].Context == NULL) + if (g_SSL_Driver.ContextArray[i].Context == nullptr) { sslContexIndex = i; break; @@ -55,7 +55,7 @@ bool ssl_generic_init_internal( // create and init MbedTLS nanoFramework context // this needs to be freed in ssl_exit_context_internal context = (mbedTLS_NFContext *)platform_malloc(sizeof(mbedTLS_NFContext)); - if (context == NULL) + if (context == nullptr) { goto error; } @@ -65,7 +65,7 @@ bool ssl_generic_init_internal( // allocate memory for net context // this needs to be freed in ssl_exit_context_internal context->server_fd = (mbedtls_net_context *)platform_malloc(sizeof(mbedtls_net_context)); - if (context->server_fd == NULL) + if (context->server_fd == nullptr) { goto error; } @@ -84,7 +84,7 @@ bool ssl_generic_init_internal( // create and init SSL context // this needs to be freed in ssl_exit_context_internal context->ssl = (mbedtls_ssl_context *)platform_malloc(sizeof(mbedtls_ssl_context)); - if (context->ssl == NULL) + if (context->ssl == nullptr) { goto error; } @@ -93,7 +93,7 @@ bool ssl_generic_init_internal( // create and init SSL configuration // this needs to be freed in ssl_exit_context_internal context->conf = (mbedtls_ssl_config *)platform_malloc(sizeof(mbedtls_ssl_config)); - if (context->conf == NULL) + if (context->conf == nullptr) { goto error; } @@ -103,7 +103,7 @@ bool ssl_generic_init_internal( // create and init CTR_DRBG // this needs to be freed in ssl_exit_context_internal context->ctr_drbg = (mbedtls_ctr_drbg_context *)platform_malloc(sizeof(mbedtls_ctr_drbg_context)); - if (context->ctr_drbg == NULL) + if (context->ctr_drbg == nullptr) { goto error; } @@ -112,7 +112,7 @@ bool ssl_generic_init_internal( // create and init entropy context // this needs to be freed in ssl_exit_context_internal context->entropy = (mbedtls_entropy_context *)platform_malloc(sizeof(mbedtls_entropy_context)); - if (context->entropy == NULL) + if (context->entropy == nullptr) { goto error; } @@ -121,7 +121,7 @@ bool ssl_generic_init_internal( // create and init private key context // this needs to be freed in ssl_exit_context_internal context->pk = (mbedtls_pk_context *)platform_malloc(sizeof(mbedtls_pk_context)); - if (context->pk == NULL) + if (context->pk == nullptr) { goto error; } @@ -131,14 +131,14 @@ bool ssl_generic_init_internal( // create and init X509 CRT // this needs to be freed in ssl_exit_context_internal context->ca_cert = (mbedtls_x509_crt *)platform_malloc(sizeof(mbedtls_x509_crt)); - if (context->ca_cert == NULL) + if (context->ca_cert == nullptr) { goto error; } mbedtls_x509_crt_init(context->ca_cert); // TODO: review if we can add some instance-unique data to the custom argument below - if (mbedtls_ctr_drbg_seed(context->ctr_drbg, mbedtls_entropy_func, context->entropy, NULL, 0) != 0) + if (mbedtls_ctr_drbg_seed(context->ctr_drbg, mbedtls_entropy_func, context->entropy, nullptr, 0) != 0) { // ctr_drbg_seed_failed goto error; @@ -212,7 +212,7 @@ bool ssl_generic_init_internal( certStore->CertificateSize); platform_free(certStore); - certStore = NULL; + certStore = nullptr; } } @@ -237,10 +237,10 @@ bool ssl_generic_init_internal( } // parse "own" certificate if passed - if (certificate != NULL && certLength > 0) + if (certificate != nullptr && certLength > 0) { // is there a private key? - if (privateKey != NULL && privateKeyLength > 0) + if (privateKey != nullptr && privateKeyLength > 0) { if (mbedtls_pk_parse_key( context->pk, @@ -263,7 +263,7 @@ bool ssl_generic_init_internal( // parse certificate // this needs to be freed in ssl_exit_context_internal context->own_cert = (mbedtls_x509_crt *)platform_malloc(sizeof(mbedtls_x509_crt)); - if (context->own_cert == NULL) + if (context->own_cert == nullptr) { goto error; } @@ -286,18 +286,18 @@ bool ssl_generic_init_internal( if (deviceCert) { platform_free(deviceCert); - deviceCert = NULL; + deviceCert = nullptr; } } else { - // no PK, need to set it to NULL + // no PK, need to set it to nullptr mbedtls_pk_free(context->pk); platform_free(context->pk); - context->pk = NULL; + context->pk = nullptr; } - mbedtls_ssl_conf_ca_chain(context->conf, context->ca_cert, NULL); + mbedtls_ssl_conf_ca_chain(context->conf, context->ca_cert, nullptr); psa_crypto_init(); diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_read_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_read_internal.cpp index 8c62182537..1187d491ef 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_read_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_read_internal.cpp @@ -12,7 +12,7 @@ int ssl_read_internal(int sd, char *data, size_t size) mbedtls_ssl_context *ssl = context->ssl; // sanity check - if (ssl == NULL) + if (ssl == nullptr) { return SOCK_SOCKET_ERROR; } diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_uninitialize_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_uninitialize_internal.cpp index e13213b5ef..0a5165a79a 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_uninitialize_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_uninitialize_internal.cpp @@ -16,7 +16,7 @@ bool ssl_uninitialize_internal() for (uint32_t i = 0; i < ARRAYSIZE(g_SSL_Driver.ContextArray); i++) { - if (g_SSL_Driver.ContextArray[i].Context != NULL) + if (g_SSL_Driver.ContextArray[i].Context != nullptr) { ssl_exit_context_internal(i); } diff --git a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_write_internal.cpp b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_write_internal.cpp index ba52a5704d..9545fdc50a 100644 --- a/src/PAL/COM/sockets/ssl/MbedTLS/ssl_write_internal.cpp +++ b/src/PAL/COM/sockets/ssl/MbedTLS/ssl_write_internal.cpp @@ -15,7 +15,7 @@ int ssl_write_internal(int sd, const char *data, size_t req_len) mbedtls_ssl_context *ssl = context->ssl; // sanity check - if (ssl == NULL) + if (ssl == nullptr) { return SOCK_SOCKET_ERROR; } diff --git a/src/PAL/COM/sockets/ssl/ssl.cpp b/src/PAL/COM/sockets/ssl/ssl.cpp index 2d418672ed..f153ef46d3 100644 --- a/src/PAL/COM/sockets/ssl/ssl.cpp +++ b/src/PAL/COM/sockets/ssl/ssl.cpp @@ -27,7 +27,7 @@ bool SSL_Uninitialize() for (uint32_t i = 0; i < ARRAYSIZE(g_SSL_Driver.ContextArray); i++) { - if (g_SSL_Driver.ContextArray[i].Context != NULL) + if (g_SSL_Driver.ContextArray[i].Context != nullptr) { ssl_exit_context_internal(i); } diff --git a/src/PAL/Events/nanoPAL_Events.cpp b/src/PAL/Events/nanoPAL_Events.cpp index 05c0a9c88a..514014d942 100644 --- a/src/PAL/Events/nanoPAL_Events.cpp +++ b/src/PAL/Events/nanoPAL_Events.cpp @@ -8,8 +8,8 @@ static uint32_t systemEvents; -set_Event_Callback g_Event_Callback = NULL; -void *g_Event_Callback_Arg = NULL; +set_Event_Callback g_Event_Callback = nullptr; +void *g_Event_Callback_Arg = nullptr; // functions below declared as weak can be replaced at target/platform level if needed @@ -36,7 +36,7 @@ __nfweak void Events_Set(uint32_t events) __atomic_fetch_or(&systemEvents, events, __ATOMIC_RELAXED); #endif - if (g_Event_Callback != NULL) + if (g_Event_Callback != nullptr) { g_Event_Callback(g_Event_Callback_Arg); } diff --git a/src/PAL/Events/nanoPAL_Events_driver.cpp b/src/PAL/Events/nanoPAL_Events_driver.cpp index 993c7ef3ab..22367bf419 100644 --- a/src/PAL/Events/nanoPAL_Events_driver.cpp +++ b/src/PAL/Events/nanoPAL_Events_driver.cpp @@ -38,7 +38,7 @@ HRESULT PalEventDriver::PostEvent(uint32_t e, uint32_t param) { PalEventListener *listener = g_palEventDriver.listenerList.FirstNode(); - while(listener->Next() != NULL) + while(listener->Next() != nullptr) { if (listener->m_eventMask & e) { diff --git a/src/PAL/FileSystem/nanoPAL_FileSystem.cpp b/src/PAL/FileSystem/nanoPAL_FileSystem.cpp index 44575c1173..1cd1baad9b 100644 --- a/src/PAL/FileSystem/nanoPAL_FileSystem.cpp +++ b/src/PAL/FileSystem/nanoPAL_FileSystem.cpp @@ -15,9 +15,9 @@ HAL_DblLinkedList FileSystemVolumeList::s_zombieVolumeList; bool FS_MountVolume(const char *rootName, uint32_t deviceFlags, const char *fileSystemDriver) { - FileSystemVolume *volume = NULL; - FILESYSTEM_DRIVER_INTERFACE *fsDriver = NULL; - STREAM_DRIVER_INTERFACE *streamDriver = NULL; + FileSystemVolume *volume = nullptr; + FILESYSTEM_DRIVER_INTERFACE *fsDriver = nullptr; + STREAM_DRIVER_INTERFACE *streamDriver = nullptr; uint32_t volumeId; if (!rootName) @@ -41,7 +41,7 @@ bool FS_MountVolume(const char *rootName, uint32_t deviceFlags, const char *file if (!(next && next->Next())) { - next = NULL; + next = nullptr; } // We'll only free the memory of this storage device @@ -151,7 +151,7 @@ bool FileSystemVolumeList::InitializeVolumes() { FileSystemVolume *volume = s_volumeList.FirstNode(); - if (volume == NULL) + if (volume == nullptr) { #if defined(PLATFORM_ARM) debug_printf("There are no file system volume to initialize"); @@ -302,7 +302,7 @@ FileSystemVolume *FileSystemVolumeList::GetNextVolume(FileSystemVolume &volume) return nextVolume; } - return NULL; + return nullptr; } uint32_t FileSystemVolumeList::GetNumVolumes() @@ -333,7 +333,7 @@ FileSystemVolume *FileSystemVolumeList::FindVolume(const char *rootName, uint32_ volume = FileSystemVolumeList::GetNextVolume(*volume); } - return NULL; + return nullptr; } FileSystemVolume *FileSystemVolumeList::FindVolume(uint32_t volumeId) @@ -350,7 +350,7 @@ FileSystemVolume *FileSystemVolumeList::FindVolume(uint32_t volumeId) volume = FileSystemVolumeList::GetNextVolume(*volume); } - return NULL; + return nullptr; } uint32_t FileSystemVolumeList::GetNextFreeVolumeId() diff --git a/src/PAL/Lwip/lwIP_Sockets.cpp b/src/PAL/Lwip/lwIP_Sockets.cpp index 1088636712..f5a84edaee 100644 --- a/src/PAL/Lwip/lwIP_Sockets.cpp +++ b/src/PAL/Lwip/lwIP_Sockets.cpp @@ -83,7 +83,7 @@ HRESULT LWIP_SOCKETS_Driver::Link_status(uint32_t interfaceIndex, bool *status) struct netif *networkInterface = netif_find_interface(g_LWIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber); - if (NULL == networkInterface) + if (nullptr == networkInterface) { return CLR_E_FAIL; } @@ -295,11 +295,11 @@ bool LWIP_SOCKETS_Driver::Initialize() int interfaceNumber; #if LWIP_NETIF_STATUS_CALLBACK == 1 - PostAddressChangedContinuation.InitializeCallback(PostAddressChanged, NULL); + PostAddressChangedContinuation.InitializeCallback(PostAddressChanged, nullptr); #endif #if LWIP_NETIF_LINK_CALLBACK == 1 - PostAvailabilityOnContinuation.InitializeCallback(PostAvailabilityOn, NULL); - PostAvailabilityOffContinuation.InitializeCallback(PostAvailabilityOff, NULL); + PostAvailabilityOnContinuation.InitializeCallback(PostAvailabilityOn, nullptr); + PostAvailabilityOffContinuation.InitializeCallback(PostAvailabilityOff, nullptr); #endif // create m_interfaceNumber array @@ -573,7 +573,7 @@ SOCK_SOCKET LWIP_SOCKETS_Driver::Accept(SOCK_SOCKET socket, SOCK_sockaddr *addre Sock_SockaddrToSockaddr(address, (sockaddr *)&addr, addressLen); } - ret = lwip_accept(socket, address ? (sockaddr *)&addr : NULL, (u32_t *)addressLen); + ret = lwip_accept(socket, address ? (sockaddr *)&addr : nullptr, (u32_t *)addressLen); if (address) { @@ -598,9 +598,9 @@ SOCK_addrinfo *CreateAddressRecord( const SOCK_addrinfo *hints) { SOCK_addrinfo *ai; - SOCK_sockaddr_in *sa = NULL; + SOCK_sockaddr_in *sa = nullptr; #if LWIP_IPV6 - SOCK_sockaddr_in6 *sa6 = NULL; + SOCK_sockaddr_in6 *sa6 = nullptr; #endif int total_size = sizeof(SOCK_addrinfo); int canonNameSize; @@ -613,7 +613,7 @@ SOCK_addrinfo *CreateAddressRecord( #endif // Allow for canon name if available - if (canonname != NULL) + if (canonname != nullptr) { // Size including terminator so we allocate name after SOCK_addrinfo + SOCK_sockaddr_in canonNameSize = hal_strlen_s(canonname) + 1; @@ -621,10 +621,10 @@ SOCK_addrinfo *CreateAddressRecord( } ai = (SOCK_addrinfo *)mem_malloc(total_size); - if (ai == NULL) + if (ai == nullptr) { // Out of memory - return NULL; + return nullptr; } memset(ai, 0, total_size); @@ -667,7 +667,7 @@ SOCK_addrinfo *CreateAddressRecord( // set up addrinfo ai->ai_family = family; - if (hints != NULL) + if (hints != nullptr) { // copy socktype & protocol from hints if specified ai->ai_socktype = hints->ai_socktype; @@ -675,7 +675,7 @@ SOCK_addrinfo *CreateAddressRecord( } // Copy in canon name if available - if (canonname != NULL) + if (canonname != nullptr) { ai->ai_canonname = (char *)ai + total_size - canonNameSize; memcpy(ai->ai_canonname, canonname, canonNameSize); @@ -695,19 +695,19 @@ int LWIP_SOCKETS_Driver::GetAddrInfo( #if LWIP_DNS NATIVE_PROFILE_PAL_NETWORK(); - SOCK_addrinfo *ai = NULL; - SOCK_addrinfo *nextAi = NULL; + SOCK_addrinfo *ai = nullptr; + SOCK_addrinfo *nextAi = nullptr; struct addrinfo *lwipAddrinfo = {0}; - if (res == NULL || nodename == NULL) + if (res == nullptr || nodename == nullptr) { return SOCK_SOCKET_ERROR; } - *res = NULL; + *res = nullptr; // if the nodename == "" then return the IP addresses of this device - if (nodename[0] == 0 && servname == NULL) + if (nodename[0] == 0 && servname == nullptr) { // Work through all available Network Interfaces in reverse so link list ends up with lowest index first. for (int i = g_TargetConfiguration.NetworkInterfaceConfigs->Count - 1; i >= 0; i--) @@ -715,7 +715,7 @@ int LWIP_SOCKETS_Driver::GetAddrInfo( struct netif *networkInterface = netif_find_interface(g_LWIP_SOCKETS_Driver.m_interfaces[i].m_interfaceNumber); - if (networkInterface == NULL) + if (networkInterface == nullptr) { continue; } @@ -743,8 +743,8 @@ int LWIP_SOCKETS_Driver::GetAddrInfo( addr = networkInterface->ip6_addr[addresses - 1]; } #endif - ai = CreateAddressRecord(family, addr, 0, NULL, hints); - if (ai == NULL) + ai = CreateAddressRecord(family, addr, 0, nullptr, hints); + if (ai == nullptr) { // Out of memory ? return SOCK_SOCKET_ERROR; @@ -756,7 +756,7 @@ int LWIP_SOCKETS_Driver::GetAddrInfo( } } - if (ai == NULL) + if (ai == nullptr) { // No addresses to return return -1; @@ -789,7 +789,7 @@ int LWIP_SOCKETS_Driver::GetAddrInfo( lwipAddrinfo->ai_canonname, hints); - if (ai == NULL) + if (ai == nullptr) { // Out of memory lwip_freeaddrinfo(lwipAddrinfo); @@ -830,7 +830,7 @@ void LWIP_SOCKETS_Driver::FreeAddrInfo(SOCK_addrinfo *ai) SOCK_addrinfo *next; - while (ai != NULL) + while (ai != nullptr) { next = ai->ai_next; mem_free(ai); @@ -864,7 +864,7 @@ int LWIP_SOCKETS_Driver::GetSockLastError(SOCK_SOCKET socket) static int MARSHAL_SOCK_FDSET_TO_FDSET(SOCK_fd_set *sf, fd_set *f) { - if (f != NULL && sf != NULL) + if (f != nullptr && sf != nullptr) { FD_ZERO(f); @@ -880,7 +880,7 @@ static int MARSHAL_SOCK_FDSET_TO_FDSET(SOCK_fd_set *sf, fd_set *f) static void MARSHAL_FDSET_TO_SOCK_FDSET(SOCK_fd_set *sf, fd_set *f) { - if (sf != NULL && f != NULL) + if (sf != nullptr && f != nullptr) { int cnt = sf->fd_count; sf->fd_count = 0; @@ -911,12 +911,12 @@ int LWIP_SOCKETS_Driver::Select( fd_set write; fd_set excpt; - fd_set *pR = (readfds != NULL) ? &read : NULL; - fd_set *pW = (writefds != NULL) ? &write : NULL; - fd_set *pE = (exceptfds != NULL) ? &excpt : NULL; + fd_set *pR = (readfds != nullptr) ? &read : nullptr; + fd_set *pW = (writefds != nullptr) ? &write : nullptr; + fd_set *pE = (exceptfds != nullptr) ? &excpt : nullptr; // If network down then we should alert any pending socket actions - if (exceptfds != NULL && exceptfds->fd_count > 0) + if (exceptfds != nullptr && exceptfds->fd_count > 0) { bool networkInterfaceAvailable = false; @@ -925,7 +925,7 @@ int LWIP_SOCKETS_Driver::Select( { struct netif *networkInterface = netif_find_interface(g_LWIP_SOCKETS_Driver.m_interfaces[i].m_interfaceNumber); - if (networkInterface != NULL) + if (networkInterface != nullptr) { if (netif_is_up(networkInterface)) { @@ -937,9 +937,9 @@ int LWIP_SOCKETS_Driver::Select( if (!networkInterfaceAvailable) { - if (readfds != NULL) + if (readfds != nullptr) readfds->fd_count = 0; - if (writefds != NULL) + if (writefds != nullptr) writefds->fd_count = 0; errorCode = ENETDOWN; @@ -1299,7 +1299,7 @@ HRESULT LWIP_SOCKETS_Driver::UpdateAdapterConfiguration( struct netif *networkInterface = netif_find_interface(g_LWIP_SOCKETS_Driver.m_interfaces[interfaceIndex].m_interfaceNumber); - if (NULL == networkInterface) + if (nullptr == networkInterface) { return CLR_E_FAIL; } @@ -1746,7 +1746,7 @@ struct netif *netif_find_interface(int num) struct netif *networkInterface; - for (networkInterface = netif_list; networkInterface != NULL; networkInterface = networkInterface->next) + for (networkInterface = netif_list; networkInterface != nullptr; networkInterface = networkInterface->next) { if (num == networkInterface->num) { @@ -1755,5 +1755,5 @@ struct netif *netif_find_interface(int num) } #endif - return NULL; + return nullptr; } diff --git a/src/PAL/Lwip/lwIP_Sockets_functions.cpp b/src/PAL/Lwip/lwIP_Sockets_functions.cpp index c28f0c685f..7c740b2d45 100644 --- a/src/PAL/Lwip/lwIP_Sockets_functions.cpp +++ b/src/PAL/Lwip/lwIP_Sockets_functions.cpp @@ -197,7 +197,7 @@ void HAL_SOCK_EventsSet(uint32_t events) void *HAL_SOCK_GlobalLockContext() { NATIVE_PROFILE_PAL_NETWORK(); - return NULL; + return nullptr; } void HAL_SOCK_SetInterfaceNumber(uint32_t interfaceIndex, uint32_t interfaceNumber) diff --git a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp index 4b7971cb44..a34cb5b054 100644 --- a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp +++ b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioController.cpp @@ -66,7 +66,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::SetPinMod GPIO_PIN pinNumber; PinMode driveMode; - CLR_RT_HeapBlock *gpioPin = NULL; + CLR_RT_HeapBlock *gpioPin = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -82,7 +82,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::SetPinMod // try to get GpioPin object GetGpioPin(pinNumber, stack, gpioPin); - if (gpioPin == NULL) + if (gpioPin == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } @@ -98,7 +98,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeRea GPIO_PIN pinNumber; bool pinValue; - CLR_RT_HeapBlock *gpioPin = NULL; + CLR_RT_HeapBlock *gpioPin = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -113,7 +113,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeRea // try to get GpioPin object GetGpioPin(pinNumber, stack, gpioPin); - if (gpioPin == NULL) + if (gpioPin == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } @@ -133,7 +133,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeWri GPIO_PIN pinNumber; GpioPinValue state; - CLR_RT_HeapBlock *gpioPin = NULL; + CLR_RT_HeapBlock *gpioPin = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -149,7 +149,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::NativeWri // try to get GpioPin object GetGpioPin(pinNumber, stack, gpioPin); - if (gpioPin == NULL) + if (gpioPin == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } @@ -166,9 +166,9 @@ void Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::GetGpioPin( { CLR_INDEX assemblyIndex; CLR_INT32 index = 0; - CLR_RT_Assembly *thisAssembly = NULL; - CLR_RT_HeapBlock *gpioPinBundle = NULL; - CLR_RT_HeapBlock_ArrayList *gpioPins = NULL; + CLR_RT_Assembly *thisAssembly = nullptr; + CLR_RT_HeapBlock *gpioPinBundle = nullptr; + CLR_RT_HeapBlock_ArrayList *gpioPins = nullptr; // get "This" because we need to access the s_GpioPins field CLR_RT_HeapBlock *pThis = stack.This(); @@ -186,10 +186,10 @@ void Library_sys_dev_gpio_native_System_Device_Gpio_GpioController::GetGpioPin( if (!SUCCEEDED(gpioPins->GetItem(index++, gpioPinBundle))) { // GetItem failed, clear to indicate failure. - gpioPinBundle = NULL; + gpioPinBundle = nullptr; } - if (gpioPinBundle == NULL) + if (gpioPinBundle == nullptr) { // no more items in the array break; diff --git a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioPin.cpp b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioPin.cpp index 3441d383f3..469c606266 100644 --- a/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioPin.cpp +++ b/src/System.Device.Gpio/sys_dev_gpio_native_System_Device_Gpio_GpioPin.cpp @@ -78,7 +78,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::Toggle___VOID(CL CPU_GPIO_TogglePinState(pinNumber); // fire event, only if there are callbacks registered - if (pThis[FIELD___callbacks].Dereference() != NULL) + if (pThis[FIELD___callbacks].Dereference() != nullptr) { PostManagedEvent(EVENT_GPIO, 0, (uint16_t)pinNumber, (uint32_t)CPU_GPIO_GetPinState(pinNumber)); } @@ -268,13 +268,13 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::SetPinMode(CLR_R // flag to determine if there are any callbacks registered in managed code // this is use to determine if there is any need to setup and process INT handler - callbacksRegistered = (gpioPin[FIELD___callbacks].Dereference() != NULL); + callbacksRegistered = (gpioPin[FIELD___callbacks].Dereference() != nullptr); validPin = CPU_GPIO_EnableInputPin( pinNumber, (uint32_t)debounceTimeoutMilsec, - callbacksRegistered ? Gpio_Interupt_ISR : NULL, - NULL, + callbacksRegistered ? Gpio_Interupt_ISR : nullptr, + nullptr, GPIO_INT_EDGE_BOTH, pinMode); } @@ -303,7 +303,7 @@ HRESULT Library_sys_dev_gpio_native_System_Device_Gpio_GpioPin::Write(CLR_RT_Hea CPU_GPIO_SetPinState(pinNumber, pinValue); // fire event if there are callbacks registered - if (gpioPin[FIELD___callbacks].Dereference() != NULL) + if (gpioPin[FIELD___callbacks].Dereference() != nullptr) { PostManagedEvent(EVENT_GPIO, 0, (uint16_t)pinNumber, (uint32_t)pinValue); } diff --git a/src/System.Device.Spi/nanoHAL_Spi.cpp b/src/System.Device.Spi/nanoHAL_Spi.cpp index 24cb0e6733..2a5a9f6888 100644 --- a/src/System.Device.Spi/nanoHAL_Spi.cpp +++ b/src/System.Device.Spi/nanoHAL_Spi.cpp @@ -377,7 +377,7 @@ HRESULT nanoSPI_OpenDeviceEx( false, 0, spiDeviceConfig.DataIs16bits, - NULL, + nullptr, spiDeviceConfig.DeviceChipSelect, spiDeviceConfig.ChipSelectActiveState}; uint8_t buffer[2] = {0, 0}; diff --git a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp index 593060ac12..c8958a14dd 100644 --- a/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp +++ b/src/System.Device.Spi/sys_dev_spi_native_System_Device_Spi_SpiDevice.cpp @@ -76,10 +76,10 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - uint8_t *writeData = NULL; - uint8_t *readData = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; + uint8_t *writeData = nullptr; + uint8_t *readData = nullptr; int16_t writeSize = 0; int16_t readSize = 0; int16_t readOffset = 0; @@ -93,7 +93,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( CLR_INT64 *timeout; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); CLR_RT_HeapBlock *connectionSettings; FAULT_ON_NULL(pThis); @@ -107,7 +107,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( if (data16Bits) { writeBuffer = stack.Arg1().DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // grab the pointer to the array by getting the first element of the array writeData = (unsigned char *)writeBuffer->GetFirstElementUInt16(); @@ -120,7 +120,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( } readBuffer = stack.Arg2().DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // grab the pointer to the array by getting the first element of the array readData = (unsigned char *)readBuffer->GetFirstElementUInt16(); @@ -136,11 +136,11 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( { // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole // array @@ -155,18 +155,18 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( } } - if (writeData == NULL) + if (writeData == nullptr) { // nothing to write, have to zero this writeSize = 0; } readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -180,7 +180,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( } } - if (readData == NULL) + if (readData == nullptr) { // nothing to read, have to zero this readSize = 0; @@ -280,7 +280,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( stack.PopValue(); // null pointers and vars - pThis = NULL; + pThis = nullptr; } NANOCLR_CLEANUP(); @@ -288,12 +288,12 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeTransfer( if (hr != CLR_E_THREAD_WAITING) { // unpin buffers - if (writeBuffer != NULL && writeBuffer->IsPinned()) + if (writeBuffer != nullptr && writeBuffer->IsPinned()) { writeBuffer->Unpin(); } - if (readBuffer != NULL && readBuffer->IsPinned()) + if (readBuffer != nullptr && readBuffer->IsPinned()) { readBuffer->Unpin(); } @@ -308,9 +308,9 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::NativeOpenDevice uint32_t handle = -1; SPI_DEVICE_CONFIGURATION spiConfig; - CLR_RT_HeapBlock *config = NULL; + CLR_RT_HeapBlock *config = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -364,7 +364,7 @@ HRESULT Library_sys_dev_spi_native_System_Device_Spi_SpiDevice::DisposeNative___ { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); // get device handle diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp index 438de4d24f..acfaf6fa95 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_Directory.cpp @@ -11,7 +11,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST NATIVE_PROFILE_CLR_IO(); NANOCLR_HEADER(); - FileSystemVolume *driver = NULL; + FileSystemVolume *driver = nullptr; char *path; bool isDirectory; char rootNameBuffer[FS_NAME_MAXLENGTH + 1]; @@ -21,7 +21,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST uint32_t rootNameLength = -1; bool found = false; bool *foundP = &found; - void *findHandle = NULL; + void *findHandle = nullptr; int32_t itemsCount = 0; FS_FILEINFO fileData; @@ -75,7 +75,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST const char *fileName = (const char *)fileData.FileName; const char *extension = strrchr(fileName, '.'); - if (extension == NULL || strcmp(extension, ".sys") != 0) + if (extension == nullptr || strcmp(extension, ".sys") != 0) { // file does not have a .sys extension, maybe OK to add to list // now check other attributes @@ -92,7 +92,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST } // free memory for the file name - if (fileData.FileName != NULL) + if (fileData.FileName != nullptr) { platform_free(fileData.FileName); } @@ -143,7 +143,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST { const char *fileName = (const char *)fileData.FileName; const char *extension = strrchr(fileName, '.'); - if (extension != NULL && strcmp(extension, ".sys") == 0) + if (extension != nullptr && strcmp(extension, ".sys") == 0) { // file has a .sys extension, skip it continue; @@ -176,7 +176,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST } // free memory for the file name - if (fileData.FileName != NULL) + if (fileData.FileName != nullptr) { platform_free(fileData.FileName); } @@ -185,14 +185,14 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST NANOCLR_CLEANUP(); - // close find handle (watch out for NULL handle) - if (findHandle != NULL) + // close find handle (watch out for nullptr handle) + if (findHandle != nullptr) { driver->FindClose(findHandle); } // free memory for the file name - if (fileData.FileName != NULL) + if (fileData.FileName != nullptr) { platform_free(fileData.FileName); } diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp index 944568609b..69afd0cd91 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_DriveInfo.cpp @@ -47,7 +47,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_DriveInfo::_ctor___VOID__U4(CLR_R volume = FileSystemVolumeList::FindVolume(driveIndex); - if (volume != NULL) + if (volume != nullptr) { NANOCLR_SET_AND_LEAVE(UpdateVolumeInfo(stack.This(), volume)); } @@ -102,7 +102,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_DriveInfo::GetDrivesNative___STAT uint32_t volumeCount = FileSystemVolumeList::GetNumVolumes(); FileSystemVolume *currentVolume; - // CLR_RT_HeapBlock *volume = NULL; + // CLR_RT_HeapBlock *volume = nullptr; CLR_RT_HeapBlock *hbVolumes; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp index 863ee56762..5e3b23f592 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_File.cpp @@ -20,7 +20,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_File::ExistsNative___STATIC__BOOL bool exists = false; FRESULT operationResult; - char *filePath = NULL; + char *filePath = nullptr; FAULT_ON_NULL(workingPath); FAULT_ON_NULL(fileName); @@ -29,7 +29,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_File::ExistsNative___STATIC__BOOL filePath = (char *)platform_malloc(FF_LFN_BUF + 1); // sanity check for successful malloc - if (filePath == NULL) + if (filePath == nullptr) { // failed to allocate memory NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); @@ -77,7 +77,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_File::ExistsNative___STATIC__BOOL NANOCLR_CLEANUP(); // free buffer memory, if allocated - if (filePath != NULL) + if (filePath != nullptr) { platform_free(filePath); } diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFileStream.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFileStream.cpp index 2ccf6657b8..a96cb4270c 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFileStream.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFileStream.cpp @@ -193,7 +193,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeFileStream::Close___VOID(CL NANOCLR_CLEANUP(); - pThis[FIELD___fs].SetObjectReference(NULL); + pThis[FIELD___fs].SetObjectReference(nullptr); NANOCLR_CLEANUP_END(); } @@ -203,9 +203,9 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeFileStream::ReadWriteHelper NATIVE_PROFILE_CLR_IO(); NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array *bufHB = NULL; + CLR_RT_HeapBlock_Array *bufHB = nullptr; CLR_RT_FileStream *fs; - CLR_RT_HeapBlock *nativeFileStreamHB = NULL; + CLR_RT_HeapBlock *nativeFileStreamHB = nullptr; uint8_t *buffer; int32_t bufferLength; @@ -284,7 +284,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeFileStream::ReadWriteHelper switch (fs->GetBufferingStrategy()) { case DIRECT_IO: - fs->AssignStorage(buffer, count, NULL, 0); + fs->AssignStorage(buffer, count, nullptr, 0); bufHB->Pin(); break; diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFindFile.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFindFile.cpp index 3ca06f9d17..af1f64199e 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFindFile.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeFindFile.cpp @@ -18,8 +18,8 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeFindFile::GetFileInfo___STA FS_FILEINFO fileInfo; bool found; - char *path = NULL; - FileSystemVolume *driver = NULL; + char *path = nullptr; + FileSystemVolume *driver = nullptr; CLR_RT_HeapBlock &top = stack.PushValueAndClear(); @@ -42,11 +42,11 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeFindFile::GetFileInfo___STA managedNativeFileInfo[NativeFileInfo::FIELD__Attributes].SetInteger((CLR_UINT32)fileInfo.Attributes); managedNativeFileInfo[NativeFileInfo::FIELD__Size].SetInteger((CLR_INT64)fileInfo.Size); - managedNativeFileInfo[NativeFileInfo::FIELD__FileName].SetObjectReference(NULL); + managedNativeFileInfo[NativeFileInfo::FIELD__FileName].SetObjectReference(nullptr); } else { - top.SetObjectReference(NULL); + top.SetObjectReference(nullptr); } NANOCLR_NOCLEANUP(); diff --git a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeIO.cpp b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeIO.cpp index 6caf02d21a..55058bf6ee 100644 --- a/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeIO.cpp +++ b/src/System.IO.FileSystem/nf_sys_io_filesystem_System_IO_NativeIO.cpp @@ -11,7 +11,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeIO::Delete___STATIC__VOID__ NATIVE_PROFILE_CLR_IO(); NANOCLR_HEADER(); - FileSystemVolume *driver = NULL; + FileSystemVolume *driver = nullptr; char pathBuffer[FS_MAX_PATH_LENGTH + 1]; char *path = pathBuffer; bool recursive = stack.Arg1().NumericByRef().u1 != 0; @@ -35,8 +35,8 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeIO::Move___STATIC__BOOLEAN_ char *path2 = path2Buffer; bool moveResult = false; - FileSystemVolume *driver1 = NULL; - FileSystemVolume *driver2 = NULL; + FileSystemVolume *driver1 = nullptr; + FileSystemVolume *driver2 = nullptr; NANOCLR_CHECK_HRESULT(FindVolume(stack.Arg0(), driver1, path1)); NANOCLR_CHECK_HRESULT(FindVolume(stack.Arg1(), driver2, path2)); @@ -132,8 +132,8 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeIO::Format___STATIC__VOID__ char pathBuffer[FS_MAX_PATH_LENGTH + 1]; char *path = pathBuffer; FileSystemVolume *driver; - FILESYSTEM_DRIVER_INTERFACE *originalFS = NULL; - STREAM_DRIVER_INTERFACE *originalStream = NULL; + FILESYSTEM_DRIVER_INTERFACE *originalFS = nullptr; + STREAM_DRIVER_INTERFACE *originalStream = nullptr; bool needInitialize = FALSE; NANOCLR_CHECK_HRESULT(FindVolume(stack.Arg0(), driver, path)); @@ -225,7 +225,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeIO::FindVolume( rootNameLength = hal_strlen_s(rootName); // Retrieve appropriate driver that handles this namespace - if ((volume = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == NULL) + if ((volume = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_VOLUME_NOT_FOUND); } @@ -257,7 +257,7 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_NativeIO::FindVolume( NANOCLR_CHECK_HRESULT(CLR_RT_FileStream::SplitFilePath(fullPath, rootName, rootNameLength, relativePath)); // Retrieve appropriate driver that handles this root name - if ((volume = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == NULL) + if ((volume = FileSystemVolumeList::FindVolume(rootName, rootNameLength)) == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_DRIVER); } diff --git a/src/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort__.cpp b/src/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort__.cpp index 6d2c1b2da8..b460b5f090 100644 --- a/src/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort__.cpp +++ b/src/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort__.cpp @@ -29,8 +29,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::SetupWriteLine( // get pointer to string text = stack.Arg1().RecoverString(); - // check for NULL string - if (text != NULL) + // check for nullptr string + if (text != nullptr) { // get length textLength = hal_strlen_s(text); @@ -96,12 +96,12 @@ bool Library_sys_io_ser_native_System_IO_Ports_SerialPort::GetLineFromRxBuffer( uint32_t newLineIndex = 0; int32_t compareIndex = 0; uint8_t *buffer; - uint8_t *comparison = NULL; + uint8_t *comparison = nullptr; uint32_t matchCount = 0; uint32_t index = 0; // clear line - line = NULL; + line = nullptr; // check for anything in the buffer if (ringBuffer->Length() > 0) @@ -109,7 +109,7 @@ bool Library_sys_io_ser_native_System_IO_Ports_SerialPort::GetLineFromRxBuffer( // get "new line" from field newLine = serialDevice[FIELD___newLine].RecoverString(); - if (newLine != NULL) + if (newLine != nullptr) { newLineLength = hal_strlen_s(newLine); } @@ -183,7 +183,7 @@ bool Library_sys_io_ser_native_System_IO_Ports_SerialPort::GetLineFromRxBuffer( // the new line char allow enough room in the buffer for for the terminator line = (uint8_t *)platform_malloc(index); - if (line != NULL) + if (line != nullptr) { // pop string AND new line from buffer ringBuffer->Pop(line, index); diff --git a/src/System.Runtime.Serialization/nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter.cpp b/src/System.Runtime.Serialization/nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter.cpp index 3b5c6a3ed4..3e1f3b175d 100644 --- a/src/System.Runtime.Serialization/nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter.cpp +++ b/src/System.Runtime.Serialization/nf_system_runtime_serialization_System_Runtime_Serialization_Formatters_Binary_BinaryFormatter.cpp @@ -49,7 +49,7 @@ HRESULT Library_nf_system_runtime_serialization_System_Runtime_Serialization_For idx.InitializeFromHash(hash); - if (inst.InitializeFromReflection(idx, NULL)) + if (inst.InitializeFromReflection(idx, nullptr)) { res.Dereference() [Library_nf_system_runtime_serialization_System_Runtime_Serialization_SerializationException:: diff --git a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp index 466af7eee6..de5a7e8c0b 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Graphics.cpp @@ -110,7 +110,7 @@ HRESULT CLR_GFX_Bitmap::CreateInstance( NANOCLR_HEADER(); CLR_RT_HeapBlock refUncompressed; - refUncompressed.SetObjectReference(NULL); + refUncompressed.SetObjectReference(nullptr); CLR_GFX_Bitmap *bitmap; CLR_GFX_Bitmap *bitmapNative; const CLR_GFX_BitmapDescription *bm; @@ -294,7 +294,7 @@ HRESULT CLR_GFX_Bitmap::DeleteInstance(CLR_RT_HeapBlock &ref) break; } - ref.SetObjectReference(NULL); + ref.SetObjectReference(nullptr); NANOCLR_NOCLEANUP(); } diff --git a/src/nanoFramework.Graphics/Graphics/Core/GraphicsDriver.cpp b/src/nanoFramework.Graphics/Graphics/Core/GraphicsDriver.cpp index 9c236c57cb..6944d542ee 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/GraphicsDriver.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/GraphicsDriver.cpp @@ -254,12 +254,12 @@ void GraphicsDriver::DrawRectangleNative( int xSrc = 0, ySrc = 0; // If the outset rect is completely outside of the drawing region, we can safely return (inset rect is always inside // the outset rect) - if (ClipToVisible(bitmap, outsetX, outsetY, outsetWidth, outsetHeight, NULL, xSrc, ySrc) == false) + if (ClipToVisible(bitmap, outsetX, outsetY, outsetWidth, outsetHeight, nullptr, xSrc, ySrc) == false) return; // If the inset rectangle is completely outside of the drawing region, the insetWidth and insetHeight would be set // to 0 (We have to keep going because the outset rect is at least partly visible) - ClipToVisible(bitmap, insetX, insetY, insetWidth, insetHeight, NULL, xSrc, ySrc); + ClipToVisible(bitmap, insetX, insetY, insetWidth, insetHeight, nullptr, xSrc, ySrc); // Outline if (pen.thickness > 0) @@ -314,7 +314,7 @@ void GraphicsDriver::FillRectangleNative(const PAL_GFX_Bitmap &bitmap, GFX_Brush int height = rectangle.Height(); int xSrc = 0, ySrc = 0; - if (ClipToVisible(bitmap, x, y, width, height, NULL, xSrc, ySrc) == false) + if (ClipToVisible(bitmap, x, y, width, height, nullptr, xSrc, ySrc) == false) { return; } @@ -588,7 +588,7 @@ void GraphicsDriver::Draw4PointsRoundedRect(const PAL_GFX_Bitmap &bitmap, int of { Draw4PointsRoundedRectParams *p = (Draw4PointsRoundedRectParams *)params; - if (p->pen != NULL) + if (p->pen != nullptr) { if (p->pen->thickness < 2) { @@ -669,14 +669,14 @@ void GraphicsDriver::DrawEllipseNative( /// If Fill is expected, then do fill part first before drawing outline. if (brush.opacity != PAL_GFX_Bitmap::c_OpacityTransparent) { - params.pen = NULL; + params.pen = nullptr; params.brush = &brush; params.lastFillOffsetY = -1; EllipseAlgorithm(bitmap, radiusX, radiusY, ¶ms, &Draw4PointsEllipse); } params.pen = &pen; - params.brush = NULL; + params.brush = nullptr; EllipseAlgorithm(bitmap, radiusX, radiusY, ¶ms, &Draw4PointsEllipse); } @@ -687,7 +687,7 @@ void GraphicsDriver::Draw4PointsEllipse(const PAL_GFX_Bitmap &bitmap, int offset int centerX = p->centerX; int centerY = p->centerY; - if (p->pen != NULL) + if (p->pen != nullptr) { if (p->pen->thickness < 2) { @@ -708,7 +708,7 @@ void GraphicsDriver::Draw4PointsEllipse(const PAL_GFX_Bitmap &bitmap, int offset } } - if (p->brush != NULL) + if (p->brush != nullptr) { int opacity = p->brush->opacity; @@ -1098,7 +1098,7 @@ bool GraphicsDriver::ClipToVisible( int &xSrc, int &ySrc) { - if (pSrc != NULL) + if (pSrc != nullptr) { if (xSrc < 0 || ySrc < 0) return false; @@ -1508,7 +1508,7 @@ void GraphicsDriver::SetPixelsHelper( if (config & PAL_GFX_Bitmap::c_SetPixelsConfig_Clip) { - if (g_GraphicsDriver.ClipToVisible(bitmap, x, y, width, height, NULL, xSrc, ySrc) == FALSE) + if (g_GraphicsDriver.ClipToVisible(bitmap, x, y, width, height, nullptr, xSrc, ySrc) == FALSE) return; } diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Fonts/Font.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Fonts/Font.cpp index 53991dc97c..cd5462cd79 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Fonts/Font.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Fonts/Font.cpp @@ -100,7 +100,7 @@ HRESULT CLR_GFX_Font::CreateInstance(CLR_RT_HeapBlock &ref, const CLR_UINT8 *dat NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_BinaryBlob::CreateInstance( ref, sizeof(CLR_GFX_Font), - NULL, + nullptr, CLR_GFX_Font::RelocationHandler, CLR_RT_HeapBlock::HB_CompactOnFailure)); @@ -300,7 +300,7 @@ void CLR_GFX_Font::DrawChar( } else { - param.antiAlias = NULL; + param.antiAlias = nullptr; config = PAL_GFX_Bitmap::c_SetPixelsConfig_Clip; } bitmap->SetPixelsHelper(rect, config, &DrawCharHelper, ¶m); @@ -317,7 +317,7 @@ void CLR_GFX_Font::CountCharactersInWidth( { CLR_RT_UnicodeHelper uh; CLR_UINT16 buf[3]; - LPCSTR breakPoint = NULL; + LPCSTR breakPoint = nullptr; CLR_UINT16 lastChar = 0; int breakWidth = 0; int breakIndex = 0; @@ -468,7 +468,7 @@ void CLR_GFX_Font::GetCharInfo(CLR_UINT16 c, CLR_GFX_FontCharacterInfo &chrEx) } else { - chrEx.antiAlias = NULL; + chrEx.antiAlias = nullptr; chrEx.iAntiAlias = 1; } } diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/Gif.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/Gif.cpp index f7834f32d5..4db81a5c47 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/Gif.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/Gif.cpp @@ -11,7 +11,7 @@ HRESULT CLR_GFX_Bitmap::CreateInstanceGif(CLR_RT_HeapBlock &ref, const CLR_UINT8 NANOCLR_HEADER(); GifDecoder *decoder; - CLR_GFX_Bitmap *bitmap = NULL; + CLR_GFX_Bitmap *bitmap = nullptr; CLR_GFX_BitmapDescription bm; // Allocate the decoder diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/GifDecoder.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/GifDecoder.cpp index d430f1ae2c..6b5e078355 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/GifDecoder.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Gif/GifDecoder.cpp @@ -52,7 +52,7 @@ HRESULT GifDecoder::GifStartDecompress(CLR_GFX_Bitmap *bitmap) NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } - if (bitmap == NULL) + if (bitmap == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -130,7 +130,7 @@ HRESULT GifDecoder::ProcessImageChunk() { NANOCLR_HEADER(); - LZWDecompressor *lzwDec = NULL; + LZWDecompressor *lzwDec = nullptr; GifImageDescriptor currentImageDescriptor; NANOCLR_CHECK_HRESULT(source.Read(¤tImageDescriptor, sizeof(GifImageDescriptor))); diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/Jpeg.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/Jpeg.cpp index c1d6ef9a0a..fab04e2713 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/Jpeg.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/Jpeg.cpp @@ -44,11 +44,11 @@ HRESULT CLR_GFX_Bitmap::CreateInstanceJpeg(CLR_RT_HeapBlock &ref, const CLR_UINT NANOCLR_HEADER(); jpeg_decompress_struct cinfo; - CLR_GFX_Bitmap *bitmap = NULL; + CLR_GFX_Bitmap *bitmap = nullptr; CreateInstanceJpegHelperParam param; GFX_Rect rect; - param.curBuffer = NULL; + param.curBuffer = nullptr; // Set up the error handling JPEGErrorManager errorManager; diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp index 85fca186f8..4b73fa1569 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp @@ -19,7 +19,7 @@ extern "C" // elimnate error due to redefinition of these in the targetHAL.h #undef TRUE #undef FALSE -#undef NULL +#undef nullptr } diff --git a/src/nanoFramework.Graphics/Graphics/Displays/Generic_SPI.cpp b/src/nanoFramework.Graphics/Graphics/Displays/Generic_SPI.cpp index 0e72449eb5..d0992d82b9 100644 --- a/src/nanoFramework.Graphics/Graphics/Displays/Generic_SPI.cpp +++ b/src/nanoFramework.Graphics/Graphics/Displays/Generic_SPI.cpp @@ -179,7 +179,7 @@ bool DisplayDriver::ChangeOrientation(DisplayOrientation orientation) switch (orientation) { case DisplayOrientation::DisplayOrientation_Portrait: - if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationPortrait != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationPortrait != nullptr) { Attributes.Height = Attributes.LongerSide; Attributes.Width = Attributes.ShorterSide; @@ -189,7 +189,7 @@ bool DisplayDriver::ChangeOrientation(DisplayOrientation orientation) break; case DisplayOrientation::DisplayOrientation_Portrait180: - if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationPortrait180 != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationPortrait180 != nullptr) { Attributes.Height = Attributes.LongerSide; Attributes.Width = Attributes.ShorterSide; @@ -199,7 +199,7 @@ bool DisplayDriver::ChangeOrientation(DisplayOrientation orientation) break; case DisplayOrientation::DisplayOrientation_Landscape: - if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationLandscape != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationLandscape != nullptr) { Attributes.Height = Attributes.ShorterSide; Attributes.Width = Attributes.LongerSide; @@ -209,7 +209,7 @@ bool DisplayDriver::ChangeOrientation(DisplayOrientation orientation) break; case DisplayOrientation::DisplayOrientation_Landscape180: - if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationLandscape180 != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.OrientationLandscape180 != nullptr) { Attributes.Height = Attributes.ShorterSide; Attributes.Width = Attributes.LongerSide; @@ -235,14 +235,14 @@ void DisplayDriver::PowerSave(PowerSaveState powerState) default: // Illegal fall through to Power on case PowerSaveState::NORMAL: - if (g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeNormal != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeNormal != nullptr) { ProcessCommand(g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeNormal); } break; case PowerSaveState::SLEEP: - if (g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeSleep != NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeSleep != nullptr) { ProcessCommand(g_DisplayInterfaceConfig.GenericDriverCommands.PowerModeSleep); } @@ -254,7 +254,7 @@ void DisplayDriver::PowerSave(PowerSaveState powerState) void DisplayDriver::Clear() { // Default behavior - if (g_DisplayInterfaceConfig.GenericDriverCommands.Clear == NULL) + if (g_DisplayInterfaceConfig.GenericDriverCommands.Clear == nullptr) { SetWindow(0, 0, Attributes.Width - 1, Attributes.Height - 1); diff --git a/src/nanoFramework.Graphics/Graphics/Displays/Spi_To_Display.cpp b/src/nanoFramework.Graphics/Graphics/Displays/Spi_To_Display.cpp index 73cb34ff6d..1a8caa9779 100644 --- a/src/nanoFramework.Graphics/Graphics/Displays/Spi_To_Display.cpp +++ b/src/nanoFramework.Graphics/Graphics/Displays/Spi_To_Display.cpp @@ -205,7 +205,7 @@ void InternalSendBytes(CLR_UINT8 *data, CLR_UINT32 length, bool sendAsync) wrc.DeviceChipSelect = spiChipSelect; wrc.ChipSelectActiveState = spiChipSelectActiveState; - nanoSPI_Write_Read(spiDeviceHandle, wrc, data, length, NULL, 0); + nanoSPI_Write_Read(spiDeviceHandle, wrc, data, length, nullptr, 0); return; } diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp index 2303ef1b94..aad1df48bb 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Bitmap.cpp @@ -243,7 +243,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Bitmap:: } else { - hbText.SetObjectReference(NULL); + hbText.SetObjectReference(nullptr); } hbXRelStart.SetInteger((CLR_INT32)xRelStart); @@ -805,11 +805,11 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Bitmap::GetPixelInt___U4 HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Bitmap::GetBitmap___SZARRAY_U1(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_RT_HeapBlock_Array *imageDataHB = NULL; - CLR_GFX_Bitmap *bitmap = NULL; - CLR_UINT32 *imageData = NULL; - CLR_UINT32 *row = NULL; - CLR_UINT32 *pixel = NULL; + CLR_RT_HeapBlock_Array *imageDataHB = nullptr; + CLR_GFX_Bitmap *bitmap = nullptr; + CLR_UINT32 *imageData = nullptr; + CLR_UINT32 *row = nullptr; + CLR_UINT32 *pixel = nullptr; int stride = 0; CLR_GFX_BitmapDescription bm; @@ -1147,17 +1147,17 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Bitmap::Dispose___VOID__ CLR_RT_HeapBlock *pThis = stack.This(); - if (pThis[CLR_GFX_Bitmap::FIELD__m_bitmap].Dereference() == NULL) + if (pThis[CLR_GFX_Bitmap::FIELD__m_bitmap].Dereference() == nullptr) { NANOCLR_SET_AND_LEAVE(S_OK); } NANOCLR_CHECK_HRESULT(CLR_GFX_Bitmap::DeleteInstance(pThis[FIELD__m_bitmap])); - pThis[FIELD__m_bitmap].SetObjectReference(NULL); + pThis[FIELD__m_bitmap].SetObjectReference(nullptr); // Code from another version ? // NANOCLR_CHECK_HRESULT(CLR_GFX_Bitmap::DeleteInstance(pThis[CLR_GFX_Bitmap::FIELD__m_bitmap])); - // pThis[CLR_GFX_Bitmap::FIELD__m_bitmap].SetObjectReference(NULL); + // pThis[CLR_GFX_Bitmap::FIELD__m_bitmap].SetObjectReference(nullptr); NANOCLR_NOCLEANUP(); } diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_DisplayControl.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_DisplayControl.cpp index 0a13c41555..967cd4772b 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_DisplayControl.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_DisplayControl.cpp @@ -138,7 +138,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_DisplayControl:: displayConfig.Screen.height = screenconfig[ScreenConfiguration::FIELD___height].NumericByRef().u2; graphicDriver = screenconfig[ScreenConfiguration::FIELD___graphicDriver].Dereference(); - if (graphicDriver != NULL) + if (graphicDriver != nullptr) { displayConfig.GenericDriverCommands.Width = graphicDriver[GraphicDriver::FIELD___width].NumericByRef().u4; displayConfig.GenericDriverCommands.Height = graphicDriver[GraphicDriver::FIELD___height].NumericByRef().u4; diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Font.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Font.cpp index 1a4e57de72..03ea18c9ef 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Font.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Font.cpp @@ -174,7 +174,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Font::ComputeExtent___VO FAULT_ON_NULL(szText); kerning = pArgs[3].NumericByRef().s4; - width = font->StringOut(szText, -1, kerning, NULL, 0, 0, 0); + width = font->StringOut(szText, -1, kerning, nullptr, 0, 0, 0); hbWidth.SetInteger((CLR_INT32)width); NANOCLR_CHECK_HRESULT(hbWidth.StoreToReference(pArgs[1], 0)); @@ -218,7 +218,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Font:: yRelStart, renderWidth, renderHeight, - NULL, + nullptr, 0, 0, availableWidth, diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Ink.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Ink.cpp index 9eaab4bd9e..d4775ebeff 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Ink.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_Ink.cpp @@ -12,22 +12,22 @@ extern InkDriver g_InkDriver; // Save a copy of the bimapped used by inking -static CLR_RT_HeapBlock *m_InkPinnedBitmap = NULL; +static CLR_RT_HeapBlock *m_InkPinnedBitmap = nullptr; HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Ink:: SetInkRegion___STATIC__VOID__U4__I4__I4__I4__I4__I4__I4__I4__nanoFrameworkUIBitmap(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - CLR_GFX_Bitmap *bitmap = NULL; - PAL_GFX_Bitmap *palBmp = NULL; + CLR_GFX_Bitmap *bitmap = nullptr; + PAL_GFX_Bitmap *palBmp = nullptr; CLR_RT_HeapBlock *pArgs = &stack.Arg0(); - if (m_InkPinnedBitmap != NULL) + if (m_InkPinnedBitmap != nullptr) { m_InkPinnedBitmap->Unpin(); - m_InkPinnedBitmap = NULL; + m_InkPinnedBitmap = nullptr; } InkRegionInfo inkRegionInfo; @@ -42,7 +42,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Ink:: m_InkPinnedBitmap = pArgs[8].Dereference(); - if (m_InkPinnedBitmap != NULL) + if (m_InkPinnedBitmap != nullptr) { // we are drawing on the object in the PAL therefore it should not move m_InkPinnedBitmap->Pin(); @@ -65,7 +65,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_Ink:: inkRegionInfo.Bmp = palBmp; - if (palBmp == NULL) + if (palBmp == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfiguration.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfiguration.cpp index f11207eb0f..04922a3cc8 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfiguration.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfiguration.cpp @@ -20,7 +20,7 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfigurat CLR_RT_HeapBlock_Array *sx; CLR_RT_HeapBlock_Array *sy; int count = 0; - CLR_RT_HeapBlock *pArgs = NULL; + CLR_RT_HeapBlock *pArgs = nullptr; CLR_RT_HeapBlock *pArgs0 = &(stack.Arg0()); NANOCLR_CHECK_HRESULT(hbCount.LoadFromReference(pArgs0[0])); count = hbCount.NumericByRef().s4; @@ -112,4 +112,4 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchCollectorConfigurat NANOCLR_CHECK_HRESULT(g_TouchPanelDriver.GetSetTouchInfo(flags, ¶m1, ¶m2, ¶m3)); NANOCLR_NOCLEANUP(); -} \ No newline at end of file +} diff --git a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp index aeccdbfca1..801d5155cd 100644 --- a/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp +++ b/src/nanoFramework.Graphics/Graphics/Native/nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor.cpp @@ -17,9 +17,9 @@ HRESULT Library_nanoFramework_Graphics_nanoFramework_UI_TouchEventProcessor:: CLR_UINT32 data1 = stack.Arg1().NumericByRef().u4; CLR_UINT32 numTouches = data1 >> 16; TouchPoint *touchPoint = (TouchPoint *)stack.Arg2().NumericByRef().u4; - CLR_RT_HeapBlock *touchEvent = NULL; - CLR_RT_HeapBlock_Array *touchInputArray = NULL; - CLR_RT_HeapBlock *touchInputObject = NULL; + CLR_RT_HeapBlock *touchEvent = nullptr; + CLR_RT_HeapBlock_Array *touchInputArray = nullptr; + CLR_RT_HeapBlock *touchInputObject = nullptr; // Create a nanoFramework.UI.TouchEvent object to return CLR_RT_HeapBlock &resultObject = stack.PushValue(); diff --git a/src/nanoFramework.Graphics/TouchPanel/Core/Gestures.cpp b/src/nanoFramework.Graphics/TouchPanel/Core/Gestures.cpp index 0ca7c808b1..4b3e55805c 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Core/Gestures.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Core/Gestures.cpp @@ -234,7 +234,7 @@ void GestureDriver::ResetRecognition() void GestureDriver::GestureContinuationRoutine(void* arg) { - if (arg == NULL) {}; // avoid unused parameter, maybe used in the future + if (arg == nullptr) {}; // avoid unused parameter, maybe used in the future HRESULT hr = S_OK; CLR_UINT32 flags = (m_index << 16) | GetTouchPointFlags_NextPoint | GetTouchPointFlags_UseTime | GetTouchPointFlags_UseSource; CLR_UINT16 source = 0; diff --git a/src/nanoFramework.Graphics/TouchPanel/Core/Ink.cpp b/src/nanoFramework.Graphics/TouchPanel/Core/Ink.cpp index c30d393a88..db6aa533f0 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Core/Ink.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Core/Ink.cpp @@ -22,7 +22,7 @@ HRESULT InkDriver::Initialize() g_InkDriver.m_InkCompletion.InitializeForUserMode(InkContinuationRoutine); m_initialized = true; m_InkingActive = false; - m_InkRegionInfo.Bmp = NULL; + m_InkRegionInfo.Bmp = nullptr; m_ScreenBmp.width = g_DisplayDriver.Attributes.Width; m_ScreenBmp.height = g_DisplayDriver.Attributes.Height; // m_ScreenBmp.data = Display::GetFrameBuffer(); @@ -56,7 +56,7 @@ HRESULT InkDriver::SetRegion(InkRegionInfo *inkRegionInfo) m_ScreenBmp.clipping.top = m_InkRegionInfo.Y1 + m_InkRegionInfo.BorderWidth; m_ScreenBmp.clipping.bottom = m_InkRegionInfo.Y2 - m_InkRegionInfo.BorderWidth; - if (m_InkRegionInfo.Bmp == NULL) + if (m_InkRegionInfo.Bmp == nullptr) { m_InkRegionInfo.Bmp = &m_ScreenBmp; } @@ -97,7 +97,7 @@ HRESULT InkDriver::ResetRegion() m_InkCompletion.Abort(); m_InkingActive = false; - m_InkRegionInfo.Bmp = NULL; + m_InkRegionInfo.Bmp = nullptr; return S_OK; } @@ -109,7 +109,7 @@ void InkDriver::InkContinuationRoutine(void *arg) void InkDriver::DrawInk(void *arg) { - if (arg == NULL) + if (arg == nullptr) { }; // Avoid unused parameter, maybe we need it in the future? HRESULT hr = S_OK; @@ -132,7 +132,7 @@ void InkDriver::DrawInk(void *arg) if (m_lastx != 0xFFFF) { g_GraphicsDriver.DrawLineRaw(m_ScreenBmp, m_InkRegionInfo.Pen, m_lastx, m_lasty, x, y); - if (m_InkRegionInfo.Bmp != NULL) + if (m_InkRegionInfo.Bmp != nullptr) { g_GraphicsDriver .DrawLine(*(m_InkRegionInfo.Bmp), m_InkRegionInfo.Pen, m_lastx - dx, m_lasty - dy, x - dx, y - dy); @@ -150,4 +150,4 @@ void InkDriver::DrawInk(void *arg) if (!m_InkCompletion.IsLinked()) m_InkCompletion.EnqueueDelta(INK_COMPLETION_TIME_USEC); } -} \ No newline at end of file +} diff --git a/src/nanoFramework.Graphics/TouchPanel/Core/TouchPanel.cpp b/src/nanoFramework.Graphics/TouchPanel/Core/TouchPanel.cpp index 5009c65715..400356aa2d 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Core/TouchPanel.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Core/TouchPanel.cpp @@ -73,7 +73,7 @@ HRESULT TouchPanelDriver::Initialize() g_TouchPanelDriver.m_runavgCount = 0; g_TouchPanelDriver.m_runavgIndex = 0; - g_TouchPanelDriver.m_startMovePtr = NULL; + g_TouchPanelDriver.m_startMovePtr = nullptr; g_TouchPanelDriver.m_touchMoveIndex = 0; @@ -88,7 +88,7 @@ HRESULT TouchPanelDriver::Initialize() return CLR_E_FAIL; } - g_TouchPanelDriver.m_touchCompletion.InitializeForISR(TouchPanelDriver::TouchCompletion, NULL); + g_TouchPanelDriver.m_touchCompletion.InitializeForISR(TouchPanelDriver::TouchCompletion, nullptr); /// At this point we should be ready to recieve touch inputs. return S_OK; @@ -131,7 +131,7 @@ void TouchPanelDriver::TouchPanelCalibratePoint(CLR_INT32 UncalX, CLR_INT32 Unca HRESULT TouchPanelDriver::GetDeviceCaps(unsigned int iIndex, void *lpOutput) { - if (lpOutput == NULL) + if (lpOutput == nullptr) { return FALSE; } @@ -194,7 +194,7 @@ HRESULT TouchPanelDriver::SetCalibration(int pointCount, CLR_INT16 *sx, CLR_INT1 void TouchPanelDriver::TouchCompletion(void *arg) { - if (arg == NULL) + if (arg == nullptr) { }; // Avoid the unused parameter, and maybe in future is it needed? /// Completion routine, called in every 10ms or so, when we are actively sampling stylus. @@ -225,7 +225,7 @@ void TouchPanelDriver::PollTouchPoint() /// Driver should be doing all filter/averaging of the points. TouchPanelCalibratePoint(ux, uy, &x, &y); - TouchPoint *point = NULL; + TouchPoint *point = nullptr; if ((g_TouchPanelDriver.m_InternalFlags & Contact_Down) && (!(g_TouchPanelDriver.m_InternalFlags & Contact_WasDown))) @@ -240,7 +240,7 @@ void TouchPanelDriver::PollTouchPoint() /// Stylus down. PalEventDriver::PostEvent(PAL_EVENT_TOUCH, TouchPanelStylusDown); - if (NULL != (point = AddTouchPoint(0, x, y, time, ignoreDuplicates))) + if (nullptr != (point = AddTouchPoint(0, x, y, time, ignoreDuplicates))) { PostManagedEvent(EVENT_TOUCH, TouchPanelStylusDown, 1, (CLR_UINT32)point); } @@ -260,9 +260,9 @@ void TouchPanelDriver::PollTouchPoint() (g_TouchPanelDriver.m_InternalFlags & Contact_WasDown)) { /// Stylus Move. - if (NULL != (point = AddTouchPoint(0, x, y, time, ignoreDuplicates))) + if (nullptr != (point = AddTouchPoint(0, x, y, time, ignoreDuplicates))) { - if (m_startMovePtr == NULL) + if (m_startMovePtr == nullptr) { m_startMovePtr = point; m_touchMoveIndex = 1; @@ -279,7 +279,7 @@ void TouchPanelDriver::PollTouchPoint() m_touchMoveIndex, (CLR_UINT32)m_startMovePtr); - m_startMovePtr = NULL; + m_startMovePtr = nullptr; m_touchMoveIndex = 0; } else if (m_startMovePtr != point) @@ -290,7 +290,7 @@ void TouchPanelDriver::PollTouchPoint() } // we will get here if the stylus is in a TouchDown state but hasn't moved, so if we don't have a current // move ptr, then set the start move ptr to the latest point - else if (m_startMovePtr == NULL) + else if (m_startMovePtr == nullptr) { CLR_UINT32 touchflags = GetTouchPointFlags_LatestPoint | GetTouchPointFlags_UseTime | GetTouchPointFlags_UseSource; @@ -330,21 +330,21 @@ void TouchPanelDriver::PollTouchPoint() CLR_UINT32 touchflags = GetTouchPointFlags_LatestPoint | GetTouchPointFlags_UseTime | GetTouchPointFlags_UseSource; - TouchPoint *point = NULL; + TouchPoint *point = nullptr; /// Only send a move event if we have substantial data (more than two items) otherwise, the /// TouchUp event should suffice - if (m_touchMoveIndex > 2 && m_startMovePtr != NULL) + if (m_touchMoveIndex > 2 && m_startMovePtr != nullptr) { PostManagedEvent(EVENT_TOUCH, TouchPanelStylusMove, m_touchMoveIndex, (CLR_UINT32)m_startMovePtr); } - m_startMovePtr = NULL; + m_startMovePtr = nullptr; m_touchMoveIndex = 0; if (FAILED(GetTouchPoint(&touchflags, &point))) { - point = NULL; + point = nullptr; } /// Now add special contactup delimeter. @@ -356,7 +356,7 @@ void TouchPanelDriver::PollTouchPoint() g_palEventDriver.PostEvent(PAL_EVENT_TOUCH, TouchPanelStylusUp); // Make a copy of the point for the nanoFramework.UI.Touch handler. - if (point == NULL) + if (point == nullptr) { m_tmpUpTouch.contact = 0; m_tmpUpTouch.time = time; @@ -421,7 +421,7 @@ TouchPoint *TouchPanelDriver::AddTouchPoint( /// Ignore this point if it is too far from last point. if (dist2 > g_TouchPanel_Sampling_Settings.MaxFilterDistance) - return NULL; + return nullptr; } if (g_PAL_RunningAvg_Buffer_Size > 1) @@ -461,7 +461,7 @@ TouchPoint *TouchPanelDriver::AddTouchPoint( CLR_UINT32 dy = abs(y - lastAddedY); if (dx <= 2 && dy <= 2) - return NULL; + return nullptr; } lastAddedX = x; @@ -518,13 +518,13 @@ void TouchPanelDriver::TouchIsrProc(GPIO_PIN pin, bool pinState, void *pArg) HRESULT TouchPanelDriver::GetTouchPoints(int *pointCount, CLR_INT16 *sx, CLR_INT16 *sy) { - if (pointCount == NULL) + if (pointCount == nullptr) { }; // Avoid unused parameter, maybe used in the future? - if (sx == NULL) + if (sx == nullptr) { }; // Avoid unused parameter, maybe used in the future? - if (sy == NULL) + if (sy == nullptr) { }; // Avoid unused parameter, maybe used in the future? diff --git a/src/nanoFramework.Graphics/TouchPanel/Devices/CST816S.cpp b/src/nanoFramework.Graphics/TouchPanel/Devices/CST816S.cpp index 31c12d9288..e61aba0e88 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Devices/CST816S.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Devices/CST816S.cpp @@ -20,7 +20,7 @@ bool TouchDevice::Initialize() bool TouchDevice::Enable(GPIO_INTERRUPT_SERVICE_ROUTINE touchIsrProc) { - if (touchIsrProc == NULL) + if (touchIsrProc == nullptr) { }; @@ -40,4 +40,4 @@ TouchPointDevice TouchDevice::GetPoint() TouchValue.y = 0; return TouchValue; -} \ No newline at end of file +} diff --git a/src/nanoFramework.Graphics/TouchPanel/Devices/STMPE811QTR_I2C.cpp b/src/nanoFramework.Graphics/TouchPanel/Devices/STMPE811QTR_I2C.cpp index f89c1214b2..6f35df9694 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Devices/STMPE811QTR_I2C.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Devices/STMPE811QTR_I2C.cpp @@ -58,7 +58,7 @@ bool TouchDevice::Enable(GPIO_INTERRUPT_SERVICE_ROUTINE touchIsrProc) GPIO_PIN STMPE811QTR_Interrupt = GPIOI_LCD_INT; PinMode driveMode = PinMode_Input; GPIO_INT_EDGE IntEdge = GPIO_INT_EDGE_HIGH; - void *ISR_Param = NULL; + void *ISR_Param = nullptr; if (CPU_GPIO_ReservePin(GPIOI_LCD_INT, true)) { if (CPU_GPIO_EnableInputPin(STMPE811QTR_Interrupt, 0, touchIsrProc, ISR_Param, IntEdge, driveMode)) diff --git a/src/nanoFramework.Graphics/TouchPanel/Devices/XPT2046.cpp b/src/nanoFramework.Graphics/TouchPanel/Devices/XPT2046.cpp index 841786392b..299ed8e529 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Devices/XPT2046.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Devices/XPT2046.cpp @@ -23,7 +23,7 @@ bool TouchDevice::Initialize() bool TouchDevice::Enable(GPIO_INTERRUPT_SERVICE_ROUTINE touchIsrProc) { - if (touchIsrProc == NULL) + if (touchIsrProc == nullptr) { }; return TRUE; diff --git a/src/nanoFramework.Graphics/TouchPanel/Devices/ft6x06_I2C.cpp b/src/nanoFramework.Graphics/TouchPanel/Devices/ft6x06_I2C.cpp index 8cdc0ae929..1815289f3c 100644 --- a/src/nanoFramework.Graphics/TouchPanel/Devices/ft6x06_I2C.cpp +++ b/src/nanoFramework.Graphics/TouchPanel/Devices/ft6x06_I2C.cpp @@ -53,7 +53,7 @@ bool TouchDevice::Enable(GPIO_INTERRUPT_SERVICE_ROUTINE touchIsrProc) GPIO_PIN FT6206_Interrupt = GPIOI_LCD_INT; PinMode driveMode = PinMode_Input; GPIO_INT_EDGE IntEdge = GPIO_INT_EDGE_HIGH; - void *ISR_Param = NULL; + void *ISR_Param = nullptr; if (CPU_GPIO_ReservePin(GPIOI_LCD_INT, true)) { diff --git a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp index 7311df3da3..a0d6bb412d 100644 --- a/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp +++ b/src/nanoFramework.System.Collections/nf_system_collections_System_Collections_Hashtable.cpp @@ -245,7 +245,7 @@ HRESULT Library_nf_system_collections_System_Collections_Hashtable::InsertNative CLR_RT_TypeDef_Index bucketTypeDef; CLR_RT_HeapBlock newBucket; - if (bucket == NULL) + if (bucket == nullptr) { // find type, don't bother checking the result as it exists for sure g_CLR_RT_TypeSystem.FindTypeDef("Bucket", "System.Collections", bucketTypeDef); diff --git a/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp index 07b0823362..645a87fae1 100644 --- a/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp +++ b/src/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32_stubs.cpp @@ -56,13 +56,13 @@ HRESULT Library_nf_sys_io_hashing_System_IO_Hashing_Crc32::ComputeHash___STATIC_ CLR_RT_HeapBlock *bufferSpanByte; CLR_RT_HeapBlock_Array *buffer; - uint8_t *bufferData = NULL; + uint8_t *bufferData = nullptr; int32_t bufferSize = 0; int32_t bufferOffset = 0; uint32_t crc32 = 0; uint32_t hash = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr bufferSpanByte = stack.Arg1().Dereference(); FAULT_ON_NULL_ARG(bufferSpanByte); diff --git a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp index b356af58c9..5222888e60 100644 --- a/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp +++ b/src/nanoFramework.System.Security.Cryptography/nf_sys_sec_cryptography_System_Security_Cryptography_Aes.cpp @@ -57,8 +57,8 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp size_t outputLength = 0; size_t ivLength = 0; uint16_t passCount = 0; - uint8_t *ivCopy = NULL; - uint8_t *workBuffer = NULL; + uint8_t *ivCopy = nullptr; + uint8_t *workBuffer = nullptr; CLR_RT_HeapBlock_Array *keyArray; CLR_RT_HeapBlock_Array *ivArray; @@ -69,9 +69,9 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp pThis = (CLR_RT_HeapBlock *)stack.This(); FAULT_ON_NULL(pThis); - // grab key and check for NULL + // grab key and check for nullptr keyArray = pThis[FIELD___key].DereferenceArray(); - if (keyArray == NULL) + if (keyArray == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } @@ -80,13 +80,13 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp // (expecting this to be filled with the IV from managed code) ivArray = pThis[FIELD___iv].DereferenceArray(); - // need to check if IV is NULL (AES doesn't require an IV) - if (ivArray != NULL) + // need to check if IV is nullptr (AES doesn't require an IV) + if (ivArray != nullptr) { // need a copy of the IV because it will be modified by mbedtls ivCopy = (uint8_t *)platform_malloc(ivArray->m_numOfElements); - if (ivCopy == NULL) + if (ivCopy == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -96,7 +96,7 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp ivLength = ivArray->m_numOfElements; } - // grab plain text and check for NULL + // grab plain text and check for nullptr plainTextArray = stack.Arg1().DereferenceArray(); FAULT_ON_NULL_ARG(plainTextArray); @@ -127,7 +127,7 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp // need a work buffer to hold the encrypted data workBuffer = (uint8_t *)platform_malloc(plainTextArray->m_numOfElements + cipherInfo->private_block_size); - if (workBuffer == NULL) + if (workBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -178,12 +178,12 @@ HRESULT Library_nf_sys_sec_cryptography_System_Security_Cryptography_Aes::Encryp NANOCLR_CLEANUP(); - if (ivCopy != NULL) + if (ivCopy != nullptr) { platform_free(ivCopy); } - if (workBuffer != NULL) + if (workBuffer != nullptr) { platform_free(workBuffer); } diff --git a/targets/AzureRTOS/ST/_common/targetHAL_ConfigurationManager.cpp b/targets/AzureRTOS/ST/_common/targetHAL_ConfigurationManager.cpp index c9f2d7d087..f3593b3507 100644 --- a/targets/AzureRTOS/ST/_common/targetHAL_ConfigurationManager.cpp +++ b/targets/AzureRTOS/ST/_common/targetHAL_ConfigurationManager.cpp @@ -198,7 +198,7 @@ __nfweak bool ConfigurationManager_GetConfigurationBlock( uint32_t configurationIndex) { int sizeOfBlock = 0; - uint8_t *blockAddress = NULL; + uint8_t *blockAddress = nullptr; // validate if the requested block exists // Count has to be non zero @@ -290,7 +290,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( if (configuration == DeviceConfigurationOption_Network) { - if (g_TargetConfiguration.NetworkInterfaceConfigs == NULL || + if (g_TargetConfiguration.NetworkInterfaceConfigs == nullptr || (g_TargetConfiguration.NetworkInterfaceConfigs->Count == 0 && configurationIndex == 0)) { // there is no network config block, we are storing the default one @@ -325,7 +325,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( #if (TARGET_HAS_WIFI_SUPPORT == 1) - if (g_TargetConfiguration.Wireless80211Configs == NULL || + if (g_TargetConfiguration.Wireless80211Configs == nullptr || (g_TargetConfiguration.Wireless80211Configs->Count == 0 && configurationIndex == 0)) { // there is no wireless 80211 config block, so we are storing the default one @@ -389,7 +389,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.CertificateStore->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.CertificateStore == NULL || + if (g_TargetConfiguration.CertificateStore == nullptr || (g_TargetConfiguration.CertificateStore->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.CertificateStore->Count)) { @@ -402,7 +402,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // now check if memory is erase, so the block can be stored - if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) { // memory not erased, can't store return FALSE; @@ -439,7 +439,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.DeviceCertificates->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.DeviceCertificates == NULL || + if (g_TargetConfiguration.DeviceCertificates == nullptr || (g_TargetConfiguration.DeviceCertificates->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.DeviceCertificates->Count)) { @@ -452,7 +452,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // now check if memory is erase, so the block can be stored - if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) { // memory not erased, can't store return FALSE; @@ -483,7 +483,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // copy the config block content to the config block storage - success = STM32FlashDriver_Write(NULL, storageAddress, blockSize, (unsigned char *)configurationBlock, true); + success = STM32FlashDriver_Write(nullptr, storageAddress, blockSize, (unsigned char *)configurationBlock, true); // enumeration is required after we are DONE with SUCCESSFULLY storing all the config chunks requiresEnumeration = (success && done); @@ -524,7 +524,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // allocate memory from CRT heap uint8_t *configSectorCopy = (uint8_t *)platform_malloc(sizeOfConfigSector); - if (configSectorCopy != NULL) + if (configSectorCopy != nullptr) { // copy config sector from flash to RAM memcpy(configSectorCopy, &__nanoConfig_start__, sizeOfConfigSector); @@ -662,7 +662,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock } // erase config sector - if (STM32FlashDriver_EraseBlock(NULL, (uint32_t)&__nanoConfig_start__) == TRUE) + if (STM32FlashDriver_EraseBlock(nullptr, (uint32_t)&__nanoConfig_start__) == TRUE) { // flash block is erased @@ -677,7 +677,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // copy the config block copy back to the config block storage if (STM32FlashDriver_Write( - NULL, + nullptr, (uint32_t)&__nanoConfig_start__, sizeOfConfigSector, (unsigned char *)configSectorCopy, diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 41ccf8d0b3..ec6a5df500 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -127,7 +127,7 @@ static void I2CWorkingThread_entry(uint32_t arg) palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - NULL, + nullptr, 0, TX_TICKS_PER_MILLISEC(estimatedDurationMiliseconds)); } @@ -157,11 +157,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { NANOCLR_HEADER(); - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock *connectionSettings; uint8_t busIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -180,7 +180,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { #if (STM32_I2C_USE_I2C1 == TRUE) case 1: - if (I2C1_PAL.Driver == NULL) + if (I2C1_PAL.Driver == nullptr) { ConfigPins_I2C1(); @@ -194,7 +194,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C2) && (STM32_I2C_USE_I2C2 == TRUE) case 2: - if (I2C2_PAL.Driver == NULL) + if (I2C2_PAL.Driver == nullptr) { ConfigPins_I2C2(); @@ -208,7 +208,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C3) && (STM32_I2C_USE_I2C3 == TRUE) case 3: - if (I2C3_PAL.Driver == NULL) + if (I2C3_PAL.Driver == nullptr) { ConfigPins_I2C3(); @@ -222,7 +222,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C4) && (STM32_I2C_USE_I2C4 == TRUE) case 4: - if (I2C4_PAL.Driver == NULL) + if (I2C4_PAL.Driver == nullptr) { ConfigPins_I2C4(); @@ -258,8 +258,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI } // clear pointer to working thread - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; NANOCLR_NOCLEANUP(); } @@ -269,11 +269,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock *connectionSettings; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -299,7 +299,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD1); // nulls driver - I2C1_PAL.Driver = NULL; + I2C1_PAL.Driver = nullptr; } break; @@ -318,7 +318,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD2); // nulls driver - I2C2_PAL.Driver = NULL; + I2C2_PAL.Driver = nullptr; } break; @@ -337,7 +337,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD3); // nulls driver - I2C3_PAL.Driver = NULL; + I2C3_PAL.Driver = nullptr; } break; @@ -356,7 +356,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD4); // nulls driver - I2C4_PAL.Driver = NULL; + I2C4_PAL.Driver = nullptr; } break; @@ -369,7 +369,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ } // stop working thread, if it's running - if (palI2c->WorkingThread != NULL) + if (palI2c->WorkingThread != nullptr) { // delete thread tx_thread_delete(palI2c->WorkingThread); @@ -378,8 +378,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ platform_free(palI2c->WorkingThreadStack); // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; } NANOCLR_NOCLEANUP(); @@ -391,7 +391,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; bool isLongRunningOperation = false; msg_t transactionResult = MSG_OK; @@ -404,12 +404,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; CLR_RT_HeapBlock *connectionSettings; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; int readOffset = 0; int writeOffset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -450,11 +450,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -467,18 +467,18 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { // nothing to write, have to zero this palI2c->WriteSize = 0; } readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -491,7 +491,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (readBuffer == NULL) + if (readBuffer == nullptr) { // nothing to read, have to zero this palI2c->ReadSize = 0; @@ -524,7 +524,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: palI2c->Driver->addr = palI2c->Address; #endif - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); @@ -534,7 +534,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); @@ -556,7 +556,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // 1. allocate memory for I2C thread palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); - if (palI2c->WorkingThreadStack == NULL) + if (palI2c->WorkingThreadStack == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -567,7 +567,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: #if !defined(BUILD_RTM) (CHAR *)"I2C Thread", #else - NULL, + nullptr, #endif I2CWorkingThread_entry, (uint32_t)palI2c, @@ -618,7 +618,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - NULL, + nullptr, 0, TX_TICKS_PER_MILLISEC(20)); } @@ -688,8 +688,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: platform_free(palI2c->WorkingThreadStack); // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; } // get the result from the working thread execution @@ -743,12 +743,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (hr != CLR_E_THREAD_WAITING) { // un-pin the buffers - if (writeBuffer != NULL && writeBuffer->IsPinned()) + if (writeBuffer != nullptr && writeBuffer->IsPinned()) { writeBuffer->Unpin(); } - if (readBuffer != NULL && readBuffer->IsPinned()) + if (readBuffer != nullptr && readBuffer->IsPinned()) { readBuffer->Unpin(); } diff --git a/targets/AzureRTOS/ST/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/AzureRTOS/ST/_nanoCLR/System.Device.Spi/cpu_spi.cpp index 28975d2093..d10f32b3c8 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -60,7 +60,7 @@ static void SpiCallback(SPIDriver *spip) NATIVE_INTERRUPT_START - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // Find the NF_PAL_SPI * for driver #if STM32_SPI_USE_SPI1 @@ -255,10 +255,10 @@ uint16_t ComputeBaudRate(SPI_DEVICE_CONFIGURATION &config, int32_t &actualFreque } // Return the NF_PAL structure for busIndex -// Return NULL is invalid bus +// Return nullptr is invalid bus NF_PAL_SPI *GetNfPalfromBusIndex(uint8_t busIndex) { - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // get the PAL struct for the SPI bus // bus index is 0 based, here it's 1 based @@ -425,12 +425,12 @@ HRESULT CPU_SPI_nWrite_nRead( // Callback sync / async palSpi->Callback = wrc.callback; - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { palSpi->WriteSize = writeSize; } - if (readBuffer != NULL) + if (readBuffer != nullptr) { palSpi->ReadSize = readSize; } @@ -447,10 +447,10 @@ HRESULT CPU_SPI_nWrite_nRead( // Clear callback if sync if (sync) { - palSpi->Configuration.data_cb = NULL; + palSpi->Configuration.data_cb = nullptr; } - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // set the pointer to the write buffer as BYTE palSpi->WriteBuffer = (uint8_t *)writeBuffer; @@ -470,7 +470,7 @@ HRESULT CPU_SPI_nWrite_nRead( } } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // set DMA read buffer if (palSpi->ReadSize > 0) @@ -683,7 +683,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev { #if STM32_SPI_USE_SPI1 case 1: - if (SPI1_PAL.Driver == NULL) + if (SPI1_PAL.Driver == nullptr) { ConfigPins_SPI1(spiDeviceConfig); SPI1_PAL.Driver = &SPID1; @@ -693,7 +693,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI2 case 2: - if (SPI2_PAL.Driver == NULL) + if (SPI2_PAL.Driver == nullptr) { ConfigPins_SPI2(spiDeviceConfig); SPI2_PAL.Driver = &SPID2; @@ -703,7 +703,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI3 case 3: - if (SPI3_PAL.Driver == NULL) + if (SPI3_PAL.Driver == nullptr) { ConfigPins_SPI3(spiDeviceConfig); SPI3_PAL.Driver = &SPID3; @@ -713,7 +713,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI4 case 4: - if (SPI4_PAL.Driver == NULL) + if (SPI4_PAL.Driver == nullptr) { ConfigPins_SPI4(spiDeviceConfig); SPI4_PAL.Driver = &SPID4; @@ -723,7 +723,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI5 case 5: - if (SPI5_PAL.Driver == NULL) + if (SPI5_PAL.Driver == nullptr) { ConfigPins_SPI5(spiDeviceConfig); SPI5_PAL.Driver = &SPID5; @@ -733,7 +733,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI6 case 6: - if (SPI6_PAL.Driver == NULL) + if (SPI6_PAL.Driver == nullptr) { ConfigPins_SPI6(spiDeviceConfig); SPI6_PAL.Driver = &SPID6; @@ -758,7 +758,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI1 case 1: spiStop(&SPID1); - SPI1_PAL.Driver = NULL; + SPI1_PAL.Driver = nullptr; spiReleaseBus(&SPID1); break; #endif @@ -766,7 +766,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI2 case 2: spiStop(&SPID2); - SPI2_PAL.Driver = NULL; + SPI2_PAL.Driver = nullptr; spiReleaseBus(&SPID2); break; #endif @@ -774,7 +774,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI3 case 3: spiStop(&SPID3); - SPI3_PAL.Driver = NULL; + SPI3_PAL.Driver = nullptr; spiReleaseBus(&SPID3); break; #endif @@ -782,7 +782,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI4 case 4: spiStop(&SPID4); - SPI4_PAL.Driver = NULL; + SPI4_PAL.Driver = nullptr; spiReleaseBus(&SPID4); break; #endif @@ -790,7 +790,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI5 case 5: spiStop(&SPID5); - SPI5_PAL.Driver = NULL; + SPI5_PAL.Driver = nullptr; spiReleaseBus(&SPID5); break; #endif @@ -798,7 +798,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI6 case 6: spiStop(&SPID6); - SPI6_PAL.Driver = NULL; + SPI6_PAL.Driver = nullptr; spiReleaseBus(&SPID6); break; #endif diff --git a/targets/AzureRTOS/ST/_nanoCLR/targetHAL.cpp b/targets/AzureRTOS/ST/_nanoCLR/targetHAL.cpp index f50cbf05cb..82408a405f 100644 --- a/targets/AzureRTOS/ST/_nanoCLR/targetHAL.cpp +++ b/targets/AzureRTOS/ST/_nanoCLR/targetHAL.cpp @@ -61,7 +61,7 @@ void nanoHAL_Initialize() BlockStorageList_InitializeDevices(); // clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -168,7 +168,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // TODO check for s_rebootHandlers // for(int i = 0; i< ARRAYSIZE(s_rebootHandlers); i++) // { - // if(s_rebootHandlers[i] != NULL) + // if(s_rebootHandlers[i] != nullptr) // { // s_rebootHandlers[i](); // } diff --git a/targets/AzureRTOS/SiliconLabs/_common/targetHAL_ConfigurationManager.cpp b/targets/AzureRTOS/SiliconLabs/_common/targetHAL_ConfigurationManager.cpp index 1d74024dd2..c67253fbef 100644 --- a/targets/AzureRTOS/SiliconLabs/_common/targetHAL_ConfigurationManager.cpp +++ b/targets/AzureRTOS/SiliconLabs/_common/targetHAL_ConfigurationManager.cpp @@ -208,7 +208,7 @@ __nfweak bool ConfigurationManager_GetConfigurationBlock( uint32_t configurationIndex) { int sizeOfBlock = 0; - uint8_t *blockAddress = NULL; + uint8_t *blockAddress = nullptr; // validate if the requested block exists // Count has to be non zero @@ -300,7 +300,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( if (configuration == DeviceConfigurationOption_Network) { - if (g_TargetConfiguration.NetworkInterfaceConfigs == NULL || + if (g_TargetConfiguration.NetworkInterfaceConfigs == nullptr || (g_TargetConfiguration.NetworkInterfaceConfigs->Count == 0 && configurationIndex == 0)) { // there is no network config block, we are storing the default one @@ -335,7 +335,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( // #if (TARGET_HAS_WIFI_SUPPORT == 1) - // if (g_TargetConfiguration.Wireless80211Configs == NULL || + // if (g_TargetConfiguration.Wireless80211Configs == nullptr || // (g_TargetConfiguration.Wireless80211Configs->Count == 0 && configurationIndex == 0)) // { // // there is no wireless 80211 config block, so we are storing the default one @@ -400,7 +400,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.CertificateStore->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.CertificateStore == NULL || + if (g_TargetConfiguration.CertificateStore == nullptr || (g_TargetConfiguration.CertificateStore->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.CertificateStore->Count)) { @@ -413,7 +413,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // // now check if memory is erase, so the block can be stored - // if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + // if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) // { // // memory not erased, can't store // return FALSE; @@ -450,7 +450,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.DeviceCertificates->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.DeviceCertificates == NULL || + if (g_TargetConfiguration.DeviceCertificates == nullptr || (g_TargetConfiguration.DeviceCertificates->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.DeviceCertificates->Count)) { @@ -463,7 +463,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // // now check if memory is erase, so the block can be stored - // if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + // if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) // { // // memory not erased, can't store // return FALSE; @@ -494,7 +494,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // // copy the config block content to the config block storage - // success = STM32FlashDriver_Write(NULL, storageAddress, blockSize, (unsigned char *)configurationBlock, true); + // success = STM32FlashDriver_Write(nullptr, storageAddress, blockSize, (unsigned char *)configurationBlock, true); // enumeration is required after we are DONE with SUCCESSFULLY storing all the config chunks requiresEnumeration = (success && done); @@ -536,7 +536,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // allocate memory from CRT heap uint8_t *configSectorCopy = (uint8_t *)platform_malloc(sizeOfConfigSector); - if (configSectorCopy != NULL) + if (configSectorCopy != nullptr) { // copy config sector from flash to RAM memcpy(configSectorCopy, &__nanoConfig_start__, sizeOfConfigSector); @@ -674,7 +674,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock } // // erase config sector - // if (STM32FlashDriver_EraseBlock(NULL, (uint32_t)&__nanoConfig_start__) == TRUE) + // if (STM32FlashDriver_EraseBlock(nullptr, (uint32_t)&__nanoConfig_start__) == TRUE) // { // // flash block is erased @@ -689,7 +689,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // // copy the config block copy back to the config block storage // success = STM32FlashDriver_Write( - // NULL, + // nullptr, // (uint32_t)&__nanoConfig_start__, // sizeOfConfigSector, // (unsigned char *)configSectorCopy, diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp index 803a491ac7..7a909aeb7b 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp @@ -17,9 +17,9 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue // ADC related variables adcInitSingle = ADC_INITSINGLE_DEFAULT; uint32_t sample; - ADC_TypeDef *adcDriver = NULL; + ADC_TypeDef *adcDriver = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp index a451e4dd8b..50efa7096b 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp @@ -17,11 +17,11 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcController::NativeOpenCh NF_PAL_ADC_PORT_PIN_CHANNEL adcDefinition; ADC_Init_TypeDef adcInit; CMU_Clock_TypeDef adcClock; - ADC_TypeDef *adcDriver = NULL; + ADC_TypeDef *adcDriver = nullptr; adcInit = ADC_INIT_DEFAULT; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp index 06aecd1ffc..a5007f7799 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp @@ -57,7 +57,7 @@ bool IsValidGpioPin(GPIO_PIN pinNumber) } // Register (or unregister) ISR for a pin -// send NULL in pinState to unregister callback +// send nullptr in pinState to unregister callback unsigned int CallbackRegisterExt(uint8_t pin, gpio_input_state *pinState) { uint16_t intNo = INTERRUPT_UNAVAILABLE; @@ -82,7 +82,7 @@ unsigned int CallbackRegisterExt(uint8_t pin, gpio_input_state *pinState) } } #else - if (gpioCallbacks[pin] == NULL) + if (gpioCallbacks[pin] == nullptr) { intNo = (unsigned int)pin; } @@ -99,12 +99,12 @@ unsigned int CallbackRegisterExt(uint8_t pin, gpio_input_state *pinState) } // Get pointer to gpio_input_state for GPIO pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetGpioWithInterrupt(uint16_t gpioPin) { gpio_input_state *ptr = gpioInputList.FirstNode(); - while (ptr->Next() != NULL) + while (ptr->Next() != nullptr) { if (GPIO_PIN(ptr->pinNumber) == gpioPin) { @@ -114,7 +114,7 @@ gpio_input_state *GetGpioWithInterrupt(uint16_t gpioPin) ptr = ptr->Next(); } - return NULL; + return nullptr; } static void DebounceTimerCallback(ULONG pinState) @@ -157,7 +157,7 @@ static void GpioEventCallback(uint32_t intFlags) pGpio = gpioCallbacks[irqIdx]; - if (pGpio != NULL) + if (pGpio != nullptr) { if (pGpio->waitingDebounce) { @@ -196,12 +196,12 @@ static void GpioEventCallback(uint32_t intFlags) } // Get pointer to gpio_input_state for GPIO pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = gpioInputList.FirstNode(); - while (ptr->Next() != NULL) + while (ptr->Next() != nullptr) { if (ptr->pinNumber == pinNumber) { @@ -211,7 +211,7 @@ gpio_input_state *GetInputState(GPIO_PIN pinNumber) ptr = ptr->Next(); } - return NULL; + return nullptr; } // Allocate a new gpio_input_state and add to end of list @@ -220,12 +220,12 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = GetInputState(pinNumber); - if (ptr == NULL) + if (ptr == nullptr) { ptr = (gpio_input_state *)platform_malloc(sizeof(gpio_input_state)); // sanity check - if (ptr != NULL) + if (ptr != nullptr) { memset(ptr, 0, sizeof(gpio_input_state)); ptr->pinNumber = pinNumber; @@ -256,7 +256,7 @@ void UnlinkInputState(gpio_input_state *pState) // disable the EXT interrupt channel // it's OK to do always this, no matter if it's enabled or not - CallbackRegisterExt(portPin, NULL); + CallbackRegisterExt(portPin, nullptr); pState->Unlink(); @@ -432,7 +432,7 @@ bool CPU_GPIO_EnableInputPin( // Link ISR ptr supplied and not already set up // CPU_GPIO_EnableInputPin could be called a 2nd time with changed parameters - if (pinISR != NULL && (pState->isrPtr == NULL)) + if (pinISR != nullptr && (pState->isrPtr == nullptr)) { // register nanoFramework callback and store associated interrupt ID interruptId = CallbackRegisterExt(portPin, pState); @@ -468,18 +468,18 @@ bool CPU_GPIO_EnableInputPin( break; } } - else if (pinISR == NULL && (pState->isrPtr != NULL)) + else if (pinISR == nullptr && (pState->isrPtr != nullptr)) { // there is no managed handler setup anymore // disable the EXT interrupt channel // it's OK to do always this, no matter if it's enabled or not - CallbackRegisterExt(portPin, NULL); + CallbackRegisterExt(portPin, nullptr); // clear parameters & configs - pState->isrPtr = NULL; + pState->isrPtr = nullptr; pState->mode = GPIO_INT_NONE; - pState->param = NULL; + pState->param = nullptr; pState->debounceMs = 0; } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c index 65a575de4d..87541cbdcd 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c @@ -32,7 +32,7 @@ void I2CSPM_Init(I2CSPM_Init_TypeDef *init) CMU_Clock_TypeDef i2cClock; I2C_Init_TypeDef i2cInit; - EFM_ASSERT(init != NULL); + EFM_ASSERT(init != nullptr); #if defined(_CMU_HFPERCLKEN0_MASK) CMU_ClockEnable(cmuClock_HFPER, true); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index ef7128794c..43547f50b9 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -130,11 +130,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { NANOCLR_HEADER(); - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock *connectionSettings; uint8_t busIndex; I2CSPM_Init_TypeDef i2cInit = { - NULL, + nullptr, 0, 0, 0, @@ -150,7 +150,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI i2cClockHLRStandard, }; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -174,11 +174,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #if defined(I2C0) && (GECKO_USE_I2C0 == TRUE) case 1: - if (I2C0_PAL.Configuration == NULL) + if (I2C0_PAL.Configuration == nullptr) { I2C0_PAL.Configuration = (I2CSPM_Init_TypeDef *)platform_malloc(sizeof(I2CSPM_Init_TypeDef)); - if (I2C0_PAL.Configuration == NULL) + if (I2C0_PAL.Configuration == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -199,11 +199,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #if defined(I2C1) && (GECKO_USE_I2C1 == TRUE) case 2: - if (I2C1_PAL.Configuration == NULL) + if (I2C1_PAL.Configuration == nullptr) { I2C1_PAL.Configuration = (I2CSPM_Init_TypeDef *)platform_malloc(sizeof(I2CSPM_Init_TypeDef)); - if (I2C1_PAL.Configuration == NULL) + if (I2C1_PAL.Configuration == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -224,11 +224,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #if defined(I2C2) && (GECKO_USE_I2C2 == TRUE) case 3: - if (I2C2_PAL.Configuration == NULL) + if (I2C2_PAL.Configuration == nullptr) { I2C2_PAL.Configuration = (I2CSPM_Init_TypeDef *)platform_malloc(sizeof(I2CSPM_Init_TypeDef)); - if (I2C2_PAL.Configuration == NULL) + if (I2C2_PAL.Configuration == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -273,8 +273,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI } // clear pointer to working thread - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; NANOCLR_NOCLEANUP(); } @@ -284,11 +284,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock *connectionSettings; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -321,7 +321,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ platform_free(I2C0_PAL.Configuration); // clears configuration - I2C0_PAL.Configuration = NULL; + I2C0_PAL.Configuration = nullptr; } break; @@ -342,7 +342,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ platform_free(I2C1_PAL.Configuration); // clears configuration - I2C1_PAL.Configuration = NULL; + I2C1_PAL.Configuration = nullptr; } break; @@ -363,7 +363,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ platform_free(I2C2_PAL.Configuration); // clears configuration - I2C2_PAL.Configuration = NULL; + I2C2_PAL.Configuration = nullptr; } break; @@ -376,7 +376,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ } // stop working thread, if it's running - if (palI2c->WorkingThread != NULL) + if (palI2c->WorkingThread != nullptr) { // delete thread tx_thread_delete(palI2c->WorkingThread); @@ -385,8 +385,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ platform_free(palI2c->WorkingThreadStack); // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; } NANOCLR_NOCLEANUP(); @@ -398,7 +398,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; bool isLongRunningOperation = false; CLR_RT_HeapBlock hbTimeout; @@ -410,14 +410,14 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; CLR_RT_HeapBlock *connectionSettings; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; int readOffset = 0; int writeOffset = 0; I2C_TransferSeq_TypeDef i2cTransfer; I2C_TransferReturn_TypeDef transactionResult = i2cTransferInProgress; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -461,12 +461,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -479,7 +479,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { // nothing to write, have to zero this palI2c->WriteSize = 0; @@ -487,12 +487,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -505,7 +505,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (readBuffer == NULL) + if (readBuffer == nullptr) { // nothing to read, have to zero this palI2c->ReadSize = 0; @@ -535,13 +535,13 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: i2cTransfer.addr = (uint16_t)connectionSettings[I2cConnectionSettings::FIELD___deviceAddress].NumericByRef().s4 << 1; - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); @@ -559,7 +559,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // 1. allocate memory for I2C thread palI2c->WorkingThreadStack = (uint32_t *)platform_malloc(I2C_THREAD_STACK_SIZE); - if (palI2c->WorkingThreadStack == NULL) + if (palI2c->WorkingThreadStack == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -570,7 +570,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: #if !defined(BUILD_RTM) (CHAR *)"I2C Thread", #else - NULL, + nullptr, #endif I2CWorkingThread_entry, (uint32_t)palI2c, @@ -689,8 +689,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: platform_free(palI2c->WorkingThreadStack); // clear pointers - palI2c->WorkingThread = NULL; - palI2c->WorkingThreadStack = NULL; + palI2c->WorkingThread = nullptr; + palI2c->WorkingThreadStack = nullptr; } // get the result from the working thread execution @@ -737,12 +737,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (hr != CLR_E_THREAD_WAITING) { // un-pin the buffers - if (writeBuffer != NULL && writeBuffer->IsPinned()) + if (writeBuffer != nullptr && writeBuffer->IsPinned()) { writeBuffer->Unpin(); } - if (readBuffer != NULL && readBuffer->IsPinned()) + if (readBuffer != nullptr && readBuffer->IsPinned()) { readBuffer->Unpin(); } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index c49e1820d4..a11e7bb182 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -85,7 +85,7 @@ TIMER_TypeDef *GetPwmTimer(int timerId) return WTIMER2; default: - return NULL; + return nullptr; } } @@ -179,7 +179,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeInit___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -269,7 +269,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -303,7 +303,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -343,7 +343,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -368,7 +368,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -392,7 +392,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::DisposeNative__ NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/cpu_spi.cpp index f3c12b9314..0c16b6f612 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -52,7 +52,7 @@ void SpiTransferCompleteCallback(NF_SpiDriver_Handle_t handle, Ecode_t transferS NATIVE_INTERRUPT_START - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // Find the NF_PAL_SPI* for handle #if GECKO_USE_SPI0 == TRUE @@ -136,10 +136,10 @@ void SpiTransferCompleteCallback(NF_SpiDriver_Handle_t handle, Ecode_t transferS }; // Return the NF_PAL structure for busIndex -// Return NULL is invalid bus +// Return nullptr is invalid bus NF_PAL_SPI *GetNfPalfromBusIndex(uint8_t busIndex) { - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // get the PAL struct for the SPI bus switch (busIndex) @@ -273,12 +273,12 @@ HRESULT CPU_SPI_nWrite_nRead( // Callback sync / async palSpi->Callback = wrc.callback; - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { palSpi->WriteSize = writeSize; } - if (readBuffer != NULL) + if (readBuffer != nullptr) { palSpi->ReadSize = readSize; } @@ -292,13 +292,13 @@ HRESULT CPU_SPI_nWrite_nRead( // set bus config flag busConfigIsHalfDuplex = (palSpi->BusConfiguration == SpiBusConfiguration_HalfDuplex); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // set the pointer to the write buffer as BYTE palSpi->WriteBuffer = (uint8_t *)writeBuffer; } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // set DMA read buffer if (palSpi->ReadSize > 0) @@ -486,8 +486,8 @@ bool CPU_SPI_Initialize_Extended(uint8_t busIndex, const SPI_DEVICE_CONFIGURATIO GPIO_Port_TypeDef port; uint32_t portPin; - NF_PAL_SPI *palSpi = NULL; - void (*initSpiConfig)(NF_SpiDriver_Init_t &, bool) = NULL; + NF_PAL_SPI *palSpi = nullptr; + void (*initSpiConfig)(NF_SpiDriver_Init_t &, bool) = nullptr; // init the PAL struct for this SPI bus and assign the respective driver // all this occurs if not already done @@ -542,13 +542,13 @@ bool CPU_SPI_Initialize_Extended(uint8_t busIndex, const SPI_DEVICE_CONFIGURATIO return false; } - if (palSpi->Handle == NULL) + if (palSpi->Handle == nullptr) { // allocate memory for the USART_InitSync_TypeDef palSpi->Handle = (NF_SpiDriver_Handle_t)platform_malloc(sizeof(NF_SpiDriver_HandleData_t)); // sanity check allocation - if (palSpi->Handle == NULL) + if (palSpi->Handle == nullptr) { return false; } @@ -559,7 +559,7 @@ bool CPU_SPI_Initialize_Extended(uint8_t busIndex, const SPI_DEVICE_CONFIGURATIO palSpi->InitSpiData = (NF_SpiDriver_Init_t *)platform_malloc(sizeof(NF_SpiDriver_Init_t)); // sanity check allocation - if (palSpi->InitSpiData == NULL) + if (palSpi->InitSpiData == nullptr) { platform_free(palSpi->Handle); @@ -615,7 +615,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &busCon bool CPU_SPI_Uninitialize(uint8_t busIndex) { - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; GPIO_Port_TypeDef port; uint32_t portPin; @@ -681,7 +681,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) platform_free(palSpi->Handle->initData); platform_free(palSpi->Handle); - palSpi->Handle = NULL; + palSpi->Handle = nullptr; return true; } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/nf_gecko_spi_driver.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/nf_gecko_spi_driver.cpp index ac2baf115e..1111f83ca4 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/nf_gecko_spi_driver.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.Spi/nf_gecko_spi_driver.cpp @@ -73,7 +73,7 @@ static sl_power_manager_em_transition_event_info_t on_power_manager_event_info = }; // List of EUSART handles -sl_slist_node_t *eusart_handle_list = NULL; +sl_slist_node_t *eusart_handle_list = nullptr; #endif static bool spidrvIsInitialized = false; @@ -209,7 +209,7 @@ Ecode_t NF_SpiDriver_Init(NF_SpiDriver_Handle_t handle, NF_SpiDriver_Init_t *ini result = NF_SpiDriver_InitEusart(handle, initData); #if defined(SL_CATALOG_POWER_MANAGER_PRESENT) // Subscribe to notification to re-enable eusart after deepsleep. - if (eusart_handle_list == NULL) { + if (eusart_handle_list == nullptr) { sl_power_manager_subscribe_em_transition_event(&on_power_manager_event_handle, &on_power_manager_event_info); } sl_slist_push(&eusart_handle_list, &handle->node); @@ -250,11 +250,11 @@ static Ecode_t NF_SpiDriver_InitUsart(NF_SpiDriver_Handle_t handle, NF_SpiDriver int8_t spiPortNum = -1; #endif - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if (initData == NULL) { + if (initData == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -495,11 +495,11 @@ static Ecode_t NF_SpiDriver_InitUsart(NF_SpiDriver_Handle_t handle, NF_SpiDriver // Initialize DMA. DMADRV_Init(); - if (DMADRV_AllocateChannel(&handle->txDMACh, NULL) != ECODE_EMDRV_DMADRV_OK) { + if (DMADRV_AllocateChannel(&handle->txDMACh, nullptr) != ECODE_EMDRV_DMADRV_OK) { return ECODE_EMDRV_SPIDRV_DMA_ALLOC_ERROR; } - if (DMADRV_AllocateChannel(&handle->rxDMACh, NULL) != ECODE_EMDRV_DMADRV_OK) { + if (DMADRV_AllocateChannel(&handle->rxDMACh, nullptr) != ECODE_EMDRV_DMADRV_OK) { return ECODE_EMDRV_SPIDRV_DMA_ALLOC_ERROR; } @@ -532,11 +532,11 @@ static Ecode_t NF_SpiDriver_InitEusart(NF_SpiDriver_Handle_t handle, NF_SpiDrive eusartSpiInit.advancedSettings = &eusartAdvancedSpiInit; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if (initData == NULL) { + if (initData == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -689,11 +689,11 @@ static Ecode_t NF_SpiDriver_InitEusart(NF_SpiDriver_Handle_t handle, NF_SpiDrive // Initialize DMA. DMADRV_Init(); - if (DMADRV_AllocateChannel(&handle->txDMACh, NULL) != ECODE_EMDRV_DMADRV_OK) { + if (DMADRV_AllocateChannel(&handle->txDMACh, nullptr) != ECODE_EMDRV_DMADRV_OK) { return ECODE_EMDRV_SPIDRV_DMA_ALLOC_ERROR; } - if (DMADRV_AllocateChannel(&handle->rxDMACh, NULL) != ECODE_EMDRV_DMADRV_OK) { + if (DMADRV_AllocateChannel(&handle->rxDMACh, nullptr) != ECODE_EMDRV_DMADRV_OK) { return ECODE_EMDRV_SPIDRV_DMA_ALLOC_ERROR; } @@ -755,7 +755,7 @@ Ecode_t NF_SpiDriver_DeInit(NF_SpiDriver_Handle_t handle) } #endif - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } @@ -828,7 +828,7 @@ Ecode_t NF_SpiDriver_DeInit(NF_SpiDriver_Handle_t handle) #if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(EUSART_PRESENT) // Unsubscribe to notification to re-enable eusart after deepsleep. sl_slist_remove(&eusart_handle_list, &handle->node); - if (eusart_handle_list == NULL) { + if (eusart_handle_list == nullptr) { sl_power_manager_unsubscribe_em_transition_event(&on_power_manager_event_handle); } #endif @@ -850,7 +850,7 @@ Ecode_t NF_SpiDriver_AbortTransfer(NF_SpiDriver_Handle_t handle) { CORE_DECLARE_IRQ_STATE; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } @@ -880,7 +880,7 @@ Ecode_t NF_SpiDriver_AbortTransfer(NF_SpiDriver_Handle_t handle) em1RequestRemove(handle); - if (handle->userCallback != NULL) { + if (handle->userCallback != nullptr) { handle->userCallback(handle, ECODE_EMDRV_SPIDRV_ABORTED, handle->transferCount - handle->remaining); @@ -904,11 +904,11 @@ Ecode_t NF_SpiDriver_AbortTransfer(NF_SpiDriver_Handle_t handle) ******************************************************************************/ Ecode_t NF_SpiDriver_GetBitrate(NF_SpiDriver_Handle_t handle, uint32_t *bitRate) { - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if (bitRate == NULL) { + if (bitRate == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -942,11 +942,11 @@ Ecode_t NF_SpiDriver_GetBitrate(NF_SpiDriver_Handle_t handle, uint32_t *bitRate) ******************************************************************************/ Ecode_t NF_SpiDriver_GetFramelength(NF_SpiDriver_Handle_t handle, uint32_t *frameLength) { - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if (frameLength == NULL) { + if (frameLength == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -979,11 +979,11 @@ Ecode_t NF_SpiDriver_GetTransferStatus(NF_SpiDriver_Handle_t handle, { int remaining; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if ((itemsTransferred == NULL) || (itemsRemaining == NULL)) { + if ((itemsTransferred == nullptr) || (itemsRemaining == nullptr)) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -1118,7 +1118,7 @@ Ecode_t NF_SpiDriver_MTransfer(NF_SpiDriver_Handle_t handle, return retVal; } - if (rxBuffer == NULL) { + if (rxBuffer == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -1164,7 +1164,7 @@ Ecode_t NF_SpiDriver_MTransferB(NF_SpiDriver_Handle_t handle, return retVal; } - if (rxBuffer == NULL) { + if (rxBuffer == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -1202,7 +1202,7 @@ Ecode_t NF_SpiDriver_MTransferSingleItemB(NF_SpiDriver_Handle_t handle, CORE_DECLARE_IRQ_STATE; uint32_t rxBuffer; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } @@ -1218,7 +1218,7 @@ Ecode_t NF_SpiDriver_MTransferSingleItemB(NF_SpiDriver_Handle_t handle, handle->state = spidrvStateTransferring; CORE_EXIT_ATOMIC(); - if ((pRx = rxValue) == NULL) { + if ((pRx = rxValue) == nullptr) { pRx = &rxBuffer; } @@ -1326,7 +1326,7 @@ Ecode_t NF_SpiDriver_SetBitrate(NF_SpiDriver_Handle_t handle, uint32_t bitRate) { CORE_DECLARE_IRQ_STATE; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } @@ -1371,7 +1371,7 @@ Ecode_t NF_SpiDriver_SetFramelength(NF_SpiDriver_Handle_t handle, uint32_t frame { CORE_DECLARE_IRQ_STATE; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } @@ -1579,7 +1579,7 @@ Ecode_t NF_SpiDriver_STransfer(NF_SpiDriver_Handle_t handle, return retVal; } - if (rxBuffer == NULL) { + if (rxBuffer == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -1639,7 +1639,7 @@ Ecode_t NF_SpiDriver_STransferB(NF_SpiDriver_Handle_t handle, return retVal; } - if (rxBuffer == NULL) { + if (rxBuffer == nullptr) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -2085,7 +2085,7 @@ static bool RxDMAComplete(unsigned int channel, } #endif - if (handle->userCallback != NULL) { + if (handle->userCallback != nullptr) { handle->userCallback(handle, ECODE_EMDRV_SPIDRV_OK, handle->transferCount); } @@ -2126,7 +2126,7 @@ static void SlaveTimeout(sl_sleeptimer_timer_handle_t *sleepdriver_handle, void handle->transferStatus = ECODE_EMDRV_SPIDRV_TIMEOUT; handle->state = spidrvStateIdle; - if (handle->userCallback != NULL) { + if (handle->userCallback != nullptr) { handle->userCallback(handle, ECODE_EMDRV_SPIDRV_TIMEOUT, handle->transferCount - handle->remaining); @@ -2221,8 +2221,8 @@ static void StartReceiveDMA(NF_SpiDriver_Handle_t handle, false, count, size, - NULL, - NULL); + nullptr, + nullptr); } /***************************************************************************//** @@ -2298,8 +2298,8 @@ static void StartTransferDMA(NF_SpiDriver_Handle_t handle, true, count, size, - NULL, - NULL); + nullptr, + nullptr); } /***************************************************************************//** @@ -2375,8 +2375,8 @@ static void StartTransmitDMA(NF_SpiDriver_Handle_t handle, true, count, size, - NULL, - NULL); + nullptr, + nullptr); } /***************************************************************************//** @@ -2388,11 +2388,11 @@ static Ecode_t TransferApiBlockingPrologue(NF_SpiDriver_Handle_t handle, { CORE_DECLARE_IRQ_STATE; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if ((buffer == NULL) || (count == 0) || (count > DMADRV_MAX_XFER_COUNT)) { + if ((buffer == nullptr) || (count == 0) || (count > DMADRV_MAX_XFER_COUNT)) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } @@ -2416,11 +2416,11 @@ static Ecode_t TransferApiPrologue(NF_SpiDriver_Handle_t handle, { CORE_DECLARE_IRQ_STATE; - if (handle == NULL) { + if (handle == nullptr) { return ECODE_EMDRV_SPIDRV_ILLEGAL_HANDLE; } - if ((buffer == NULL) || (count == 0) || (count > DMADRV_MAX_XFER_COUNT)) { + if ((buffer == nullptr) || (count == 0) || (count > DMADRV_MAX_XFER_COUNT)) { return ECODE_EMDRV_SPIDRV_PARAM_ERROR; } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp index bbdd226407..47d48791c5 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.UsbStream/sys_dev_usbstream_native_System_Device_Usb_UsbStream.cpp @@ -91,7 +91,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Read___I4_ uint32_t offset = 0; sl_status_t reqStatus; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -205,7 +205,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Read___I4_ if (hr != CLR_E_THREAD_WAITING) { // need to clean up the buffer, if this was not rescheduled - if (dataBuffer != NULL && dataBuffer->IsPinned()) + if (dataBuffer != nullptr && dataBuffer->IsPinned()) { dataBuffer->Unpin(); } @@ -233,7 +233,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Write___VO uint32_t xfer_len = 0; bool isLongRunning = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -365,7 +365,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::Write___VO if (isLongRunning && hr != CLR_E_THREAD_WAITING) { // need to clean up the buffer, if this was not rescheduled - if (dataBuffer != NULL && dataBuffer->IsPinned()) + if (dataBuffer != nullptr && dataBuffer->IsPinned()) { dataBuffer->Unpin(); } @@ -412,7 +412,7 @@ HRESULT Library_sys_dev_usbstream_native_System_Device_Usb_UsbStream::NativeOpen // int32_t bufferSize; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp index 5dedf6f540..b327d20fdc 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp @@ -65,7 +65,7 @@ static NF_PAL_UART *GetUartPAL(uint8_t index) #endif default: - return NULL; + return nullptr; } } @@ -154,13 +154,13 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___ NF_PAL_UART *palUart; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -200,7 +200,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY CLR_RT_HeapBlock hbTimeout; CLR_RT_HeapBlock_Array *dataBuffer; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t *data; @@ -213,7 +213,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY int64_t *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -256,7 +256,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -338,14 +338,14 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - uint8_t *buffer = NULL; + uint8_t *buffer = nullptr; uint32_t bufferLength; CLR_RT_HeapBlock &top = stack.PushValue(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -356,7 +356,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -370,7 +370,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR buffer = (uint8_t *)platform_malloc(bufferLength); // sanity check - if (buffer == NULL) + if (buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -383,12 +383,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR else { // create an empty - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)nullptr)); } NANOCLR_CLEANUP(); - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -401,17 +401,17 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - uint8_t *line = NULL; - const char *newLine = NULL; + uint8_t *line = nullptr; + const char *newLine = nullptr; uint32_t newLineLength; int64_t *timeoutTicks; bool eventResult = true; bool newLineFound = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -426,7 +426,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -449,8 +449,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get new line from field newLine = pThis[FIELD___newLine].RecoverString(); - // sanity check for NULL string - if (newLine == NULL) + // sanity check for nullptr string + if (newLine == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -499,7 +499,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( stack.SetResult_String((const char *)line); // free memory, if needed - if (line != NULL) + if (line != nullptr) { platform_free(line); } @@ -511,7 +511,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; CLR_RT_HeapBlock_Array *dataBuffer; CLR_RT_HeapBlock hbTimeout; @@ -523,7 +523,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR int32_t count = 0; int32_t offset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -534,7 +534,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -623,7 +623,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR stack.SetResult_U4(count); // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -632,7 +632,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -696,7 +696,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( int32_t bufferSize; uint8_t watchChar; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -749,7 +749,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( palUart->RxBuffer = (uint8_t *)platform_malloc(bufferSize); // sanity check - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -776,15 +776,15 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -874,7 +874,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -885,13 +885,13 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar NF_PAL_UART *palUart; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -907,18 +907,18 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; CLR_RT_HeapBlock hbTimeout; int64_t *timeoutTicks; bool eventResult = true; bool isNewAllocation = false; - char *buffer = NULL; + char *buffer = nullptr; uint32_t bufferLength = 0; int32_t length = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -927,7 +927,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ NANOCLR_SET_AND_LEAVE(CLR_E_OBJECT_DISPOSED); } - if (stack.Arg1().RecoverString() == NULL) + if (stack.Arg1().RecoverString() == nullptr) { // text string it's empty so there is noting to do here stack.SetResult_U4(0); @@ -936,7 +936,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -1020,7 +1020,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1034,7 +1034,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte int32_t threshold; uint8_t portIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1050,7 +1050,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte // Choose the driver for this SerialDevice palUart = GetUartPAL(portIndex); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h index 6168b5bc72..b4e9b3f968 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h @@ -122,9 +122,9 @@ extern NF_PAL_UART Uart5_PAL; Uart##num##_PAL.Usart = USART##num; \ USART##num->ROUTELOC0 = rx_location | tx_location; \ USART##num->ROUTEPEN |= USART_ROUTEPEN_TXPEN | USART_ROUTEPEN_RXPEN; \ - Uart##num##_PAL.TxBuffer = NULL; \ + Uart##num##_PAL.TxBuffer = nullptr; \ Uart##num##_PAL.TxOngoingCount = 0; \ - Uart##num##_PAL.RxBuffer = NULL; \ + Uart##num##_PAL.RxBuffer = nullptr; \ Uart##num##_PAL.WatchChar = 0; \ Uart##num##_PAL.NewLineChar = 0; \ Uart##num##_PAL.SignalLevelsInverted = false; \ @@ -151,9 +151,9 @@ void InitConfig_USART5(); GPIO_PinModeSet(gpio_port_tx, tx_pin, gpioModeDisabled, 0); \ CMU_ClockEnable(cmuClock_USART##num, false); \ platform_free(Uart##num##_PAL.RxBuffer); \ - Uart##num##_PAL.TxBuffer = NULL; \ - Uart##num##_PAL.RxBuffer = NULL; \ - Uart##num##_PAL.Usart = NULL; \ + Uart##num##_PAL.TxBuffer = nullptr; \ + Uart##num##_PAL.RxBuffer = nullptr; \ + Uart##num##_PAL.Usart = nullptr; \ return; \ } diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp index fd79ba0737..7f74ab7ce9 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp @@ -447,7 +447,7 @@ HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) // 1. allocate memory for thread stack workingThreadStack = (uint32_t *)platform_malloc(ONEWIRE_THREAD_STACK_SIZE); - if (workingThreadStack == NULL) + if (workingThreadStack == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -458,7 +458,7 @@ HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) #if !defined(BUILD_RTM) (CHAR *)"1-Wire Thread", #else - NULL, + nullptr, #endif OneWireFindWorkingThread_entry, (uint32_t)&FindStruct, @@ -506,7 +506,7 @@ HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) { // update serialNumber field - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcChannel.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcChannel.cpp index feaf0eab9a..5448573d2d 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcChannel.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcChannel.cpp @@ -46,13 +46,13 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcChannel::Nati NF_PAL_ADC_PORT_PIN_CHANNEL adcDefinition; // ADC related variables - ADC_TypeDef *adcDriver = NULL; + ADC_TypeDef *adcDriver = nullptr; ADC_InitSingle_TypeDef channelInitSingle; uint64_t samplesAccumulator = 0; int32_t averageCount; int32_t samplesCount; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp index 935b6c6f19..958be31303 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.GiantGecko.Adc/nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController.cpp @@ -32,8 +32,8 @@ HRESULT OpenAdcChannel(int32_t channelNumber, CLR_RT_HeapBlock *adcConfiguration NF_PAL_ADC_PORT_PIN_CHANNEL adcChannelDefinition; CMU_Clock_TypeDef adcClock; - ADC_Init_TypeDef *adcInit = NULL; - bool *adcInitialized = NULL; + ADC_Init_TypeDef *adcInit = nullptr; + bool *adcInitialized = nullptr; // sanity check for existing configuration if (channelNumber >= AdcChannelCount) @@ -145,7 +145,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController::N int32_t channelNumber; ADC_TypeDef *adcDriver; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -192,7 +192,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: CLR_RT_TypeDef_Index adcSampleResolutionTypeDef; CLR_RT_HeapBlock_Array *supportedResolutions; - CLR_INT32 *resolution = NULL; + CLR_INT32 *resolution = nullptr; uint16_t resolutionsCount = 0; @@ -259,14 +259,14 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: uint32_t channelIndex = 0; int32_t channelNumber; ADC_InitScan_TypeDef channelInitScan = ADC_INITSCAN_DEFAULT; - ADC_TypeDef *adcDriver = NULL; + ADC_TypeDef *adcDriver = nullptr; NF_PAL_ADC_PORT_PIN_CHANNEL adcChannelDefinition; CLR_RT_HeapBlock_Array *adcChannelsToScan; CLR_RT_HeapBlock *adcConfiguration; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -301,7 +301,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: (NF_PAL_GECKO_ADC_CONTINUOUS_SCAN *)platform_malloc(sizeof(NF_PAL_GECKO_ADC_CONTINUOUS_SCAN)); // sanity check - if (ContinuousScanOperation == NULL) + if (ContinuousScanOperation == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -311,7 +311,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: (uint32_t *)platform_malloc(adcChannelsToScan->m_numOfElements * averageCount * sizeof(uint32_t)); // sanity check - if (ContinuousScanOperation->dataBuffer == NULL) + if (ContinuousScanOperation->dataBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -367,16 +367,16 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: if (FAILED(hr)) { // free memory for the scan operation - if (ContinuousScanOperation != NULL) + if (ContinuousScanOperation != nullptr) { - if (ContinuousScanOperation->dataBuffer != NULL) + if (ContinuousScanOperation->dataBuffer != nullptr) { platform_free(ContinuousScanOperation->dataBuffer); } platform_free(ContinuousScanOperation); - ContinuousScanOperation = NULL; + ContinuousScanOperation = nullptr; } } @@ -388,7 +388,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController::N { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -398,7 +398,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController::N // clear memory for the scan operation platform_free(ContinuousScanOperation->dataBuffer); platform_free(ContinuousScanOperation); - ContinuousScanOperation = NULL; + ContinuousScanOperation = nullptr; // all good, update flag pThis[FIELD___continuousSamplingStarted].NumericByRef().u1 = (CLR_UINT8) false; @@ -411,7 +411,7 @@ HRESULT Library_nano_gg_adc_native_nanoFramework_GiantGecko_Adc_AdcController:: { NANOCLR_HEADER(); - CLR_INT32 *sample = NULL; + CLR_INT32 *sample = nullptr; // assuming that, at 12 bits resolution, this will be enough to hold the average uint64_t samplesAccumulator = 0; diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp index 90281a3017..5e63e04977 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp @@ -19,13 +19,13 @@ HRESULT Library_nf_sys_io_hashing_System_IO_Hashing_Crc32::ComputeHash___STATIC_ CLR_RT_HeapBlock *bufferSpanByte; CLR_RT_HeapBlock_Array *buffer; - uint8_t *bufferData = NULL; + uint8_t *bufferData = nullptr; int16_t bufferSize = 0; int16_t bufferOffset = 0; uint32_t crc32 = 0; uint32_t hash = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr bufferSpanByte = stack.Arg1().Dereference(); FAULT_ON_NULL_ARG(bufferSpanByte); diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/targetHAL.cpp b/targets/AzureRTOS/SiliconLabs/_nanoCLR/targetHAL.cpp index d1a4aafefd..fad1b09c43 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/targetHAL.cpp +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/targetHAL.cpp @@ -42,13 +42,13 @@ extern void DeInitPwm(); // Reboot handlers clean up on reboot // static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[16] = - {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; void HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { for (size_t i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] == NULL) + if (s_rebootHandlers[i] == nullptr) { s_rebootHandlers[i] = handler; return; @@ -89,7 +89,7 @@ void nanoHAL_Initialize() BlockStorageList_InitializeDevices(); // clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -108,13 +108,13 @@ void nanoHAL_Initialize() // #if (HAL_USE_CAN == TRUE) // #if defined(STM32_CAN_USE_CAN1) && (STM32_CAN_USE_CAN1 == TRUE) - // Can1_PAL.Driver = NULL; + // Can1_PAL.Driver = nullptr; // #endif // #if (STM32_CAN_USE_CAN2) && (STM32_CAN_USE_CAN2 == TRUE) - // Can2_PAL.Driver = NULL; + // Can2_PAL.Driver = nullptr; // #endif // #if (STM32_CAN_USE_CAN3) && (STM32_CAN_USE_CAN3 == TRUE) - // Can3_PAL.Driver = NULL; + // Can3_PAL.Driver = nullptr; // #endif // #endif @@ -210,7 +210,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // process Reboot Handlers for (size_t i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] != NULL) + if (s_rebootHandlers[i] != nullptr) { s_rebootHandlers[i](); } @@ -251,26 +251,26 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // #endif #if defined(I2C0) && (GECKO_USE_I2C0 == TRUE) - if (I2C0_PAL.Configuration != NULL) + if (I2C0_PAL.Configuration != nullptr) { platform_free(I2C0_PAL.Configuration); - I2C0_PAL.Configuration = NULL; + I2C0_PAL.Configuration = nullptr; } I2C_Reset(I2C0); #endif #if defined(I2C1) && (GECKO_USE_I2C1 == TRUE) - if (I2C1_PAL.Configuration != NULL) + if (I2C1_PAL.Configuration != nullptr) { platform_free(I2C1_PAL.Configuration); - I2C1_PAL.Configuration = NULL; + I2C1_PAL.Configuration = nullptr; } I2C_Reset(I2C1); #endif #if defined(I2C2) && (GECKO_USE_I2C2 == TRUE) - if (I2C2_PAL.Configuration != NULL) + if (I2C2_PAL.Configuration != nullptr) { platform_free(I2C2_PAL.Configuration); - I2C2_PAL.Configuration = NULL; + I2C2_PAL.Configuration = nullptr; } I2C_Reset(I2C2); #endif @@ -297,37 +297,37 @@ void nanoHAL_Uninitialize(bool isPoweringDown) #endif #if defined(GECKO_USE_USART0) && (GECKO_USE_USART0 == TRUE) - if (Usart0_PAL.Usart != NULL) + if (Usart0_PAL.Usart != nullptr) { UnInit_UART0(); } #endif #if defined(GECKO_USE_USART1) && (GECKO_USE_USART1 == TRUE) - if (Usart1_PAL.Usart != NULL) + if (Usart1_PAL.Usart != nullptr) { UnInit_UART1(); } #endif #if defined(GECKO_USE_USART2) && (GECKO_USE_USART2 == TRUE) - if (Usart2_PAL.Usart != NULL) + if (Usart2_PAL.Usart != nullptr) { UnInit_UART2(); } #endif #if defined(GECKO_USE_USART3) && (GECKO_USE_USART3 == TRUE) - if (Usart3_PAL.Usart != NULL) + if (Usart3_PAL.Usart != nullptr) { UnInit_UART3(); } #endif #if defined(GECKO_USE_USART_UART4) && (GECKO_USE_USART_UART4 == TRUE) - if (Usart4_PAL.Usart != NULL) + if (Usart4_PAL.Usart != nullptr) { UnInit_UART4(); } #endif #if defined(GECKO_USE_USART_UART5) && (GECKO_USE_USART_UART5 == TRUE) - if (Usart5_PAL.Usart != NULL) + if (Usart5_PAL.Usart != nullptr) { UnInit_UART5(); } diff --git a/targets/AzureRTOS/_common/nanoCLR/nanoCRT.cpp b/targets/AzureRTOS/_common/nanoCLR/nanoCRT.cpp index dad201afa3..2f9b5d3c34 100644 --- a/targets/AzureRTOS/_common/nanoCLR/nanoCRT.cpp +++ b/targets/AzureRTOS/_common/nanoCLR/nanoCRT.cpp @@ -138,7 +138,7 @@ int hal_strcpy_s(char *strDst, size_t sizeInBytes, const char *strSrc) #undef strcpy size_t len; - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -161,7 +161,7 @@ int hal_strncpy_s(char *strDst, size_t sizeInBytes, const char *strSrc, size_t c { NATIVE_PROFILE_PAL_CRT(); #undef strncpy - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -195,7 +195,7 @@ int hal_strncmp_s(const char *str1, const char *str2, size_t num) { NATIVE_PROFILE_PAL_CRT(); #undef strncmp - if (str1 == NULL || str2 == NULL) + if (str1 == nullptr || str2 == nullptr) { _ASSERTE(FALSE); return 1; diff --git a/targets/AzureRTOS/_common/nanoCLR/targetPAL_Events.cpp b/targets/AzureRTOS/_common/nanoCLR/targetPAL_Events.cpp index 551806fe7b..4560557f30 100644 --- a/targets/AzureRTOS/_common/nanoCLR/targetPAL_Events.cpp +++ b/targets/AzureRTOS/_common/nanoCLR/targetPAL_Events.cpp @@ -44,7 +44,7 @@ bool Events_Uninitialize_Platform() void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) { - if (timerCompleteFlag != NULL) + if (timerCompleteFlag != nullptr) { // As only one timer running at a time we will just save it saveTimerCompleteFlag = timerCompleteFlag; diff --git a/targets/AzureRTOS/_common/nanoCLR/targetPAL_Time.cpp b/targets/AzureRTOS/_common/nanoCLR/targetPAL_Time.cpp index 206b6630e9..fc808072d5 100644 --- a/targets/AzureRTOS/_common/nanoCLR/targetPAL_Time.cpp +++ b/targets/AzureRTOS/_common/nanoCLR/targetPAL_Time.cpp @@ -10,7 +10,7 @@ // timer for next event static TX_TIMER nextEventTimer; -void *nextEventCallbackDummyArg = NULL; +void *nextEventCallbackDummyArg = nullptr; static void NextEventTimer_Callback(uint32_t id) { diff --git a/targets/ChibiOS/ORGPAL_PALTHREE/target_system_device_adc_config.cpp b/targets/ChibiOS/ORGPAL_PALTHREE/target_system_device_adc_config.cpp index e480082ee1..98f5a1f22e 100644 --- a/targets/ChibiOS/ORGPAL_PALTHREE/target_system_device_adc_config.cpp +++ b/targets/ChibiOS/ORGPAL_PALTHREE/target_system_device_adc_config.cpp @@ -20,9 +20,9 @@ const NF_PAL_ADC_PORT_PIN_CHANNEL AdcPortPinConfig[] = { {3, GPIOF, 9, ADC_CHANNEL_IN7}, // these are the internal sources, available only at ADC1 - {1, NULL, 0, ADC_CHANNEL_SENSOR}, - {1, NULL, 0, ADC_CHANNEL_VREFINT}, - {1, NULL, 0, ADC_CHANNEL_VBAT}, + {1, nullptr, 0, ADC_CHANNEL_SENSOR}, + {1, nullptr, 0, ADC_CHANNEL_VREFINT}, + {1, nullptr, 0, ADC_CHANNEL_VBAT}, }; const int AdcChannelCount = ARRAYSIZE(AdcPortPinConfig); diff --git a/targets/ChibiOS/ORGPAL_PALX/target_system_device_adc_config.cpp b/targets/ChibiOS/ORGPAL_PALX/target_system_device_adc_config.cpp index 078392b1b7..3a67a606a2 100644 --- a/targets/ChibiOS/ORGPAL_PALX/target_system_device_adc_config.cpp +++ b/targets/ChibiOS/ORGPAL_PALX/target_system_device_adc_config.cpp @@ -14,9 +14,9 @@ const NF_PAL_ADC_PORT_PIN_CHANNEL AdcPortPinConfig[] = { {1, GPIOC, 3, ADC_CHANNEL_IN13}, // these are the internal sources, available only at ADC1 - {1, NULL, 0, ADC_CHANNEL_SENSOR}, - {1, NULL, 0, ADC_CHANNEL_VREFINT}, - {1, NULL, 0, ADC_CHANNEL_VBAT}, + {1, nullptr, 0, ADC_CHANNEL_SENSOR}, + {1, nullptr, 0, ADC_CHANNEL_VREFINT}, + {1, nullptr, 0, ADC_CHANNEL_VBAT}, }; const int AdcChannelCount = ARRAYSIZE(AdcPortPinConfig); diff --git a/targets/ChibiOS/ST_STM32F429I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp b/targets/ChibiOS/ST_STM32F429I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp index f2142e09ed..490fc5696a 100644 --- a/targets/ChibiOS/ST_STM32F429I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp +++ b/targets/ChibiOS/ST_STM32F429I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp @@ -40,7 +40,7 @@ CLR_UINT8 *TouchInterface::Write_Read( (void)numberOfValuesToSend; (void)numberValuesExpected; - // CLR_UINT8* receivedValues = NULL; + // CLR_UINT8* receivedValues = nullptr; // msg_t result = i2cMasterTransmitTimeout(&touchDriver, I2C_Address, valuesToSend, numberOfValuesToSend, // receivedValues, numberValuesExpected, TIME_MS2I(20)); return receivedValues; diff --git a/targets/ChibiOS/ST_STM32F429I_DISCOVERY/target_system_device_adc_config.cpp b/targets/ChibiOS/ST_STM32F429I_DISCOVERY/target_system_device_adc_config.cpp index 14f5b1fa4a..b7fbe5f715 100644 --- a/targets/ChibiOS/ST_STM32F429I_DISCOVERY/target_system_device_adc_config.cpp +++ b/targets/ChibiOS/ST_STM32F429I_DISCOVERY/target_system_device_adc_config.cpp @@ -17,9 +17,9 @@ const NF_PAL_ADC_PORT_PIN_CHANNEL AdcPortPinConfig[] = { {3, GPIOF, 6, ADC_CHANNEL_IN4}, // these are the internal sources, available only at ADC1 - {1, NULL, 0, ADC_CHANNEL_SENSOR}, - {1, NULL, 0, ADC_CHANNEL_VREFINT}, - {1, NULL, 0, ADC_CHANNEL_VBAT}, + {1, nullptr, 0, ADC_CHANNEL_SENSOR}, + {1, nullptr, 0, ADC_CHANNEL_VREFINT}, + {1, nullptr, 0, ADC_CHANNEL_VBAT}, }; const int AdcChannelCount = ARRAYSIZE(AdcPortPinConfig); diff --git a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp index 994aa6fd5e..c3149a2700 100644 --- a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp +++ b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/nanoCLR/nanoFramework.Graphics/I2C_To_TouchPanel.cpp @@ -47,7 +47,7 @@ CLR_UINT8 *TouchInterface::Write_Read( UNUSED(numberOfValuesToSend); UNUSED(numberValuesExpected); - // CLR_UINT8* receivedValues = NULL; + // CLR_UINT8* receivedValues = nullptr; // msg_t result = i2cMasterTransmitTimeout(&touchDriver, I2C_Address, valuesToSend, numberOfValuesToSend, // receivedValues, numberValuesExpected, TIME_MS2I(20)); return receivedValues; diff --git a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_system_device_adc_config.cpp b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_system_device_adc_config.cpp index c96f9c7908..027683977d 100644 --- a/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_system_device_adc_config.cpp +++ b/targets/ChibiOS/ST_STM32F769I_DISCOVERY/target_system_device_adc_config.cpp @@ -17,9 +17,9 @@ const NF_PAL_ADC_PORT_PIN_CHANNEL AdcPortPinConfig[] = { {3, GPIOF, 8, ADC_CHANNEL_IN6}, // these are the internal sources, available only at ADC1 - {1, NULL, 0, ADC_CHANNEL_SENSOR}, - {1, NULL, 0, ADC_CHANNEL_VREFINT}, - {1, NULL, 0, ADC_CHANNEL_VBAT}, + {1, nullptr, 0, ADC_CHANNEL_SENSOR}, + {1, nullptr, 0, ADC_CHANNEL_VREFINT}, + {1, nullptr, 0, ADC_CHANNEL_VBAT}, }; const int AdcChannelCount = ARRAYSIZE(AdcPortPinConfig); diff --git a/targets/ChibiOS/_FatFs/fatfs_FS_Driver.cpp b/targets/ChibiOS/_FatFs/fatfs_FS_Driver.cpp index 225826f935..7ab04cecc1 100644 --- a/targets/ChibiOS/_FatFs/fatfs_FS_Driver.cpp +++ b/targets/ChibiOS/_FatFs/fatfs_FS_Driver.cpp @@ -76,7 +76,7 @@ void FATFS_FS_Driver::Initialize() // initialize the file handler pool #if CACHE_LINE_SIZE > 0 - chPoolObjectInit(&fileHandlerPool, sizeof(FATFS_FileHandle), NULL); + chPoolObjectInit(&fileHandlerPool, sizeof(FATFS_FileHandle), nullptr); chPoolLoadArray(&fileHandlerPool, fileHandlerPoolStorage, FILE_HANDLER_POOL_SIZE); #endif } @@ -86,7 +86,7 @@ bool FATFS_FS_Driver::InitializeVolume(const VOLUME_ID *volume, const char *path // find a free volume FATFS *fs = GetFatFsByVolumeId(volume, true); - if (fs == NULL) + if (fs == nullptr) { return FALSE; } @@ -221,11 +221,11 @@ HRESULT FATFS_FS_Driver::GetVolumeLabel(const VOLUME_ID *volume, char *volumeLab (void)volumeLabel; (void)volumeLabelLen; - // FATFS *fs = NULL; + // FATFS *fs = nullptr; // //fs = GetFileSystemForVolume(volume, true); - // if (fs == NULL) + // if (fs == nullptr) // { // return FALSE; // } @@ -257,7 +257,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& int32_t result; #endif - FATFS_FileHandle *fileHandle = NULL; + FATFS_FileHandle *fileHandle = nullptr; FILINFO info; int32_t flags; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -271,7 +271,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& fileHandle = (FATFS_FileHandle *)platform_malloc(sizeof(FATFS_FileHandle)); #endif - if (fileHandle == NULL) + if (fileHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -333,7 +333,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& NANOCLR_CLEANUP(); - if (fileHandle != NULL) + if (fileHandle != nullptr) { platform_free(fileHandle); } @@ -579,13 +579,13 @@ HRESULT FATFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, voi NANOCLR_HEADER(); char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; - FATFS_FindFileHandle *findHandle = NULL; + FATFS_FindFileHandle *findHandle = nullptr; FileSystemVolume *currentVolume; // allocate file handle findHandle = (FATFS_FindFileHandle *)platform_malloc(sizeof(FATFS_FindFileHandle)); - if (findHandle == NULL) + if (findHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -618,7 +618,7 @@ HRESULT FATFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, voi NANOCLR_CLEANUP(); - if (findHandle != NULL) + if (findHandle != nullptr) { platform_free(findHandle); } @@ -673,7 +673,7 @@ HRESULT FATFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFound fi->FileName = (char *)platform_malloc(fi->FileNameSize + 1); // sanity check for successfull malloc - if (fi->FileName == NULL) + if (fi->FileName == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -878,7 +878,7 @@ HRESULT FATFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char *pa // add back the '/' separator strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); } // remove trailing '/' @@ -1093,7 +1093,7 @@ static FATFS *GetFatFsByVolumeId(const VOLUME_ID *volumeId, bool assignVolume) } } - return NULL; + return nullptr; } static void FreeFatFsByVolumeId(const VOLUME_ID *volumeId) diff --git a/targets/ChibiOS/_common/targetHAL_ConfigurationManager.cpp b/targets/ChibiOS/_common/targetHAL_ConfigurationManager.cpp index 1649fdef6f..ee2567af7d 100644 --- a/targets/ChibiOS/_common/targetHAL_ConfigurationManager.cpp +++ b/targets/ChibiOS/_common/targetHAL_ConfigurationManager.cpp @@ -151,7 +151,7 @@ __nfweak bool ConfigurationManager_GetConfigurationBlock( uint32_t configurationIndex) { int sizeOfBlock = 0; - uint8_t *blockAddress = NULL; + uint8_t *blockAddress = nullptr; // validate if the requested block exists // Count has to be non zero @@ -242,7 +242,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( if (configuration == DeviceConfigurationOption_Network) { - if (g_TargetConfiguration.NetworkInterfaceConfigs == NULL || + if (g_TargetConfiguration.NetworkInterfaceConfigs == nullptr || (g_TargetConfiguration.NetworkInterfaceConfigs->Count == 0 && configurationIndex == 0)) { // there is no network config block, we are storing the default one @@ -274,7 +274,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } else if (configuration == DeviceConfigurationOption_Wireless80211Network) { - if (g_TargetConfiguration.Wireless80211Configs == NULL || + if (g_TargetConfiguration.Wireless80211Configs == nullptr || (g_TargetConfiguration.Wireless80211Configs->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.Wireless80211Configs->Count)) { @@ -316,7 +316,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.CertificateStore->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.CertificateStore == NULL || + if (g_TargetConfiguration.CertificateStore == nullptr || (g_TargetConfiguration.CertificateStore->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.CertificateStore->Count)) { @@ -329,7 +329,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // now check if memory is erase, so the block can be stored - if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) { // memory not erased, can't store return FALSE; @@ -366,7 +366,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( (ByteAddress)g_TargetConfiguration.DeviceCertificates->Certificates[configurationIndex] + offset; } - if (g_TargetConfiguration.DeviceCertificates == NULL || + if (g_TargetConfiguration.DeviceCertificates == nullptr || (g_TargetConfiguration.DeviceCertificates->Count == 0 || (configurationIndex + 1) > g_TargetConfiguration.DeviceCertificates->Count)) { @@ -379,7 +379,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // now check if memory is erase, so the block can be stored - if (!STM32FlashDriver_IsBlockErased(NULL, storageAddress, blockSize)) + if (!STM32FlashDriver_IsBlockErased(nullptr, storageAddress, blockSize)) { // memory not erased, can't store return FALSE; @@ -410,7 +410,7 @@ __nfweak bool ConfigurationManager_StoreConfigurationBlock( } // copy the config block content to the config block storage - success = STM32FlashDriver_Write(NULL, storageAddress, blockSize, (unsigned char *)configurationBlock, true); + success = STM32FlashDriver_Write(nullptr, storageAddress, blockSize, (unsigned char *)configurationBlock, true); // enumeration is required after we are DONE with SUCCESSFULLY storing all the config chunks requiresEnumeration = (success && done); @@ -451,7 +451,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // allocate memory from CRT heap uint8_t *configSectorCopy = (uint8_t *)platform_malloc(sizeOfConfigSector); - if (configSectorCopy != NULL) + if (configSectorCopy != nullptr) { // copy config sector from flash to RAM memcpy(configSectorCopy, &__nanoConfig_start__, sizeOfConfigSector); @@ -589,7 +589,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock } // erase config sector - if (STM32FlashDriver_EraseBlock(NULL, (uint32_t)&__nanoConfig_start__) == TRUE) + if (STM32FlashDriver_EraseBlock(nullptr, (uint32_t)&__nanoConfig_start__) == TRUE) { // flash block is erased @@ -604,7 +604,7 @@ __nfweak UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock // copy the config block copy back to the config block storage if (STM32FlashDriver_Write( - NULL, + nullptr, (uint32_t)&__nanoConfig_start__, sizeOfConfigSector, (unsigned char *)configSectorCopy, diff --git a/targets/ChibiOS/_common/targetHAL_StorageOperation.cpp b/targets/ChibiOS/_common/targetHAL_StorageOperation.cpp index 9a95e36202..0cfa6925ee 100644 --- a/targets/ChibiOS/_common/targetHAL_StorageOperation.cpp +++ b/targets/ChibiOS/_common/targetHAL_StorageOperation.cpp @@ -24,7 +24,7 @@ int create_directories(lfs_t *lfs, const char *path) { char temp[256]; - char *pos = NULL; + char *pos = nullptr; size_t len = 0; int res = 0; @@ -70,7 +70,7 @@ uint32_t HAL_StorageOperation( (void)offset; lfs_file_t lfsFile; - lfs_t *lfsDrive = NULL; + lfs_t *lfsDrive = nullptr; // default to drive 0 int32_t driveIndex = 0; @@ -86,7 +86,7 @@ uint32_t HAL_StorageOperation( char *storageName = (char *)platform_malloc(nameLength + 1); // sanity check for successfull malloc - if (storageName == NULL) + if (storageName == nullptr) { return StorageOperationErrorCode::PlatformError; } @@ -108,7 +108,7 @@ uint32_t HAL_StorageOperation( char dir_path[256]; snprintf(dir_path, sizeof(dir_path), "%s", storageName); char *last_slash = strrchr(dir_path, '/'); - if (last_slash != NULL) + if (last_slash != nullptr) { *last_slash = '\0'; } @@ -181,7 +181,7 @@ uint32_t HAL_StorageOperation( done: // free buffer memory - if (storageName != NULL) + if (storageName != nullptr) { platform_free(storageName); } diff --git a/targets/ChibiOS/_littlefs/littlefs_FS_Driver.cpp b/targets/ChibiOS/_littlefs/littlefs_FS_Driver.cpp index 0eaada5450..26071ac09b 100644 --- a/targets/ChibiOS/_littlefs/littlefs_FS_Driver.cpp +++ b/targets/ChibiOS/_littlefs/littlefs_FS_Driver.cpp @@ -76,8 +76,8 @@ HRESULT LITTLEFS_FS_Driver::Format(const VOLUME_ID *volume, const char *volumeLa (void)volumeLabel; (void)parameters; - LITTLEFS_FileHandle *fileHandle = NULL; - uint8_t *index = NULL; + LITTLEFS_FileHandle *fileHandle = nullptr; + uint8_t *index = nullptr; // get littlefs instance fileHandle->fs = hal_lfs_get_fs_from_index(volume->volumeId); @@ -100,7 +100,7 @@ HRESULT LITTLEFS_FS_Driver::GetSizeInfo(const VOLUME_ID *volume, int64_t *totalS NANOCLR_HEADER(); lfs_ssize_t allocBlocks; - LITTLEFS_FileHandle *fileHandle = NULL; + LITTLEFS_FileHandle *fileHandle = nullptr; // get littlefs instance fileHandle->fs = hal_lfs_get_fs_from_index(volume->volumeId); @@ -173,7 +173,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void int32_t result; #endif - LITTLEFS_FileHandle *fileHandle = NULL; + LITTLEFS_FileHandle *fileHandle = nullptr; lfs_info info; int32_t flags; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -182,7 +182,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void // allocate file handle fileHandle = (LITTLEFS_FileHandle *)platform_malloc(sizeof(LITTLEFS_FileHandle)); - if (fileHandle == NULL) + if (fileHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -225,7 +225,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void fileHandle->nanoAttributes = FileAttributes_Normal; fileHandle->attr = {NANO_LITTLEFS_ATTRIBUTE, &fileHandle->nanoAttributes, NANO_LITTLEFS_ATTRIBUTE_SIZE}; fileHandle->fileConfig = { - .buffer = NULL, + .buffer = nullptr, .attrs = &fileHandle->attr, .attr_count = 1, }; @@ -265,7 +265,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void NANOCLR_CLEANUP(); - if (fileHandle != NULL) + if (fileHandle != nullptr) { platform_free(fileHandle); } @@ -541,12 +541,12 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_HEADER(); char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; - LITTLEFS_FindFileHandle *findHandle = NULL; + LITTLEFS_FindFileHandle *findHandle = nullptr; // allocate file handle findHandle = (LITTLEFS_FindFileHandle *)platform_malloc(sizeof(LITTLEFS_FindFileHandle)); - if (findHandle == NULL) + if (findHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -585,7 +585,7 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_CLEANUP(); - if (findHandle != NULL) + if (findHandle != nullptr) { platform_free(findHandle); } @@ -646,7 +646,7 @@ HRESULT LITTLEFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFo fi->FileName = (char *)platform_malloc(fi->FileNameSize + 1); // sanity check for successfull malloc - if (fi->FileName == NULL) + if (fi->FileName == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -677,7 +677,7 @@ HRESULT LITTLEFS_FS_Driver::FindClose(void *handle) { findHandle = (LITTLEFS_FindFileHandle *)handle; - if (findHandle->fs != NULL) + if (findHandle->fs != nullptr) { lfs_dir_close(findHandle->fs, &findHandle->dir); @@ -690,7 +690,7 @@ HRESULT LITTLEFS_FS_Driver::FindClose(void *handle) HRESULT LITTLEFS_FS_Driver::GetFileInfo(const VOLUME_ID *volume, const char *path, FS_FILEINFO *fileInfo, bool *found) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -748,7 +748,7 @@ HRESULT LITTLEFS_FS_Driver::GetAttributes(const VOLUME_ID *volume, const char *p { NANOCLR_HEADER(); - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; int32_t result; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -835,7 +835,7 @@ HRESULT LITTLEFS_FS_Driver::GetAttributes(const VOLUME_ID *volume, const char *p HRESULT LITTLEFS_FS_Driver::SetAttributes(const VOLUME_ID *volume, const char *path, uint32_t attributes) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; uint32_t currentAttributes; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -892,7 +892,7 @@ HRESULT LITTLEFS_FS_Driver::SetAttributes(const VOLUME_ID *volume, const char *p HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char *path) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; int32_t result = LFS_ERR_OK; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; char tempPath[FS_MAX_DIRECTORY_LENGTH + 1]; @@ -932,7 +932,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char // add back the '/' separator strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); } // remove trailing '/' @@ -978,7 +978,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char HRESULT LITTLEFS_FS_Driver::Move(const VOLUME_ID *volume, const char *oldPath, const char *newPath) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; char normalizedNewPath[FS_MAX_DIRECTORY_LENGTH]; char normalizedOldPath[FS_MAX_DIRECTORY_LENGTH]; int32_t result = LFS_ERR_OK; @@ -1022,7 +1022,7 @@ HRESULT LITTLEFS_FS_Driver::Move(const VOLUME_ID *volume, const char *oldPath, c HRESULT LITTLEFS_FS_Driver::Delete(const VOLUME_ID *volume, const char *path, bool recursive) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; int32_t result; diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp index dc28629d83..e18a848195 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp @@ -34,9 +34,9 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue ADCConversionGroup adcgrpcfg1; bool enableVref; - ADCDriver *adcDriver = NULL; + ADCDriver *adcDriver = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -97,8 +97,8 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue adcgrpcfg1 = { FALSE, 1, - NULL, - NULL, // replace with adcerrorcallback if required for debug + nullptr, + nullptr, // replace with adcerrorcallback if required for debug 0, /* CR1 */ ADC_CR2_SWSTART, /* CR2 */ ADC_SMPR1_SMP_AN11(ADC_SAMPLE_3), /* SMPR1 */ diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp index ada26de852..52397d47fd 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp @@ -14,9 +14,9 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcController::NativeOpenCh int channel; NF_PAL_ADC_PORT_PIN_CHANNEL adcDefinition; - ADCDriver *adcDriver = NULL; + ADCDriver *adcDriver = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -62,13 +62,13 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcController::NativeOpenCh NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } - if (adcDefinition.portId != NULL) + if (adcDefinition.portId != nullptr) { palSetGroupMode(adcDefinition.portId, PAL_PORT_BIT(adcDefinition.pin), 0, PAL_MODE_INPUT_ANALOG); } // start ADC - adcStart(adcDriver, NULL); + adcStart(adcDriver, nullptr); NANOCLR_NOCLEANUP(); } diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp index 566b75b5fb..756c9430c6 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp @@ -26,7 +26,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeWriteValu { NANOCLR_HEADER(); - CLR_RT_HeapBlock *dacController = NULL; + CLR_RT_HeapBlock *dacController = nullptr; // we are filling this below with the appropriate DAC port pin config and DAC driver NF_PAL_DAC_PORT_PIN_CHANNEL dacDefinition; @@ -39,7 +39,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeWriteValu // assign the value to the buffer sample = (dacsample_t)stack.Arg1().NumericByRef().u2; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -111,7 +111,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeDispose__ int channelNumber; bool disposeController = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp index 6fddb94c65..8d681a7d75 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp @@ -35,7 +35,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacController::NativeOpenCh // Get channel from argument int channel = stack.Arg1().NumericByRef().s4; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -97,7 +97,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacController::NativeOpenCh // start DAC driver if it's not already started if (palDac->Driver->state < DAC_READY) { - if (dacDefinition.portId != NULL) + if (dacDefinition.portId != nullptr) { palSetPadMode(dacDefinition.portId, dacDefinition.pin, PAL_MODE_INPUT_ANALOG); } @@ -160,7 +160,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacController::NativeInit__ int controllerId; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp index 68456d251d..d886bf1a04 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp @@ -103,17 +103,17 @@ static void GpioEventCallback(void *arg) } // Get pointer to gpio_input_state for Gpio pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = gpioInputList.FirstNode(); - while (ptr->Next() != NULL) + while (ptr->Next() != nullptr) { if (ptr->pinNumber == pinNumber) return ptr; ptr = ptr->Next(); } - return NULL; + return nullptr; } // Allocate a new gpio_input_state and add to end of list @@ -122,12 +122,12 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = GetInputState(pinNumber); - if (ptr == NULL) + if (ptr == nullptr) { ptr = (gpio_input_state *)platform_malloc(sizeof(gpio_input_state)); // sanity check - if (ptr != NULL) + if (ptr != nullptr) { memset(ptr, 0, sizeof(gpio_input_state)); ptr->pinNumber = pinNumber; @@ -276,7 +276,7 @@ bool CPU_GPIO_EnableInputPin( // Link ISR ptr supplied and not already set up // CPU_GPIO_EnableInputPin could be called a 2nd time with changed parameters - if (pinISR != NULL && (pState->isrPtr == NULL)) + if (pinISR != nullptr && (pState->isrPtr == nullptr)) { // there are callbacks registered and... // the drive mode is input so need to setup the interrupt @@ -313,7 +313,7 @@ bool CPU_GPIO_EnableInputPin( break; } } - else if (pinISR == NULL && (pState->isrPtr != NULL)) + else if (pinISR == nullptr && (pState->isrPtr != nullptr)) { // there is no managed handler setup anymore @@ -322,9 +322,9 @@ bool CPU_GPIO_EnableInputPin( palDisableLineEvent(GetIoLine(pState->pinNumber)); // clear parameters & configs - pState->isrPtr = NULL; + pState->isrPtr = nullptr; pState->mode = GPIO_INT_NONE; - pState->param = NULL; + pState->param = nullptr; pState->debounceMs = 0; } diff --git a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index d8e955a35f..c826100089 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -117,7 +117,7 @@ static THD_FUNCTION(I2CWorkingThread, arg) palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - NULL, + nullptr, 0, TIME_MS2I(estimatedDurationMiliseconds)); } @@ -146,11 +146,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { NANOCLR_HEADER(); - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock *connectionSettings; uint8_t busIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -169,7 +169,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { #if (STM32_I2C_USE_I2C1 == TRUE) case 1: - if (I2C1_PAL.Driver == NULL) + if (I2C1_PAL.Driver == nullptr) { ConfigPins_I2C1(); @@ -183,7 +183,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C2) && (STM32_I2C_USE_I2C2 == TRUE) case 2: - if (I2C2_PAL.Driver == NULL) + if (I2C2_PAL.Driver == nullptr) { ConfigPins_I2C2(); @@ -197,7 +197,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C3) && (STM32_I2C_USE_I2C3 == TRUE) case 3: - if (I2C3_PAL.Driver == NULL) + if (I2C3_PAL.Driver == nullptr) { ConfigPins_I2C3(); @@ -211,7 +211,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI #endif #if defined(STM32_I2C_USE_I2C4) && (STM32_I2C_USE_I2C4 == TRUE) case 4: - if (I2C4_PAL.Driver == NULL) + if (I2C4_PAL.Driver == nullptr) { ConfigPins_I2C4(); @@ -257,7 +257,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ CLR_RT_HeapBlock *connectionSettings; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -281,7 +281,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD1); // nulls driver - I2C1_PAL.Driver = NULL; + I2C1_PAL.Driver = nullptr; } break; #endif @@ -297,7 +297,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD2); // nulls driver - I2C2_PAL.Driver = NULL; + I2C2_PAL.Driver = nullptr; } break; @@ -314,7 +314,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD3); // nulls driver - I2C3_PAL.Driver = NULL; + I2C3_PAL.Driver = nullptr; } break; #endif @@ -330,7 +330,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // deactivates the I2C peripheral i2cStop(&I2CD4); // nulls driver - I2C4_PAL.Driver = NULL; + I2C4_PAL.Driver = nullptr; } break; #endif @@ -350,7 +350,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; bool isLongRunningOperation = false; msg_t transactionResult = MSG_OK; @@ -363,12 +363,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; CLR_RT_HeapBlock *connectionSettings; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; int readOffset = 0; int writeOffset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -409,11 +409,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -426,18 +426,18 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { // nothing to write, have to zero this palI2c->WriteSize = 0; } readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -450,7 +450,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: } } - if (readBuffer == NULL) + if (readBuffer == nullptr) { // nothing to read, have to zero this palI2c->ReadSize = 0; @@ -483,7 +483,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: palI2c->Driver->addr = palI2c->Address; #endif - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->WriteBuffer = (uint8_t *)writeBuffer->GetElement(writeOffset); @@ -493,7 +493,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: cacheBufferFlush(palI2c->WriteBuffer, palI2c->WriteSize); } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // grab the pointer to the array by starting and the offset specified in the span palI2c->ReadBuffer = (uint8_t *)readBuffer->GetElement(readOffset); @@ -512,9 +512,9 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: { // spawn working thread to perform the I2C transaction palI2c->WorkingThread = - chThdCreateFromHeap(NULL, THD_WORKING_AREA_SIZE(256), "I2CWT", NORMALPRIO, I2CWorkingThread, palI2c); + chThdCreateFromHeap(nullptr, THD_WORKING_AREA_SIZE(256), "I2CWT", NORMALPRIO, I2CWorkingThread, palI2c); - if (palI2c->WorkingThread == NULL) + if (palI2c->WorkingThread == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_PROCESS_EXCEPTION); } @@ -550,7 +550,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: palI2c->Address, palI2c->WriteBuffer, palI2c->WriteSize, - NULL, + nullptr, 0, TIME_MS2I(20)); } @@ -666,12 +666,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (hr != CLR_E_THREAD_WAITING) { // un-pin the buffers - if (writeBuffer != NULL && writeBuffer->IsPinned()) + if (writeBuffer != nullptr && writeBuffer->IsPinned()) { writeBuffer->Unpin(); } - if (readBuffer != NULL && readBuffer->IsPinned()) + if (readBuffer != nullptr && readBuffer->IsPinned()) { readBuffer->Unpin(); } diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index e561d827c2..ea01364a1e 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -826,7 +826,7 @@ int GetAlternateFunctionPwm(int timerId) PWMDriver *GetDriverPwm(int timerId) { - PWMDriver *pwmDriver = NULL; + PWMDriver *pwmDriver = nullptr; switch (timerId) { @@ -897,7 +897,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -933,12 +933,12 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire // PWM period (pwmcnt_t)period, // No callback - NULL, + nullptr, // Enable all channels - {{PWM_OUTPUT_ACTIVE_HIGH, NULL}, - {PWM_OUTPUT_ACTIVE_HIGH, NULL}, - {PWM_OUTPUT_ACTIVE_HIGH, NULL}, - {PWM_OUTPUT_ACTIVE_HIGH, NULL}}, + {{PWM_OUTPUT_ACTIVE_HIGH, nullptr}, + {PWM_OUTPUT_ACTIVE_HIGH, nullptr}, + {PWM_OUTPUT_ACTIVE_HIGH, nullptr}, + {PWM_OUTPUT_ACTIVE_HIGH, nullptr}}, 0, #if STM32_PWM_USE_ADVANCED 0, @@ -970,7 +970,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1009,7 +1009,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1038,7 +1038,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ChibiOS/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/ChibiOS/_nanoCLR/System.Device.Spi/cpu_spi.cpp index 90c8fd263f..b50cc952be 100644 --- a/targets/ChibiOS/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/ChibiOS/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -70,7 +70,7 @@ static void SpiCallback(SPIDriver *spip) NATIVE_INTERRUPT_START - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // Find the NF_PAL_SPI * for driver #if STM32_SPI_USE_SPI1 @@ -245,10 +245,10 @@ uint16_t ComputeBaudRate(SPI_DEVICE_CONFIGURATION &config, int32_t &actualFreque } // Return the NF_PAL structure for busIndex -// Return NULL is invalid bus +// Return nullptr is invalid bus NF_PAL_SPI *GetNfPalfromBusIndex(uint8_t busIndex) { - NF_PAL_SPI *palSpi = NULL; + NF_PAL_SPI *palSpi = nullptr; // get the PAL struct for the SPI bus // bus index is 0 based, here it's 1 based @@ -415,12 +415,12 @@ HRESULT CPU_SPI_nWrite_nRead( // Callback sync / async palSpi->Callback = wrc.callback; - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { palSpi->WriteSize = writeSize; } - if (readBuffer != NULL) + if (readBuffer != nullptr) { palSpi->ReadSize = readSize; } @@ -437,10 +437,10 @@ HRESULT CPU_SPI_nWrite_nRead( // Clear callback if sync if (sync) { - palSpi->Configuration.data_cb = NULL; + palSpi->Configuration.data_cb = nullptr; } - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // set the pointer to the write buffer as BYTE palSpi->WriteBuffer = (uint8_t *)writeBuffer; @@ -460,7 +460,7 @@ HRESULT CPU_SPI_nWrite_nRead( } } - if (readBuffer != NULL) + if (readBuffer != nullptr) { // set DMA read buffer if (palSpi->ReadSize > 0) @@ -673,7 +673,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev { #if STM32_SPI_USE_SPI1 case 1: - if (SPI1_PAL.Driver == NULL) + if (SPI1_PAL.Driver == nullptr) { ConfigPins_SPI1(spiDeviceConfig); SPI1_PAL.Driver = &SPID1; @@ -683,7 +683,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI2 case 2: - if (SPI2_PAL.Driver == NULL) + if (SPI2_PAL.Driver == nullptr) { ConfigPins_SPI2(spiDeviceConfig); SPI2_PAL.Driver = &SPID2; @@ -693,7 +693,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI3 case 3: - if (SPI3_PAL.Driver == NULL) + if (SPI3_PAL.Driver == nullptr) { ConfigPins_SPI3(spiDeviceConfig); SPI3_PAL.Driver = &SPID3; @@ -703,7 +703,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI4 case 4: - if (SPI4_PAL.Driver == NULL) + if (SPI4_PAL.Driver == nullptr) { ConfigPins_SPI4(spiDeviceConfig); SPI4_PAL.Driver = &SPID4; @@ -713,7 +713,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI5 case 5: - if (SPI5_PAL.Driver == NULL) + if (SPI5_PAL.Driver == nullptr) { ConfigPins_SPI5(spiDeviceConfig); SPI5_PAL.Driver = &SPID5; @@ -723,7 +723,7 @@ bool CPU_SPI_Initialize(uint8_t busIndex, const SPI_DEVICE_CONFIGURATION &spiDev #endif #if STM32_SPI_USE_SPI6 case 6: - if (SPI6_PAL.Driver == NULL) + if (SPI6_PAL.Driver == nullptr) { ConfigPins_SPI6(spiDeviceConfig); SPI6_PAL.Driver = &SPID6; @@ -748,7 +748,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI1 case 1: spiStop(&SPID1); - SPI1_PAL.Driver = NULL; + SPI1_PAL.Driver = nullptr; spiReleaseBus(&SPID1); break; #endif @@ -756,7 +756,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI2 case 2: spiStop(&SPID2); - SPI2_PAL.Driver = NULL; + SPI2_PAL.Driver = nullptr; spiReleaseBus(&SPID2); break; #endif @@ -764,7 +764,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI3 case 3: spiStop(&SPID3); - SPI3_PAL.Driver = NULL; + SPI3_PAL.Driver = nullptr; spiReleaseBus(&SPID3); break; #endif @@ -772,7 +772,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI4 case 4: spiStop(&SPID4); - SPI4_PAL.Driver = NULL; + SPI4_PAL.Driver = nullptr; spiReleaseBus(&SPID4); break; #endif @@ -780,7 +780,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI5 case 5: spiStop(&SPID5); - SPI5_PAL.Driver = NULL; + SPI5_PAL.Driver = nullptr; spiReleaseBus(&SPID5); break; #endif @@ -788,7 +788,7 @@ bool CPU_SPI_Uninitialize(uint8_t busIndex) #if STM32_SPI_USE_SPI6 case 6: spiStop(&SPID6); - SPI6_PAL.Driver = NULL; + SPI6_PAL.Driver = nullptr; spiReleaseBus(&SPID6); break; #endif diff --git a/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp b/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp index 889a7c9a78..b7496aceef 100644 --- a/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp +++ b/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp @@ -78,7 +78,7 @@ static NF_PAL_UART *GetUartPAL(int index) #endif default: // this COM port is not valid; - return NULL; + return nullptr; } } @@ -268,13 +268,13 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___ NF_PAL_UART *palUart; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -291,9 +291,9 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_InvertSignalLe #if defined(USART_CR2_TXINV) && defined(USART_CR2_RXINV) - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -304,7 +304,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_InvertSignalLe // get the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -329,9 +329,9 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::set_InvertSignalLe #if defined(USART_CR2_TXINV) && defined(USART_CR2_RXINV) - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -342,7 +342,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::set_InvertSignalLe // get the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -368,7 +368,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY CLR_RT_HeapBlock hbTimeout; CLR_RT_HeapBlock_Array *dataBuffer; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t *data; @@ -381,7 +381,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY int64_t *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -424,7 +424,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -506,14 +506,14 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - uint8_t *buffer = NULL; + uint8_t *buffer = nullptr; uint32_t bufferLength; CLR_RT_HeapBlock &top = stack.PushValue(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -524,7 +524,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -538,7 +538,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR buffer = (uint8_t *)platform_malloc(bufferLength); // sanity check - if (buffer == NULL) + if (buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -551,12 +551,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR else { // create an empty - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)nullptr)); } NANOCLR_CLEANUP(); - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -569,17 +569,17 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - uint8_t *line = NULL; - const char *newLine = NULL; + uint8_t *line = nullptr; + const char *newLine = nullptr; uint32_t newLineLength; int64_t *timeoutTicks; bool eventResult = true; bool newLineFound = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -594,7 +594,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -616,8 +616,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get new line from field newLine = pThis[FIELD___newLine].RecoverString(); - // sanity check for NULL string - if (newLine == NULL) + // sanity check for nullptr string + if (newLine == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -665,7 +665,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( stack.SetResult_String((const char *)line); // free memory, if needed - if (line != NULL) + if (line != nullptr) { platform_free(line); } @@ -677,7 +677,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; CLR_RT_HeapBlock_Array *dataBuffer; CLR_RT_HeapBlock hbTimeout; @@ -689,7 +689,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR int32_t count = 0; int32_t offset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -700,7 +700,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -792,7 +792,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR stack.SetResult_U4(count); // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -801,7 +801,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -874,7 +874,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( int32_t bufferSize; uint8_t watchChar; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -948,7 +948,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( palUart->RxBuffer = (uint8_t *)platform_malloc(bufferSize); // sanity check - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -980,15 +980,15 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -1207,7 +1207,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI uartStopReceive(palUart->UartDriver); // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1218,13 +1218,13 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar NF_PAL_UART *palUart; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -1240,18 +1240,18 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; CLR_RT_HeapBlock hbTimeout; int64_t *timeoutTicks; bool eventResult = true; bool isNewAllocation = false; - char *buffer = NULL; + char *buffer = nullptr; uint32_t bufferLength = 0; int32_t length = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1260,7 +1260,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ NANOCLR_SET_AND_LEAVE(CLR_E_OBJECT_DISPOSED); } - if (stack.Arg1().RecoverString() == NULL) + if (stack.Arg1().RecoverString() == nullptr) { // text string it's empty so there is noting to do here stack.SetResult_U4(0); @@ -1269,7 +1269,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ // Choose the driver for this SerialDevice palUart = GetUartPAL((int)pThis[FIELD___portIndex].NumericByRef().s4); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -1356,7 +1356,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1370,7 +1370,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte int32_t threshold; uint8_t portIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1386,7 +1386,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte // Choose the driver for this SerialDevice palUart = GetUartPAL(portIndex); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } diff --git a/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h b/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h index 58690f6606..c9309ebb0c 100644 --- a/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h +++ b/targets/ChibiOS/_nanoCLR/System.IO.Ports/sys_io_ser_native_target.h @@ -91,18 +91,18 @@ void ConfigPins_UART8(); #define UART_INIT(num) \ void Init_UART##num() \ { \ - Uart##num##_PAL.Uart_cfg.txend2_cb = NULL; \ - Uart##num##_PAL.Uart_cfg.rxend_cb = NULL; \ - Uart##num##_PAL.Uart_cfg.rxerr_cb = NULL; \ - Uart##num##_PAL.Uart_cfg.timeout_cb = NULL; \ + Uart##num##_PAL.Uart_cfg.txend2_cb = nullptr; \ + Uart##num##_PAL.Uart_cfg.rxend_cb = nullptr; \ + Uart##num##_PAL.Uart_cfg.rxerr_cb = nullptr; \ + Uart##num##_PAL.Uart_cfg.timeout_cb = nullptr; \ Uart##num##_PAL.Uart_cfg.timeout = 0; \ Uart##num##_PAL.Uart_cfg.speed = 9600; \ Uart##num##_PAL.Uart_cfg.cr1 = 0; \ Uart##num##_PAL.Uart_cfg.cr2 = 0; \ Uart##num##_PAL.Uart_cfg.cr3 = 0; \ - Uart##num##_PAL.TxBuffer = NULL; \ + Uart##num##_PAL.TxBuffer = nullptr; \ Uart##num##_PAL.TxOngoingCount = 0; \ - Uart##num##_PAL.RxBuffer = NULL; \ + Uart##num##_PAL.RxBuffer = nullptr; \ Uart##num##_PAL.WatchChar = 0; \ Uart##num##_PAL.NewLineChar = 0; \ Uart##num##_PAL.SignalLevelsInverted = false; \ @@ -114,16 +114,16 @@ void ConfigPins_UART8(); #define UART_INIT(num) \ void Init_UART##num() \ { \ - Uart##num##_PAL.Uart_cfg.txend2_cb = NULL; \ - Uart##num##_PAL.Uart_cfg.rxend_cb = NULL; \ - Uart##num##_PAL.Uart_cfg.rxerr_cb = NULL; \ + Uart##num##_PAL.Uart_cfg.txend2_cb = nullptr; \ + Uart##num##_PAL.Uart_cfg.rxend_cb = nullptr; \ + Uart##num##_PAL.Uart_cfg.rxerr_cb = nullptr; \ Uart##num##_PAL.Uart_cfg.speed = 9600; \ Uart##num##_PAL.Uart_cfg.cr1 = 0; \ Uart##num##_PAL.Uart_cfg.cr2 = 0; \ Uart##num##_PAL.Uart_cfg.cr3 = 0; \ - Uart##num##_PAL.TxBuffer = NULL; \ + Uart##num##_PAL.TxBuffer = nullptr; \ Uart##num##_PAL.TxOngoingCount = 0; \ - Uart##num##_PAL.RxBuffer = NULL; \ + Uart##num##_PAL.RxBuffer = nullptr; \ Uart##num##_PAL.WatchChar = 0; \ Uart##num##_PAL.NewLineChar = 0; \ Uart##num##_PAL.SignalLevelsInverted = false; \ @@ -149,9 +149,9 @@ void Init_UART8(); { \ uartStop(&UARTD##num); \ platform_free(Uart##num##_PAL.RxBuffer); \ - Uart##num##_PAL.TxBuffer = NULL; \ - Uart##num##_PAL.RxBuffer = NULL; \ - Uart##num##_PAL.UartDriver = NULL; \ + Uart##num##_PAL.TxBuffer = nullptr; \ + Uart##num##_PAL.RxBuffer = nullptr; \ + Uart##num##_PAL.UartDriver = nullptr; \ return; \ } diff --git a/targets/ChibiOS/_nanoCLR/nanoCRT.cpp b/targets/ChibiOS/_nanoCLR/nanoCRT.cpp index 4297bd9a2a..02457db7ad 100644 --- a/targets/ChibiOS/_nanoCLR/nanoCRT.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoCRT.cpp @@ -137,7 +137,7 @@ int hal_strcpy_s(char *strDst, size_t sizeInBytes, const char *strSrc) #undef strcpy size_t len; - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -160,7 +160,7 @@ int hal_strncpy_s(char *strDst, size_t sizeInBytes, const char *strSrc, size_t c { NATIVE_PROFILE_PAL_CRT(); #undef strncpy - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -194,7 +194,7 @@ int hal_strncmp_s(const char *str1, const char *str2, size_t num) { NATIVE_PROFILE_PAL_CRT(); #undef strncmp - if (str1 == NULL || str2 == NULL) + if (str1 == nullptr || str2 == nullptr) { _ASSERTE(FALSE); return 1; diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp index 250a966bb6..e4912e6bc8 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.Can/nf_device_can_native_nanoFramework_Device_Can_CanController.cpp @@ -80,7 +80,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController:: CLR_RT_HeapBlock_Array *message; CANTxFrame txmsg; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); CLR_RT_HeapBlock *pMessage = stack.Arg1().Dereference(); @@ -110,7 +110,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController:: NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_RANGE); // compose the transmit packet to send - if (message != NULL) + if (message != nullptr) { // copy message to structure memcpy(txmsg.data8, (uint8_t *)message->GetFirstElement(), message->m_numOfElements); @@ -164,14 +164,14 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController:: NANOCLR_HEADER(); CLR_RT_TypeDef_Index canMessageTypeDef; - CLR_RT_HeapBlock *canMessage = NULL; + CLR_RT_HeapBlock *canMessage = nullptr; CANRxFrame canFrame; NF_PAL_CAN *palCan; uint8_t controllerIndex; size_t messageCount = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -262,7 +262,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController:: else { // no more messages, return null - stack.SetResult_Object(NULL); + stack.SetResult_Object(nullptr); } NANOCLR_NOCLEANUP(); @@ -275,7 +275,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Dis uint8_t controllerIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -288,7 +288,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Dis { #if defined(STM32_CAN_USE_CAN1) && (STM32_CAN_USE_CAN1 == TRUE) case 1: - Can1_PAL.Driver = NULL; + Can1_PAL.Driver = nullptr; // stop CAN canStop(&CAND1); break; @@ -296,7 +296,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Dis #if (STM32_CAN_USE_CAN2) && (STM32_CAN_USE_CAN2 == TRUE) case 2: - Can2_PAL.Driver = NULL; + Can2_PAL.Driver = nullptr; // stop CAN canStop(&CAND2); break; @@ -304,7 +304,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Dis #if (STM32_CAN_USE_CAN3) && (STM32_CAN_USE_CAN3 == TRUE) case 3: - Can3_PAL.Driver = NULL; + Can3_PAL.Driver = nullptr; // stop CAN canStop(&CAND3); break; @@ -323,9 +323,9 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Nat { NANOCLR_HEADER(); { - NF_PAL_CAN *palCan = NULL; + NF_PAL_CAN *palCan = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -389,7 +389,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Nat { NANOCLR_HEADER(); - NF_PAL_CAN *palCan = NULL; + NF_PAL_CAN *palCan = nullptr; bool callbacksRegistered; uint8_t controllerIndex; @@ -400,7 +400,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Nat controllerIndex = (uint8_t)(pThis[FIELD___controllerId].NumericByRef().s4); // flag to determine if there are any callbacks registered in managed code - callbacksRegistered = (pThis[FIELD___callbacks].Dereference() != NULL); + callbacksRegistered = (pThis[FIELD___callbacks].Dereference() != nullptr); switch (controllerIndex) { @@ -437,7 +437,7 @@ HRESULT Library_nf_device_can_native_nanoFramework_Device_Can_CanController::Nat else { // no one listening, OK to remove - palCan->Driver->rxfull_cb = NULL; + palCan->Driver->rxfull_cb = nullptr; } // start CAN diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp index 14745133ae..fb003830d4 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp @@ -122,7 +122,7 @@ HRESULT Library_nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost::FindFir // spawn working thread to perform the 1-Wire operations OneWireWorkingThread = chThdCreateFromHeap( - NULL, + nullptr, THD_WORKING_AREA_SIZE(256), "OWWT", NORMALPRIO, @@ -161,7 +161,7 @@ HRESULT Library_nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost::FindFir { // if a device was found update serialNumber field in managed class - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -214,7 +214,7 @@ HRESULT Library_nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost::FindNex // spawn working thread to perform the 1-Wire operations OneWireWorkingThread = chThdCreateFromHeap( - NULL, + nullptr, THD_WORKING_AREA_SIZE(256), "OWWT", NORMALPRIO, @@ -253,7 +253,7 @@ HRESULT Library_nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost::FindNex { // update serialNumber field - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemory.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemory.cpp index 44a47e0084..fc6cea1947 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemory.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemory.cpp @@ -22,7 +22,7 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemo // address of bkp register 0 __IO uint32_t *baseAddress = &(RTC->BKP0R); uint8_t *storeAddress = ((uint8_t *)baseAddress + position); - uint32_t *registerAddress = NULL; + uint32_t *registerAddress = nullptr; uint32_t tempRegisterValue; uint32_t counter = 0; uint32_t remainder; @@ -128,7 +128,7 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_BackupMemo // address of bkp register 0 __IO uint32_t *baseAddress = &(RTC->BKP0R); uint8_t *storeAddress = ((uint8_t *)baseAddress + position); - uint32_t *registerAddress = NULL; + uint32_t *registerAddress = nullptr; uint32_t tempRegisterValue; uint32_t counter = 0; uint32_t remainder; diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Configuration.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Configuration.cpp index 2b377d076c..ade58476e2 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Configuration.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Configuration.cpp @@ -9,7 +9,7 @@ #if defined(HAL_USE_ADC) && (HAL_USE_ADC == TRUE) #include -NF_PAL_ADC_PORT_PIN_CHANNEL *RuntimeAdcPortPinConfig = NULL; +NF_PAL_ADC_PORT_PIN_CHANNEL *RuntimeAdcPortPinConfig = nullptr; uint8_t RuntimeAdcChannelCount = 0; int8_t GetNextFreeAdcChannel(NF_PAL_ADC_PORT_PIN_CHANNEL *&newChannel); @@ -178,14 +178,14 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Configurat int8_t GetNextFreeAdcChannel(NF_PAL_ADC_PORT_PIN_CHANNEL *&newChannel) { int8_t channelIndex = -1; - newChannel = NULL; + newChannel = nullptr; - if (RuntimeAdcPortPinConfig == NULL) + if (RuntimeAdcPortPinConfig == nullptr) { RuntimeAdcPortPinConfig = (NF_PAL_ADC_PORT_PIN_CHANNEL *)platform_malloc(sizeof(NF_PAL_ADC_PORT_PIN_CHANNEL)); // sanity check - if (RuntimeAdcPortPinConfig != NULL) + if (RuntimeAdcPortPinConfig != nullptr) { // clear memory memset(RuntimeAdcPortPinConfig, 0, sizeof(NF_PAL_ADC_PORT_PIN_CHANNEL)); @@ -215,7 +215,7 @@ int8_t GetNextFreeAdcChannel(NF_PAL_ADC_PORT_PIN_CHANNEL *&newChannel) (RuntimeAdcChannelCount + 1) * sizeof(NF_PAL_ADC_PORT_PIN_CHANNEL)); // sanity check - if (RuntimeAdcPortPinConfig != NULL) + if (RuntimeAdcPortPinConfig != nullptr) { // update the number of channels RuntimeAdcChannelCount++; diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power.cpp index fb9721049a..3a4d62ba94 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power.cpp @@ -41,7 +41,7 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power::Dis uint32_t wakeUpPin; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); switch((WakeupPin)stack.Arg0().NumericByRef().u4) @@ -110,7 +110,7 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_Power::Ena uint32_t wakeUpPin; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis); switch((WakeupPin)stack.Arg0().NumericByRef().u4) diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_RTC.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_RTC.cpp index 3526232684..b929377089 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_RTC.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.Hardware.Stm32/nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_RTC.cpp @@ -29,7 +29,7 @@ HRESULT Library_nf_hardware_stm32_native_nanoFramework_Hardware_Stm32_RTC:: // it's only possible to set seconds, minutes, hours and date (day) // to set the alarm, it has to be stoped first (in case there is one already set) - rtcSetAlarm(&RTCD1, ALARM_ID, NULL); + rtcSetAlarm(&RTCD1, ALARM_ID, nullptr); // alarm date (day) tens and units value = stack.Arg0().NumericByRef().u1; diff --git a/targets/ChibiOS/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp b/targets/ChibiOS/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp index 2ce98bd318..9520fa5aa8 100644 --- a/targets/ChibiOS/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp +++ b/targets/ChibiOS/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp @@ -25,13 +25,13 @@ HRESULT Library_nf_sys_io_hashing_System_IO_Hashing_Crc32::ComputeHash___STATIC_ CLR_RT_HeapBlock *bufferSpanByte; CLR_RT_HeapBlock_Array *buffer; - uint8_t *bufferData = NULL; + uint8_t *bufferData = nullptr; int16_t bufferSize = 0; int16_t bufferOffset = 0; uint32_t crc32 = 0; uint32_t hash = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr bufferSpanByte = stack.Arg1().Dereference(); FAULT_ON_NULL_ARG(bufferSpanByte); diff --git a/targets/ChibiOS/_nanoCLR/targetHAL.cpp b/targets/ChibiOS/_nanoCLR/targetHAL.cpp index c54146e5b8..60cea6dfba 100644 --- a/targets/ChibiOS/_nanoCLR/targetHAL.cpp +++ b/targets/ChibiOS/_nanoCLR/targetHAL.cpp @@ -68,7 +68,7 @@ void nanoHAL_Initialize() FileSystemVolumeList::InitializeVolumes(); // clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -171,7 +171,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // TODO check for s_rebootHandlers // for(int i = 0; i< ARRAYSIZE(s_rebootHandlers); i++) // { - // if(s_rebootHandlers[i] != NULL) + // if(s_rebootHandlers[i] != nullptr) // { // s_rebootHandlers[i](); // } diff --git a/targets/ChibiOS/_nanoCLR/targetPAL_Events.cpp b/targets/ChibiOS/_nanoCLR/targetPAL_Events.cpp index 5f5805f845..5211290127 100644 --- a/targets/ChibiOS/_nanoCLR/targetPAL_Events.cpp +++ b/targets/ChibiOS/_nanoCLR/targetPAL_Events.cpp @@ -34,7 +34,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) { NATIVE_PROFILE_PAL_EVENTS(); - if (timerCompleteFlag != NULL) + if (timerCompleteFlag != nullptr) { // no need to stop the timer even if it's running because the API does it anyway if (port_is_isr_context()) diff --git a/targets/ChibiOS/_nanoCLR/targetPAL_Time.cpp b/targets/ChibiOS/_nanoCLR/targetPAL_Time.cpp index aafa3ac1e7..8675ff98e1 100644 --- a/targets/ChibiOS/_nanoCLR/targetPAL_Time.cpp +++ b/targets/ChibiOS/_nanoCLR/targetPAL_Time.cpp @@ -11,7 +11,7 @@ // timer for next event static virtual_timer_t nextEventTimer; -void* nextEventCallbackDummyArg = NULL; +void* nextEventCallbackDummyArg = nullptr; static void NextEventTimer_Callback(virtual_timer_t *vtp, void* arg ) { diff --git a/targets/ESP32/ESP32/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp b/targets/ESP32/ESP32/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp index b55a150453..60baf23799 100644 --- a/targets/ESP32/ESP32/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp +++ b/targets/ESP32/ESP32/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp @@ -70,7 +70,7 @@ bool GraphicsMemory::GraphicsHeapLocation( graphicsStartingAddress = (CLR_UINT8 *)heap_caps_malloc(graphicsMemoryBlockSize, memoryCaps); - ASSERT(graphicsStartingAddress != NULL); + ASSERT(graphicsStartingAddress != nullptr); graphicsEndingAddress = (CLR_UINT8 *)(graphicsStartingAddress + graphicsMemoryBlockSize); // Save where we allocated it for restarts diff --git a/targets/ESP32/ESP32_C6/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/ESP32/ESP32_C6/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index 1ac27069fa..b550747868 100644 --- a/targets/ESP32/ESP32_C6/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/ESP32/ESP32_C6/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -166,7 +166,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeInit___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -201,7 +201,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -268,7 +268,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -312,7 +312,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -333,7 +333,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/ESP32_C6/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp b/targets/ESP32/ESP32_C6/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp index 06f08993c5..c302a4be65 100644 --- a/targets/ESP32/ESP32_C6/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp +++ b/targets/ESP32/ESP32_C6/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp @@ -68,7 +68,7 @@ bool GraphicsMemory::GraphicsHeapLocation( graphicsMemoryBlockSize = spiramMaxSize; } graphicsStartingAddress = (CLR_UINT8 *)heap_caps_malloc(graphicsMemoryBlockSize, memoryCaps); - ASSERT(graphicsStartingAddress != NULL); + ASSERT(graphicsStartingAddress != nullptr); graphicsEndingAddress = (CLR_UINT8 *)(graphicsStartingAddress + graphicsMemoryBlockSize); // Save where we allocated it for restarts diff --git a/targets/ESP32/ESP32_H2/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/ESP32/ESP32_H2/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index 1ac27069fa..b550747868 100644 --- a/targets/ESP32/ESP32_H2/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/ESP32/ESP32_H2/nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -166,7 +166,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeInit___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -201,7 +201,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -268,7 +268,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -312,7 +312,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -333,7 +333,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/ESP32_S2/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp b/targets/ESP32/ESP32_S2/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp index 06f08993c5..c302a4be65 100644 --- a/targets/ESP32/ESP32_S2/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp +++ b/targets/ESP32/ESP32_S2/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp @@ -68,7 +68,7 @@ bool GraphicsMemory::GraphicsHeapLocation( graphicsMemoryBlockSize = spiramMaxSize; } graphicsStartingAddress = (CLR_UINT8 *)heap_caps_malloc(graphicsMemoryBlockSize, memoryCaps); - ASSERT(graphicsStartingAddress != NULL); + ASSERT(graphicsStartingAddress != nullptr); graphicsEndingAddress = (CLR_UINT8 *)(graphicsStartingAddress + graphicsMemoryBlockSize); // Save where we allocated it for restarts diff --git a/targets/ESP32/ESP32_S3/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp b/targets/ESP32/ESP32_S3/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp index 06f08993c5..c302a4be65 100644 --- a/targets/ESP32/ESP32_S3/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp +++ b/targets/ESP32/ESP32_S3/nanoCLR/nanoFramework.Graphics/Graphics_Memory.cpp @@ -68,7 +68,7 @@ bool GraphicsMemory::GraphicsHeapLocation( graphicsMemoryBlockSize = spiramMaxSize; } graphicsStartingAddress = (CLR_UINT8 *)heap_caps_malloc(graphicsMemoryBlockSize, memoryCaps); - ASSERT(graphicsStartingAddress != NULL); + ASSERT(graphicsStartingAddress != nullptr); graphicsEndingAddress = (CLR_UINT8 *)(graphicsStartingAddress + graphicsMemoryBlockSize); // Save where we allocated it for restarts diff --git a/targets/ESP32/_FatFs/fatfs_FS_Driver.cpp b/targets/ESP32/_FatFs/fatfs_FS_Driver.cpp index 9fd650503f..5fca0d2761 100644 --- a/targets/ESP32/_FatFs/fatfs_FS_Driver.cpp +++ b/targets/ESP32/_FatFs/fatfs_FS_Driver.cpp @@ -22,7 +22,7 @@ STREAM_DRIVER_DETAILS *FATFS_FS_Driver::DriverDetails(const VOLUME_ID *volume) { (void)volume; - static STREAM_DRIVER_DETAILS driverDetail = {DIRECT_IO, NULL, NULL, 0, 0, TRUE, TRUE, TRUE, 0, 0}; + static STREAM_DRIVER_DETAILS driverDetail = {DIRECT_IO, nullptr, nullptr, 0, 0, TRUE, TRUE, TRUE, 0, 0}; return &driverDetail; } @@ -136,11 +136,11 @@ HRESULT FATFS_FS_Driver::GetVolumeLabel(const VOLUME_ID *volume, char *volumeLab (void)volumeLabel; (void)volumeLabelLen; - // FATFS *fs = NULL; + // FATFS *fs = nullptr; // //fs = GetFileSystemForVolume(volume, true); - // if (fs == NULL) + // if (fs == nullptr) // { // return FALSE; // } @@ -172,7 +172,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& int32_t result; #endif - FATFS_FileHandle *fileHandle = NULL; + FATFS_FileHandle *fileHandle = nullptr; FILINFO info; int32_t flags; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -182,7 +182,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& // allocate file handle fileHandle = (FATFS_FileHandle *)platform_malloc(sizeof(FATFS_FileHandle)); - if (fileHandle == NULL) + if (fileHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -242,7 +242,7 @@ HRESULT FATFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void *& NANOCLR_CLEANUP(); - if (fileHandle != NULL) + if (fileHandle != nullptr) { platform_free(fileHandle); } @@ -484,13 +484,13 @@ HRESULT FATFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, voi NANOCLR_HEADER(); char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; - FATFS_FindFileHandle *findHandle = NULL; + FATFS_FindFileHandle *findHandle = nullptr; FileSystemVolume *currentVolume; // allocate file handle findHandle = (FATFS_FindFileHandle *)platform_malloc(sizeof(FATFS_FindFileHandle)); - if (findHandle == NULL) + if (findHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -521,7 +521,7 @@ HRESULT FATFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, voi NANOCLR_CLEANUP(); - if (findHandle != NULL) + if (findHandle != nullptr) { platform_free(findHandle); } @@ -576,7 +576,7 @@ HRESULT FATFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFound fi->FileName = (char *)platform_malloc(fi->FileNameSize + 1); // sanity check for successfull malloc - if (fi->FileName == NULL) + if (fi->FileName == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -783,7 +783,7 @@ HRESULT FATFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char *pa // add back the '/' separator strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); } // remove trailing '/' diff --git a/targets/ESP32/_Network/NF_ESP32_Ethernet.cpp b/targets/ESP32/_Network/NF_ESP32_Ethernet.cpp index b16214fab7..3e72ba6d10 100644 --- a/targets/ESP32/_Network/NF_ESP32_Ethernet.cpp +++ b/targets/ESP32/_Network/NF_ESP32_Ethernet.cpp @@ -10,7 +10,7 @@ static const char *TAG = "ETH"; -esp_eth_handle_t eth_handle = NULL; +esp_eth_handle_t eth_handle = nullptr; // OLIMEX ESP32-EVB Rev B, OLIMEX ESP32-Gateway, Generic Lan8270 // ETH_PHY_ADDR 0 @@ -45,7 +45,7 @@ esp_err_t NF_ESP32_InitialiseEthernet(uint8_t *pMacAdr) #ifdef ESP32_ETHERNET_SUPPORT - if (eth_handle != NULL) + if (eth_handle != nullptr) { return esp_eth_start(eth_handle); } diff --git a/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp b/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp index 1c8d0358dd..f664ffd82c 100644 --- a/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp +++ b/targets/ESP32/_Network/NF_ESP32_OpenThread.cpp @@ -97,7 +97,7 @@ extern void ThreadSetInterfaceNumber(int networkInterfaceNumber); .task_queue_size = 10, \ } -static esp_netif_t *openthread_netif = NULL; +static esp_netif_t *openthread_netif = nullptr; // Maximum number of entries in cliOutputsList #define cliListMaxSize 50 @@ -118,7 +118,7 @@ static esp_netif_t *init_openthread_netif(const esp_openthread_platform_config_t { esp_netif_config_t cfg = ESP_NETIF_DEFAULT_OPENTHREAD(); esp_netif_t *netif = esp_netif_new(&cfg); - assert(netif != NULL); + assert(netif != nullptr); ESP_ERROR_CHECK(esp_netif_attach(netif, esp_openthread_netif_glue_init(config))); @@ -427,7 +427,7 @@ esp_err_t initOpenThread(ThreadDeviceType deviceType, esp_openthread_radio_mode_ // The OpenThread log level directly matches ESP log level (void)otLoggingSetLevel(CONFIG_LOG_DEFAULT_LEVEL); - otCliInit(esp_openthread_get_instance(), cliOutputCallback, NULL); + otCliInit(esp_openthread_get_instance(), cliOutputCallback, nullptr); // Clear '>' from output on init ResetLineBuffer(); @@ -457,7 +457,7 @@ static void openThreadMainTask(void *aContext) esp_openthread_netif_glue_deinit(); esp_vfs_eventfd_unregister(); - vTaskDelete(NULL); + vTaskDelete(nullptr); } bool startStopOpenThread(bool start) @@ -533,10 +533,10 @@ void JoinerStart(const char *pskc, const char *url) { otError oterr; - oterr = otJoinerStart(esp_openthread_get_instance(), pskc, url, NULL, NULL, NULL, NULL, JoinerCallback, NULL); + oterr = otJoinerStart(esp_openthread_get_instance(), pskc, url, nullptr, nullptr, nullptr, nullptr, JoinerCallback, nullptr); if (oterr != OT_ERROR_NONE) { - JoinerCallback(oterr, NULL); + JoinerCallback(oterr, nullptr); } } diff --git a/targets/ESP32/_Network/NF_ESP32_SmartConfig.cpp b/targets/ESP32/_Network/NF_ESP32_SmartConfig.cpp index 29335577b4..a790bec31b 100644 --- a/targets/ESP32/_Network/NF_ESP32_SmartConfig.cpp +++ b/targets/ESP32/_Network/NF_ESP32_SmartConfig.cpp @@ -78,7 +78,7 @@ void smartconfig_task(void *parm) ESP_ERROR_CHECK(esp_smartconfig_start(&cfg)); sc_wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL)); + ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, nullptr)); while (1) { @@ -92,12 +92,12 @@ void smartconfig_task(void *parm) vEventGroupDelete(sc_wifi_event_group); - vTaskDelete(NULL); + vTaskDelete(nullptr); } } } void NF_ESP32_Start_wifi_smart_config(void) { - xTaskCreate(smartconfig_task, "smartconfig_task", 4096, NULL, 3, NULL); + xTaskCreate(smartconfig_task, "smartconfig_task", 4096, nullptr, 3, nullptr); } diff --git a/targets/ESP32/_Network/NF_ESP32_Wireless.cpp b/targets/ESP32/_Network/NF_ESP32_Wireless.cpp index 6954849512..38bbecb370 100644 --- a/targets/ESP32/_Network/NF_ESP32_Wireless.cpp +++ b/targets/ESP32/_Network/NF_ESP32_Wireless.cpp @@ -17,8 +17,8 @@ static wifi_mode_t wifiMode; // flag to store if Wi-Fi has been initialized static bool IsWifiInitialised = false; -static esp_netif_t *wifiStaNetif = NULL; -static esp_netif_t *wifiAPNetif = NULL; +static esp_netif_t *wifiStaNetif = nullptr; +static esp_netif_t *wifiAPNetif = nullptr; // flag to signal if connect is to happen bool NF_ESP32_IsToConnect = false; @@ -33,14 +33,14 @@ wifi_mode_t NF_ESP32_CheckExpectedWifiMode() { wifi_mode_t mode = WIFI_MODE_NULL; - HAL_Configuration_Wireless80211 *wirelessConfig = NULL; - HAL_Configuration_WirelessAP *wirelessAPConfig = NULL; + HAL_Configuration_Wireless80211 *wirelessConfig = nullptr; + HAL_Configuration_WirelessAP *wirelessAPConfig = nullptr; HAL_Configuration_NetworkInterface *networkConfig = (HAL_Configuration_NetworkInterface *)platform_malloc(sizeof(HAL_Configuration_NetworkInterface)); // check allocation - if (networkConfig == NULL) + if (networkConfig == nullptr) { return WIFI_MODE_NULL; } @@ -56,7 +56,7 @@ wifi_mode_t NF_ESP32_CheckExpectedWifiMode() { wirelessConfig = ConfigurationManager_GetWirelessConfigurationFromId(networkConfig->SpecificConfigId); - if (wirelessConfig != NULL) + if (wirelessConfig != nullptr) { if (wirelessConfig->Options & Wireless80211Configuration_ConfigurationOptions_Enable) { @@ -79,7 +79,7 @@ wifi_mode_t NF_ESP32_CheckExpectedWifiMode() wirelessAPConfig = ConfigurationManager_GetWirelessAPConfigurationFromId(networkConfig->SpecificConfigId); - if (wirelessAPConfig != NULL) + if (wirelessAPConfig != nullptr) { if (wirelessAPConfig->Options & WirelessAPConfiguration_ConfigurationOptions_Enable) { @@ -121,9 +121,9 @@ void NF_ESP32_DeinitWifi() esp_wifi_stop(); esp_netif_destroy_default_wifi(wifiStaNetif); - wifiStaNetif = NULL; + wifiStaNetif = nullptr; esp_netif_destroy_default_wifi(wifiAPNetif); - wifiAPNetif = NULL; + wifiAPNetif = nullptr; esp_wifi_deinit(); } @@ -213,7 +213,7 @@ esp_err_t NF_ESP32_InitaliseWifi() { HAL_Configuration_NetworkInterface *networkConfig = (HAL_Configuration_NetworkInterface *)platform_malloc(sizeof(HAL_Configuration_NetworkInterface)); - if (networkConfig == NULL) + if (networkConfig == nullptr) { return ESP_FAIL; } @@ -308,7 +308,7 @@ int NF_ESP32_Wireless_Open(HAL_Configuration_NetworkInterface *config) HAL_Configuration_Wireless80211 *wirelessConfig = ConfigurationManager_GetWirelessConfigurationFromId(config->SpecificConfigId); - if (wirelessConfig == NULL) + if (wirelessConfig == nullptr) { return SOCK_SOCKET_ERROR; } @@ -548,7 +548,7 @@ int NF_ESP32_Wait_NetNumber(int num) break; } - if (espNetif != NULL) + if (espNetif != nullptr) { break; } diff --git a/targets/ESP32/_common/Target_Network.cpp b/targets/ESP32/_common/Target_Network.cpp index 52a4e1e73c..05e7526c1b 100644 --- a/targets/ESP32/_common/Target_Network.cpp +++ b/targets/ESP32/_common/Target_Network.cpp @@ -189,11 +189,11 @@ bool GetWirelessConfig(int index, HAL_Configuration_Wireless80211 **wirelessConf int Network_Interface_Start_Connect(int index, const char *ssid, const char *passphase, int options) { // need to free memory, if allocated in successful GetWirelessConfig - HAL_Configuration_Wireless80211 *wirelessConfig = NULL; + HAL_Configuration_Wireless80211 *wirelessConfig = nullptr; if (GetWirelessConfig(index, &wirelessConfig) == false) { - if (wirelessConfig != NULL) + if (wirelessConfig != nullptr) { platform_free(wirelessConfig); } diff --git a/targets/ESP32/_common/Target_System_IO_FileSystem.c b/targets/ESP32/_common/Target_System_IO_FileSystem.c index baa128af58..d08cbf8702 100644 --- a/targets/ESP32/_common/Target_System_IO_FileSystem.c +++ b/targets/ESP32/_common/Target_System_IO_FileSystem.c @@ -61,7 +61,7 @@ bool Storage_UnMountSDCard(int driveIndex) return false; } - card = NULL; + card = nullptr; return true; } diff --git a/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c b/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c index df4579cae5..0e3a79a814 100644 --- a/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c +++ b/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c @@ -160,14 +160,14 @@ FILE *ConfigStorage_OpenFile( // Open SPIFFS config storage FILE *file = fopen(fileName, isWrite ? (isAppend ? "a" : "w") : "r"); - if (file != NULL) + if (file != nullptr) { return file; } ESP_LOGE(TAG, "NANO: Failed to open file (%s)", fileName); - return NULL; + return nullptr; } // @@ -375,9 +375,9 @@ HAL_CONFIGURATION_NETWORK *ConfigStorage_FindNetworkConfigurationBlocks() HAL_CONFIGURATION_NETWORK *networkConfigs = (HAL_CONFIGURATION_NETWORK *)platform_malloc(allocationSize); // check allocation - if (networkConfigs == NULL) + if (networkConfigs == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -421,9 +421,9 @@ HAL_CONFIGURATION_NETWORK_WIRELESS80211 *ConfigStorage_FindNetworkWireless80211C (HAL_CONFIGURATION_NETWORK_WIRELESS80211 *)platform_malloc(allocationSize); // check allocation - if (networkWirelessConfigs == NULL) + if (networkWirelessConfigs == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -467,9 +467,9 @@ HAL_CONFIGURATION_NETWORK_WIRELESSAP *ConfigStorage_FindNetworkWirelessAPConfigu (HAL_CONFIGURATION_NETWORK_WIRELESSAP *)platform_malloc(allocationSize); // check allocation - if (networkWirelessAPConfigs == NULL) + if (networkWirelessAPConfigs == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -517,9 +517,9 @@ HAL_CONFIGURATION_X509_CERTIFICATE *ConfigStorage_FindX509CertificateConfigurati (HAL_CONFIGURATION_X509_CERTIFICATE *)platform_malloc(allocationSize); // check allocation - if (certificateStore == NULL) + if (certificateStore == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -535,9 +535,9 @@ HAL_CONFIGURATION_X509_CERTIFICATE *ConfigStorage_FindX509CertificateConfigurati (HAL_Configuration_X509CaRootBundle *)platform_malloc(sizeof(HAL_Configuration_X509CaRootBundle)); // check allocation - if (certificate == NULL) + if (certificate == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -595,9 +595,9 @@ HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *IRAM_ATTR ConfigStorage_FindX509Devic (HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *)platform_malloc(allocationSize); // check allocation - if (deviceCertificate == NULL) + if (deviceCertificate == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -613,9 +613,9 @@ HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *IRAM_ATTR ConfigStorage_FindX509Devic (HAL_Configuration_X509DeviceCertificate *)platform_malloc(sizeof(HAL_Configuration_X509DeviceCertificate)); // check allocation - if (certificate == NULL) + if (certificate == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -652,7 +652,7 @@ bool ConfigurationManager_GetConfigurationBlockFromStorage( handle = ConfigStorage_OpenFile(configuration, configurationIndex, false, false); - if (handle != NULL) + if (handle != nullptr) { readSize = ConfigStorage_ReadFile(handle, configurationBlock, maxBlockSize); @@ -675,7 +675,7 @@ int32_t ConfigurationManager_GetConfigurationBlockSize( handle = ConfigStorage_OpenFile(configuration, configurationIndex, false, false); - if (handle != NULL) + if (handle != nullptr) { readSize = ConfigStorage_FileSize(handle); diff --git a/targets/ESP32/_common/targetHAL_ConfigurationManager.cpp b/targets/ESP32/_common/targetHAL_ConfigurationManager.cpp index c45c8d8c16..8344d5a93a 100644 --- a/targets/ESP32/_common/targetHAL_ConfigurationManager.cpp +++ b/targets/ESP32/_common/targetHAL_ConfigurationManager.cpp @@ -76,7 +76,7 @@ int32_t ConfigurationManager_FindConfigurationBlockSize( int32_t configSize = 0; handle = ConfigStorage_OpenFile(configuration, configurationIndex, false, false); - if (handle != NULL) + if (handle != nullptr) { configSize = ConfigStorage_FileSize(handle); #ifdef DEBUG_CONFIG @@ -98,7 +98,7 @@ bool StoreConfigBlock( FILE *fileHandle; fileHandle = ConfigStorage_OpenFile(configType, configurationIndex, true, false); - if (fileHandle != NULL) + if (fileHandle != nullptr) { result = ConfigStorage_WriteFile(fileHandle, (uint8_t *)configBlock, writeSize); #ifdef DEBUG_CONFIG @@ -126,7 +126,7 @@ bool AppendConfigBlock( fileHandle = ConfigStorage_OpenFile(configType, configurationIndex, true, true); - if (fileHandle != NULL) + if (fileHandle != nullptr) { result = ConfigStorage_AppendFile(fileHandle, (uint8_t *)configBlock, writeSize); @@ -210,7 +210,7 @@ void ConfigurationManager_EnumerateConfigurationBlocks() (HAL_CONFIGURATION_NETWORK_WIRELESS80211 *)ConfigStorage_FindNetworkWireless80211ConfigurationBlocks(); // check wireless configs count - if (networkWirelessConfigs != NULL && networkWirelessConfigs->Count == 0) + if (networkWirelessConfigs != nullptr && networkWirelessConfigs->Count == 0) { // allocate memory for ONE network configuration HAL_Configuration_Wireless80211 *wirelessConfig = @@ -235,7 +235,7 @@ void ConfigurationManager_EnumerateConfigurationBlocks() HAL_CONFIGURATION_NETWORK_WIRELESSAP *wirelessAPconfigs = ConfigStorage_FindNetworkWirelessAPConfigurationBlocks(); // check wireless AP configs count - if (wirelessAPconfigs != NULL && wirelessAPconfigs->Count == 0) + if (wirelessAPconfigs != nullptr && wirelessAPconfigs->Count == 0) { // allocate memory for ONE wireless AP configuration HAL_Configuration_WirelessAP *wirelessAPConfig = @@ -791,13 +791,13 @@ HAL_Configuration_Wireless80211 *ConfigurationManager_GetWirelessConfigurationFr } } - if (wirelessConfig != NULL) + if (wirelessConfig != nullptr) { platform_free(wirelessConfig); } // not found, or failed to allocate memory - return NULL; + return nullptr; } HAL_Configuration_WirelessAP *ConfigurationManager_GetWirelessAPConfigurationFromId(uint32_t configurationId) @@ -824,13 +824,13 @@ HAL_Configuration_WirelessAP *ConfigurationManager_GetWirelessAPConfigurationFro } } - if (wirelessAPConfig != NULL) + if (wirelessAPConfig != nullptr) { platform_free(wirelessAPConfig); } // not found, or failed to allocate memory - return NULL; + return nullptr; } HAL_Configuration_X509CaRootBundle *ConfigurationManager_GetCertificateStore() @@ -846,7 +846,7 @@ HAL_Configuration_X509CaRootBundle *ConfigurationManager_GetCertificateStore() HAL_Configuration_X509CaRootBundle *certStore = (HAL_Configuration_X509CaRootBundle *)platform_malloc(certSize); - if (certStore != NULL) + if (certStore != nullptr) { if (ConfigurationManager_GetConfigurationBlock( certStore, @@ -862,7 +862,7 @@ HAL_Configuration_X509CaRootBundle *ConfigurationManager_GetCertificateStore() } // not found, or failed to allocate memory - return NULL; + return nullptr; } HAL_Configuration_X509DeviceCertificate *ConfigurationManager_GetDeviceCertificate() @@ -878,7 +878,7 @@ HAL_Configuration_X509DeviceCertificate *ConfigurationManager_GetDeviceCertifica HAL_Configuration_X509DeviceCertificate *deviceCert = (HAL_Configuration_X509DeviceCertificate *)platform_malloc(certSize); - if (deviceCert != NULL) + if (deviceCert != nullptr) { if (ConfigurationManager_GetConfigurationBlock( deviceCert, @@ -894,7 +894,7 @@ HAL_Configuration_X509DeviceCertificate *ConfigurationManager_GetDeviceCertifica } // not found, or failed to allocate memory - return NULL; + return nullptr; } // default implementation diff --git a/targets/ESP32/_common/targetHAL_FileOperation.cpp b/targets/ESP32/_common/targetHAL_FileOperation.cpp index 9cfb3bddad..b3b4e79aae 100644 --- a/targets/ESP32/_common/targetHAL_FileOperation.cpp +++ b/targets/ESP32/_common/targetHAL_FileOperation.cpp @@ -30,8 +30,8 @@ void CombinePathAndName(char *outpath, const char *path1, const char *path2) // char *ConvertToVfsPath(const char *filepath) { - char *startPath = NULL; - char *path = NULL; + char *startPath = nullptr; + char *path = nullptr; int pathlen = hal_strlen_s(filepath); @@ -40,10 +40,10 @@ char *ConvertToVfsPath(const char *filepath) startPath = (char *)platform_malloc(pathlen + 1); // sanity check for successfull malloc - if (startPath == NULL) + if (startPath == nullptr) { // failed to allocate memory - return NULL; + return nullptr; } path = startPath; @@ -67,4 +67,4 @@ char *ConvertToVfsPath(const char *filepath) } return startPath; -} \ No newline at end of file +} diff --git a/targets/ESP32/_common/targetHAL_Network.cpp b/targets/ESP32/_common/targetHAL_Network.cpp index cb49b025d7..1afe918386 100644 --- a/targets/ESP32/_common/targetHAL_Network.cpp +++ b/targets/ESP32/_common/targetHAL_Network.cpp @@ -103,7 +103,7 @@ static void initialize_sntp() .server_from_dhcp = false, .wait_for_sync = true, .start = true, - .sync_cb = NULL, + .sync_cb = nullptr, .renew_servers_after_new_IP = false, .ip_event_to_renew = (ip_event_t)0, .index_of_first_server = 0, @@ -516,21 +516,21 @@ void nanoHAL_Network_Initialize() #if defined(CONFIG_SOC_WIFI_SUPPORTED) // register the handler for WIFI events - ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, nullptr, nullptr)); #endif // register the event handler for IP events - ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler, nullptr, nullptr)); #ifdef ESP32_ETHERNET_SUPPORT // register the event handler for Ethernet events - ESP_ERROR_CHECK(esp_event_handler_instance_register(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL, NULL)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler, nullptr, nullptr)); #endif #if HAL_USE_THREAD == TRUE // register the event handler for OpenThread events ESP_ERROR_CHECK( - esp_event_handler_instance_register(OPENTHREAD_EVENT, ESP_EVENT_ANY_ID, &thread_event_handler, NULL, NULL)); + esp_event_handler_instance_register(OPENTHREAD_EVENT, ESP_EVENT_ANY_ID, &thread_event_handler, nullptr, nullptr)); #endif } } diff --git a/targets/ESP32/_common/targetHAL_StorageOperation.cpp b/targets/ESP32/_common/targetHAL_StorageOperation.cpp index 09fe347c56..2edcee7623 100644 --- a/targets/ESP32/_common/targetHAL_StorageOperation.cpp +++ b/targets/ESP32/_common/targetHAL_StorageOperation.cpp @@ -26,7 +26,7 @@ void EnsureStorageInitialized() int create_directories(const char *path) { char temp[256]; - char *pos = NULL; + char *pos = nullptr; size_t len = 0; len = hal_strlen_s(path); @@ -82,7 +82,7 @@ uint32_t HAL_StorageOperation( char *strName = (char *)platform_malloc(nameLength + 1); // sanity check for successfull malloc - if (strName == NULL) + if (strName == nullptr) { return StorageOperationErrorCode::PlatformError; } @@ -108,7 +108,7 @@ uint32_t HAL_StorageOperation( char dir_path[256]; snprintf(dir_path, sizeof(dir_path), "%s", storageNameChar); char *last_slash = strrchr(dir_path, '/'); - if (last_slash != NULL) + if (last_slash != nullptr) { *last_slash = '\0'; } @@ -175,7 +175,7 @@ uint32_t HAL_StorageOperation( } // free buffer memory - if (storageNameChar != NULL) + if (storageNameChar != nullptr) { platform_free(storageNameChar); } diff --git a/targets/ESP32/_littlefs/littlefs_FS_Driver.cpp b/targets/ESP32/_littlefs/littlefs_FS_Driver.cpp index 7ce53c1432..242ea26ff5 100644 --- a/targets/ESP32/_littlefs/littlefs_FS_Driver.cpp +++ b/targets/ESP32/_littlefs/littlefs_FS_Driver.cpp @@ -22,7 +22,7 @@ STREAM_DRIVER_DETAILS *LITTLEFS_FS_Driver::DriverDetails(const VOLUME_ID *volume { (void)volume; - static STREAM_DRIVER_DETAILS driverDetail = {DIRECT_IO, NULL, NULL, 0, 0, TRUE, TRUE, TRUE, 0, 0}; + static STREAM_DRIVER_DETAILS driverDetail = {DIRECT_IO, nullptr, nullptr, 0, 0, TRUE, TRUE, TRUE, 0, 0}; return &driverDetail; } @@ -136,11 +136,11 @@ HRESULT LITTLEFS_FS_Driver::GetVolumeLabel(const VOLUME_ID *volume, char *volume (void)volumeLabel; (void)volumeLabelLen; - // FATFS *fs = NULL; + // FATFS *fs = nullptr; // //fs = GetFileSystemForVolume(volume, true); - // if (fs == NULL) + // if (fs == nullptr) // { // return FALSE; // } @@ -172,7 +172,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void int32_t result; #endif - LITTLEFS_FileHandle *fileHandle = NULL; + LITTLEFS_FileHandle *fileHandle = nullptr; struct stat info; const char *flags; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -182,7 +182,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void // allocate file handle fileHandle = (LITTLEFS_FileHandle *)platform_malloc(sizeof(LITTLEFS_FileHandle)); - if (fileHandle == NULL) + if (fileHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -217,7 +217,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void flags = "w+"; } fileHandle->file = fopen(normalizedPath, flags); - if (fileHandle->file != NULL) + if (fileHandle->file != nullptr) { // store the handle handle = fileHandle; @@ -233,7 +233,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void NANOCLR_CLEANUP(); - if (fileHandle != NULL) + if (fileHandle != nullptr) { platform_free(fileHandle); } @@ -502,13 +502,13 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_HEADER(); char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; - LITTLEFS_FindFileHandle *findHandle = NULL; + LITTLEFS_FindFileHandle *findHandle = nullptr; FileSystemVolume *currentVolume; // allocate file handle findHandle = (LITTLEFS_FindFileHandle *)platform_malloc(sizeof(LITTLEFS_FindFileHandle)); - if (findHandle == NULL) + if (findHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -528,7 +528,7 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, // open directory for seek findHandle->dir = opendir(normalizedPath); - if (findHandle->dir != NULL) + if (findHandle->dir != nullptr) { // store the handle handle = findHandle; @@ -543,7 +543,7 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_CLEANUP(); - if (findHandle != NULL) + if (findHandle != nullptr) { platform_free(findHandle); } @@ -577,9 +577,9 @@ HRESULT LITTLEFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFo // read the next entry entry = readdir(findHandle->dir); - if (entry == NULL) + if (entry == nullptr) { - // readdir() returns NULL on error or if end of directory is reached + // readdir() returns nullptr on error or if end of directory is reached // End of directory *fileFound = false; @@ -615,7 +615,7 @@ HRESULT LITTLEFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFo fi->FileName = (char *)platform_malloc(fi->FileNameSize + 1); // Sanity check for successful malloc - if (fi->FileName == NULL) + if (fi->FileName == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -840,7 +840,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char segment = strtok(normalizedPath, "/"); strcat(tempPath, segment); strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); while (segment) { @@ -856,7 +856,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char // add back the '/' separator strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); } // remove trailing '/' diff --git a/targets/ESP32/_nanoCLR/Memory.cpp b/targets/ESP32/_nanoCLR/Memory.cpp index 1248293e44..76996abf2b 100644 --- a/targets/ESP32/_nanoCLR/Memory.cpp +++ b/targets/ESP32/_nanoCLR/Memory.cpp @@ -45,7 +45,7 @@ static const char *TAG = "Memory"; // #define PRINT_HEAP_INFO 1 // Saved memory allocation for when heap is reset so we can return same value. -unsigned char *managedHeap = NULL; +unsigned char *managedHeap = nullptr; size_t managedHeapSize = 0; #ifdef PRINT_HEAP_INFO @@ -108,7 +108,7 @@ void HeapLocation(unsigned char *&baseAddress, unsigned int &sizeInBytes) NATIVE_PROFILE_PAL_HEAP(); // Memory allocated yet ? - if (managedHeap == NULL) + if (managedHeap == nullptr) { #ifdef PRINT_HEAP_INFO print_heap_info(MALLOC_CAP_8BIT | MALLOC_CAP_32BIT | MALLOC_CAP_SPIRAM); diff --git a/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp b/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp index 8c0a7542e2..0bf45a4ed7 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp @@ -18,7 +18,7 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue int adcNumber; int reading = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp b/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp index 5b6c800b58..4fd3a2de2a 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp @@ -44,7 +44,7 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcController::NativeOpenCh adc_bits_width_t width_bit = (adc_bits_width_t)SOC_ADC_RTC_MAX_BITWIDTH; adc_atten_t atten = ADC_ATTEN_DB_12; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp b/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp index 8c09785b43..cc3dc859ae 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacChannel.cpp @@ -12,7 +12,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeWriteValu { NANOCLR_HEADER(); { - CLR_RT_HeapBlock *dacController = NULL; + CLR_RT_HeapBlock *dacController = nullptr; int channelNumber; int controllerId; dac_channel_t dacChannel = DAC_CHAN_0; @@ -20,7 +20,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeWriteValu // Get value argumant and mask to 0 - 255 range uint16_t value = (stack.Arg1().NumericByRefConst().u2 & 0xff); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -69,7 +69,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacChannel::NativeDispose__ int dacChannel; bool disposeController = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp b/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp index 3cf099fa23..aa8d3022f4 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Dac/sys_dev_dac_native_System_Device_Dac_DacController.cpp @@ -17,7 +17,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacController::NativeOpenCh int channelNumber; dac_channel_t dacChannel = DAC_CHAN_0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -105,7 +105,7 @@ HRESULT Library_sys_dev_dac_native_System_Device_Dac_DacController::NativeInit__ int controllerId; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp b/targets/ESP32/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp index 4dd38a241e..fecb1b14d2 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp @@ -70,12 +70,12 @@ static uint16_t pinReserved[TOTAL_GPIO_PORTS]; // reserved - 1 bit p static uint16_t pinStateStore[TOTAL_GPIO_PORTS]; // Get pointer to gpio_input_state for Gpio pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = gpioInputList.FirstNode(); - while (ptr->Next() != NULL) + while (ptr->Next() != nullptr) { if (ptr->pinNumber == pinNumber) { @@ -85,7 +85,7 @@ gpio_input_state *GetInputState(GPIO_PIN pinNumber) ptr = ptr->Next(); } - return NULL; + return nullptr; } // Allocate a new gpio_input_state and add to end of list @@ -94,7 +94,7 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) { gpio_input_state *ptr = GetInputState(pinNumber); - if (ptr == NULL) + if (ptr == nullptr) { ptr = (gpio_input_state *)platform_malloc(sizeof(gpio_input_state)); memset(ptr, 0, sizeof(gpio_input_state)); @@ -107,7 +107,7 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) void UnlinkInputState(gpio_input_state *state) { - if (state->debounceTimer != NULL) + if (state->debounceTimer != nullptr) { xTimerDelete(state->debounceTimer, 100); } @@ -138,7 +138,7 @@ static void Esp_Gpio_DebounceHandler(TimerHandle_t timer) gpio_input_state *state = (gpio_input_state *)pvTimerGetTimerID(timer); // sanity check - if (state != NULL) + if (state != nullptr) { // get current pin state bool actual = CPU_GPIO_GetPinState(state->pinNumber); @@ -371,7 +371,7 @@ bool CPU_GPIO_EnableInputPin( // Link ISR ptr supplied and not already set up // CPU_GPIO_EnableInputPin could be called a 2nd time with changed parameters - if (pinISR != NULL && (state->isrPtr == NULL)) + if (pinISR != nullptr && (state->isrPtr == nullptr)) { ret = gpio_isr_handler_add((gpio_num_t)pinNumber, gpio_isr, (void *)state); if (ret != ESP_OK) @@ -422,7 +422,7 @@ bool CPU_GPIO_EnableInputPin( break; } } - else if (pinISR == NULL && (state->isrPtr != NULL)) + else if (pinISR == nullptr && (state->isrPtr != nullptr)) { // there is no managed handler setup anymore // remove INT handler @@ -431,9 +431,9 @@ bool CPU_GPIO_EnableInputPin( gpio_isr_handler_remove((gpio_num_t)state->pinNumber); // clear parameters & configs - state->isrPtr = NULL; + state->isrPtr = nullptr; state->mode = GPIO_INT_NONE; - state->param = NULL; + state->param = nullptr; state->debounceMs = 0; } @@ -609,7 +609,7 @@ bool CPU_GPIO_SetPinDebounce(GPIO_PIN pinNumber, uint32_t debounceTimeMillisecon } // check if there was a timer already setup - if (state->debounceTimer == NULL) + if (state->debounceTimer == nullptr) { // Create timer because it doesn't exist for this pin state->debounceTimer = diff --git a/targets/ESP32/_nanoCLR/System.Device.I2c.Slave/sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice.cpp b/targets/ESP32/_nanoCLR/System.Device.I2c.Slave/sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice.cpp index 66fcb9c749..a25e4da369 100644 --- a/targets/ESP32/_nanoCLR/System.Device.I2c.Slave/sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.I2c.Slave/sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice.cpp @@ -38,7 +38,7 @@ NF_PAL_I2CSLAVE *GetPalI2cSlaveFromBusIndex(int busIndex) #endif default: - return NULL; + return nullptr; } } @@ -82,7 +82,7 @@ void I2cSlaveRxWorkerTask(void *pvParameters) Events_Set(SYSTEM_EVENT_FLAG_I2C_SLAVE); // delete task - vTaskDelete(NULL); + vTaskDelete(nullptr); } void I2cSlaveTxWorkerTask(void *pvParameters) @@ -101,7 +101,7 @@ void I2cSlaveTxWorkerTask(void *pvParameters) Events_Set(SYSTEM_EVENT_FLAG_I2C_SLAVE); // delete task - vTaskDelete(NULL); + vTaskDelete(nullptr); } HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice::NativeInit___VOID(CLR_RT_StackFrame &stack) @@ -124,7 +124,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice::Nativ .slave = {.addr_10bit_en = 0, .slave_addr = 0, .maximum_speed = 0}, .clk_flags = 0}; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -175,13 +175,13 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice::Nativ Esp_I2C_Initialised_Flag[bus]++; palI2c = GetPalI2cSlaveFromBusIndex(bus); - if (palI2c == NULL) + if (palI2c == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } palI2c->BusNum = bus; - palI2c->Buffer = NULL; + palI2c->Buffer = nullptr; palI2c->RequestedBytes = 0; palI2c->BytesTransferred = 0; palI2c->TimeoutTicks = 0; @@ -201,7 +201,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice::Nativ i2c_port_t bus; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -219,7 +219,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: { NANOCLR_HEADER(); - NF_PAL_I2CSLAVE *palI2c = NULL; + NF_PAL_I2CSLAVE *palI2c = nullptr; int32_t bufferOffset = 0; int32_t requestedCount = 0; @@ -234,10 +234,10 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: CLR_RT_HeapBlock hbTimeout; CLR_RT_HeapBlock *readSpanByte; CLR_RT_HeapBlock *writeSpanByte; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -247,7 +247,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: // get pointer to PAL UART palI2c = GetPalI2cSlaveFromBusIndex(bus); - if (palI2c == NULL) + if (palI2c == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -266,7 +266,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // set flag to read operation isRead = true; @@ -282,7 +282,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: { writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array bufferOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -292,7 +292,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: } } - if (requestedCount == 0 || (writeBuffer == NULL && readBuffer == NULL)) + if (requestedCount == 0 || (writeBuffer == nullptr && readBuffer == nullptr)) { // nothing to do here NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); @@ -320,7 +320,7 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: // need to allocate buffer from internal memory palI2c->Buffer = (uint8_t *)heap_caps_malloc(requestedCount, MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - if (palI2c->Buffer == NULL) + if (palI2c->Buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -494,15 +494,15 @@ HRESULT Library_sys_dev_i2c_slave_native_System_Device_I2c_I2cSlaveDevice:: if (hr != CLR_E_THREAD_WAITING) { - if (palI2c != NULL && palI2c->Buffer != NULL) + if (palI2c != nullptr && palI2c->Buffer != nullptr) { heap_caps_free(palI2c->Buffer); - palI2c->Buffer = NULL; + palI2c->Buffer = nullptr; } - if (palI2c != NULL && palI2c->I2cSlaveWorkerTaskStack != NULL) + if (palI2c != nullptr && palI2c->I2cSlaveWorkerTaskStack != nullptr) { heap_caps_free(palI2c->I2cSlaveWorkerTaskStack); - palI2c->I2cSlaveWorkerTaskStack = NULL; + palI2c->I2cSlaveWorkerTaskStack = nullptr; } } diff --git a/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 1df149cffb..76b962abc1 100644 --- a/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -57,7 +57,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { CLR_RT_HeapBlock *pConfig; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -106,7 +106,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ CLR_RT_HeapBlock *pConfig; i2c_port_t bus; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -134,8 +134,8 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: { NANOCLR_HEADER(); - uint8_t *writeBuffer = NULL; - uint8_t *readBuffer = NULL; + uint8_t *writeBuffer = nullptr; + uint8_t *readBuffer = nullptr; int writeOffset = 0; int writeSize = 0; int readOffset = 0; @@ -149,14 +149,14 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *result; CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeData = NULL; - CLR_RT_HeapBlock_Array *readData = NULL; - CLR_RT_HeapBlock *pConfig = NULL; + CLR_RT_HeapBlock_Array *writeData = nullptr; + CLR_RT_HeapBlock_Array *readData = nullptr; + CLR_RT_HeapBlock *pConfig = nullptr; // create the return object (I2cTransferResult) CLR_RT_HeapBlock &top = stack.PushValueAndClear(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -173,11 +173,11 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { writeData = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeData != NULL) + if (writeData != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -190,7 +190,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // need to allocate buffer from internal memory writeBuffer = (uint8_t *)heap_caps_malloc(writeSize, MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -216,7 +216,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: { readData = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readData != NULL) + if (readData != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -229,7 +229,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // need to allocate buffer from internal memory readBuffer = (uint8_t *)heap_caps_malloc(readSize, MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL); - if (readBuffer == NULL) + if (readBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } diff --git a/targets/ESP32/_nanoCLR/System.Device.I2s/sys_dev_i2s_native_System_Device_I2s_I2sDevice.cpp b/targets/ESP32/_nanoCLR/System.Device.I2s/sys_dev_i2s_native_System_Device_I2s_I2sDevice.cpp index 6d7a39af43..6ae31b52f8 100644 --- a/targets/ESP32/_nanoCLR/System.Device.I2s/sys_dev_i2s_native_System_Device_I2s_I2sDevice.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.I2s/sys_dev_i2s_native_System_Device_I2s_I2sDevice.cpp @@ -227,7 +227,7 @@ HRESULT SetI2sConfig(i2s_port_t bus, CLR_RT_HeapBlock *config) if (Esp_I2S_Initialised_Flag[bus] == 0) { // Install driver without events - esp_err_t res = i2s_driver_install(bus, &conf, 0, NULL); + esp_err_t res = i2s_driver_install(bus, &conf, 0, nullptr); if (res != ESP_OK) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); @@ -356,13 +356,13 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::Read___VOID__Sys { CLR_RT_HeapBlock *pConfig; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); - CLR_RT_HeapBlock *readSpanByte = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; - uint8_t *readData = NULL; + CLR_RT_HeapBlock *readSpanByte = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; + uint8_t *readData = nullptr; int readSize = 0; int readOffset = 0; uint8_t transform_buffer[SIZEOF_TRANSFORM_BUFFER_IN_BYTES]; @@ -394,11 +394,11 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::Read___VOID__Sys // dereference the SpanByte from the arguments readSpanByte = stack.Arg1().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // Get the read offset, only the elements defined by the span must be read, not the whole array readOffset = readSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -477,13 +477,13 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::Write___VOID__Sy { CLR_RT_HeapBlock *pConfig; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); - CLR_RT_HeapBlock *writeSpanByte = NULL; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - uint8_t *writeData = NULL; + CLR_RT_HeapBlock *writeSpanByte = nullptr; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + uint8_t *writeData = nullptr; int writeSize = 0; int writeOffset = 0; size_t bytesWritten; @@ -510,11 +510,11 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::Write___VOID__Sy // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // Get the write offset, only the elements defined by the span must be written, not the whole array writeOffset = writeSpanByte[SpanByte::FIELD___start].NumericByRef().s4; @@ -553,7 +553,7 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::NativeInit___VOI { CLR_RT_HeapBlock *pConfig; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -594,7 +594,7 @@ HRESULT Library_sys_dev_i2s_native_System_Device_I2s_I2sDevice::NativeDispose___ { CLR_RT_HeapBlock *pConfig; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/ESP32/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index c70b3d338e..9fdbc13c6a 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -238,7 +238,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeInit___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -278,7 +278,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -359,7 +359,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -429,7 +429,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/ESP32/_nanoCLR/System.Device.Spi/cpu_spi.cpp index 7f1213960b..45db74d5c0 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -433,8 +433,8 @@ HRESULT CPU_SPI_nWrite_nRead( { NANOCLR_HEADER(); { - uint8_t *writeDataBuffer = NULL; - uint8_t *readDataBuffer = NULL; + uint8_t *writeDataBuffer = nullptr; + uint8_t *readDataBuffer = nullptr; bool async = (wrc.callback != 0); esp_err_t ret; diff --git a/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp b/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp index 47bc5b2746..1e0251432a 100644 --- a/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp +++ b/targets/ESP32/_nanoCLR/System.Device.Wifi/sys_dev_wifi_native_System_Device_Wifi_WifiAdapter.cpp @@ -330,7 +330,7 @@ HRESULT Library_sys_dev_wifi_native_System_Device_Wifi_WifiAdapter::NativeFindWi (HAL_Configuration_NetworkInterface *)platform_malloc(sizeof(HAL_Configuration_NetworkInterface)); // check allocation - if (netInterfaceConfig == NULL) + if (netInterfaceConfig == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } diff --git a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard.cpp b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard.cpp index e0d3f61602..8aa6722475 100644 --- a/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard.cpp +++ b/targets/ESP32/_nanoCLR/System.IO.FileSystem/nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard.cpp @@ -75,7 +75,7 @@ HRESULT Library_nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard:: int cardDetectPin; bool cdPinState; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -164,7 +164,7 @@ HRESULT Library_nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard:: int slotIndex; #endif - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -219,7 +219,7 @@ HRESULT Library_nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard:: int slotIndex; char mountPoint[] = INDEX0_DRIVE_LETTER; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -322,7 +322,7 @@ HRESULT Library_nf_sys_io_filesystem_nanoFramework_System_IO_FileSystem_SDCard:: SDCard_SDInterfaceType cardType; int slotIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp b/targets/ESP32/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp index 0b91b4181e..b0095ddeeb 100644 --- a/targets/ESP32/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp +++ b/targets/ESP32/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp @@ -55,7 +55,7 @@ NF_PAL_UART *GetPalUartFromUartNum_sys(int uart_num) break; } - return NULL; + return nullptr; } void UninitializePalUart_sys(NF_PAL_UART *palUart) @@ -66,14 +66,14 @@ void UninitializePalUart_sys(NF_PAL_UART *palUart) uart_event_t event; event.type = UART_EVENT_MAX; xQueueSend(palUart->UartEventQueue, &event, 0); - palUart->UartEventTask = NULL; + palUart->UartEventTask = nullptr; // free buffer memory platform_free(palUart->RxBuffer); // null all pointers - palUart->RxBuffer = NULL; - palUart->TxBuffer = NULL; + palUart->RxBuffer = nullptr; + palUart->TxBuffer = nullptr; // delete driver uart_driver_delete((uart_port_t)palUart->UartNum); @@ -224,7 +224,7 @@ void uart_event_task_sys(void *pvParameters) } } - vTaskDelete(NULL); + vTaskDelete(nullptr); } void UartTxWorkerTask_sys(void *pvParameters) @@ -240,17 +240,17 @@ void UartTxWorkerTask_sys(void *pvParameters) Events_Set(SYSTEM_EVENT_FLAG_COM_OUT); // delete task - vTaskDelete(NULL); + vTaskDelete(nullptr); } HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___I4(CLR_RT_StackFrame &stack) { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -264,7 +264,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___ // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -279,10 +279,10 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_InvertSignalLe { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -296,7 +296,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_InvertSignalLe // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -311,10 +311,10 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::set_InvertSignalLe { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -328,7 +328,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::set_InvertSignalLe // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -351,7 +351,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY CLR_RT_HeapBlock hbTimeout; CLR_RT_HeapBlock_Array *dataBuffer; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t *data; @@ -365,7 +365,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY int64_t *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -411,7 +411,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -493,15 +493,15 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; - uint8_t *buffer = NULL; + uint8_t *buffer = nullptr; uint32_t bufferLength; CLR_RT_HeapBlock &top = stack.PushValue(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -515,7 +515,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -529,7 +529,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR buffer = (uint8_t *)platform_malloc(bufferLength); // sanity check - if (buffer == NULL) + if (buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -542,12 +542,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR else { // create an empty - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)nullptr)); } NANOCLR_CLEANUP(); - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -560,18 +560,18 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; - uint8_t *line = NULL; - const char *newLine = NULL; + uint8_t *line = nullptr; + const char *newLine = nullptr; uint32_t newLineLength; int64_t *timeoutTicks; bool eventResult = true; bool newLineFound = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -589,7 +589,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -611,8 +611,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get new line from field newLine = pThis[FIELD___newLine].RecoverString(); - // sanity check for NULL string - if (newLine == NULL) + // sanity check for nullptr string + if (newLine == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -660,7 +660,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( stack.SetResult_String((const char *)line); // free memory, if needed - if (line != NULL) + if (line != nullptr) { platform_free(line); } @@ -672,7 +672,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; CLR_RT_HeapBlock_Array *dataBuffer; CLR_RT_HeapBlock hbTimeout; @@ -687,7 +687,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR int64_t *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -701,7 +701,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -770,7 +770,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR char task_name[16]; snprintf(task_name, ARRAYSIZE(task_name), "uart%d_tx", uart_num); - if (xTaskCreate(UartTxWorkerTask_sys, task_name, 2048, palUart, 12, NULL) != pdPASS) + if (xTaskCreate(UartTxWorkerTask_sys, task_name, 2048, palUart, 12, nullptr) != pdPASS) { ESP_LOGE(TAG, "Failed to start UART TX task"); NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); @@ -824,7 +824,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR stack.SetResult_U4(length); // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -835,7 +835,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO uart_port_t uart_num; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -859,7 +859,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( NF_PAL_UART *palUart; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -879,7 +879,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( #endif palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -899,7 +899,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( palUart->RxBuffer = (uint8_t *)platform_malloc(bufferSize); // sanity check - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -964,7 +964,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI { uart_config_t uart_config = {}; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1114,7 +1114,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI // get pointer to PAL UART NF_PAL_UART *palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -1171,7 +1171,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI } // null pointers and vars - pThis = NULL; + pThis = nullptr; } NANOCLR_NOCLEANUP(); } @@ -1183,7 +1183,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar uart_port_t uart_num; uint8_t watchChar; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1211,7 +1211,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uart_port_t uart_num; CLR_RT_HeapBlock hbTimeout; @@ -1219,12 +1219,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ bool eventResult = true; bool isNewAllocation = false; - char *buffer = NULL; - const char *bufferPointer = NULL; + char *buffer = nullptr; + const char *bufferPointer = nullptr; uint32_t bufferLength; int32_t length = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1238,12 +1238,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } - if (stack.Arg1().RecoverString() == NULL) + if (stack.Arg1().RecoverString() == nullptr) { // text string it's empty so there is noting to do here stack.SetResult_U4(0); @@ -1303,7 +1303,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ char task_name[16]; snprintf(task_name, ARRAYSIZE(task_name), "uart%d_tx", uart_num); - if (xTaskCreate(UartTxWorkerTask_sys, task_name, 2048, palUart, 12, NULL) != pdPASS) + if (xTaskCreate(UartTxWorkerTask_sys, task_name, 2048, palUart, 12, nullptr) != pdPASS) { ESP_LOGE(TAG, "Failed to start UART TX task"); NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); @@ -1369,13 +1369,13 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ stack.SetResult_U4(length); // free memory, if it was allocated - if (isNewAllocation && buffer != NULL) + if (isNewAllocation && buffer != nullptr) { platform_free(buffer); } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1389,7 +1389,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte int32_t threshold; uart_port_t uart_num; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1406,7 +1406,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte // get pointer to PAL UART palUart = GetPalUartFromUartNum_sys(uart_num); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } diff --git a/targets/ESP32/_nanoCLR/nanoCRT.cpp b/targets/ESP32/_nanoCLR/nanoCRT.cpp index 0968b35c6c..76a3990807 100644 --- a/targets/ESP32/_nanoCLR/nanoCRT.cpp +++ b/targets/ESP32/_nanoCLR/nanoCRT.cpp @@ -138,7 +138,7 @@ int hal_strcpy_s(char *strDst, size_t sizeInBytes, const char *strSrc) #undef strcpy size_t len; - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -161,7 +161,7 @@ int hal_strncpy_s(char *strDst, size_t sizeInBytes, const char *strSrc, size_t c { NATIVE_PROFILE_PAL_CRT(); #undef strncpy - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -195,7 +195,7 @@ int hal_strncmp_s(const char *str1, const char *str2, size_t num) { NATIVE_PROFILE_PAL_CRT(); #undef strncmp - if (str1 == NULL || str2 == NULL) + if (str1 == nullptr || str2 == nullptr) { _ASSERTE(FALSE); return 1; diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/esp32_nimble.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/esp32_nimble.cpp index 67d0b6658c..04475ea5d5 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/esp32_nimble.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/esp32_nimble.cpp @@ -444,7 +444,7 @@ bool Esp32BleStartAdvertise(bleServicesContext *context) adv_params.conn_mode = bleContext.isConnectable ? BLE_GAP_CONN_MODE_UND : BLE_GAP_CONN_MODE_NON; adv_params.disc_mode = bleContext.isDiscoverable ? BLE_GAP_DISC_MODE_GEN : BLE_GAP_DISC_MODE_NON; - rc = ble_gap_adv_start(BLE_OWN_ADDR_PUBLIC, NULL, BLE_HS_FOREVER, &adv_params, Esp32GapEvent, (void *)&bleContext); + rc = ble_gap_adv_start(BLE_OWN_ADDR_PUBLIC, nullptr, BLE_HS_FOREVER, &adv_params, Esp32GapEvent, (void *)&bleContext); if (rc != 0) { BLE_DEBUG_PRINTF("error enabling advertisement; rc=%d\n", rc); @@ -468,7 +468,7 @@ static void Esp32BleOnSync(void) } uint8_t addr_val[6] = {0}; - rc = ble_hs_id_copy_addr(esp32_addr_type, addr_val, NULL); + rc = ble_hs_id_copy_addr(esp32_addr_type, addr_val, nullptr); if (rc != 0) { ESP_LOGI(tag, "error ble_hs_id_copy_addr; rc=%d\n", rc); @@ -549,8 +549,8 @@ void Device_ble_dispose() vSemaphoreDelete(ble_event_data.mutex); } - ble_event_waitgroup = NULL; - ble_event_data.mutex = NULL; + ble_event_waitgroup = nullptr; + ble_event_data.mutex = nullptr; ble_initialized = false; diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp index a8c457b78f..377c45ad81 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/nimble_utils.cpp @@ -209,7 +209,7 @@ HRESULT PushEmptyBufferToStack(CLR_RT_StackFrame &stack) bool LockEventMutex() { - if (ble_event_data.mutex == NULL) + if (ble_event_data.mutex == nullptr) { return false; } @@ -219,7 +219,7 @@ bool LockEventMutex() void ReleaseEventMutex() { - if (ble_event_data.mutex == NULL) + if (ble_event_data.mutex == nullptr) { return; } diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp index 526ba26697..098efa3dcf 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEAdvertisementWatcher.cpp @@ -42,7 +42,7 @@ void BleCentralStartScan() disc_params.filter_policy = BLE_HCI_SCAN_FILT_NO_WL; disc_params.limited = 0; - rc = ble_gap_disc(own_addr_type, BLE_HS_FOREVER, &disc_params, Esp32GapEvent, NULL); + rc = ble_gap_disc(own_addr_type, BLE_HS_FOREVER, &disc_params, Esp32GapEvent, nullptr); BLE_DEBUG_PRINTF("ble_gap_disc; reason=%d active %d\n", rc, ble_gap_disc_active()); if (rc != 0) { diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDevice.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDevice.cpp index 8c970bfda6..ee7c1be996 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDevice.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDevice.cpp @@ -48,7 +48,7 @@ central_context *GetContext(ushort connection) { central_context *ptr = ConnectionList.FirstNode(); - while (ptr->Next() != NULL) + while (ptr->Next() != nullptr) { if (ptr->connectionHandle == connection) { @@ -58,7 +58,7 @@ central_context *GetContext(ushort connection) ptr = ptr->Next(); } - return NULL; + return nullptr; } void InitConnectionList() @@ -388,7 +388,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDev // Fill in details for Gap event to use. con->connectionHandle = eventRouting; - rc = ble_gap_connect(own_addr_type, &peerAddr, connectTimeout, NULL, CentralGapEvent, con); + rc = ble_gap_connect(own_addr_type, &peerAddr, connectTimeout, nullptr, CentralGapEvent, con); BLE_DEBUG_PRINTF("ble_gap_connect exit %X\n", rc); if (rc == BLE_HS_EDONE) @@ -533,7 +533,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDev central_context *con; BLE_DEBUG_PRINTF("NativeUpdateService\n"); - // get a pointer to the managed object instance of BlueToothLEDevcie and check that it's not NULL + // get a pointer to the managed object instance of BlueToothLEDevcie and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -671,7 +671,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu { NANOCLR_HEADER(); { - // get a pointer to the managed object instance of GattDeviceService and check that it's not NULL + // get a pointer to the managed object instance of GattDeviceService and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -790,7 +790,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDev uint16_t val_handle = stack.Arg2().NumericByRef().u2; central_context *con = GetContext(conn_handle); - if (con == NULL) + if (con == nullptr) { rc = BLE_HS_ENOTCONN; } @@ -893,7 +893,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothLEDev bufferPtr = heapBuffer->GetFirstElement(); central_context *con = GetContext(conn_handle); - if (con == NULL) + if (con == nullptr) { rc = BLE_HS_ENOTCONN; } @@ -1056,4 +1056,4 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu xEventGroupSetBits(ble_event_waitgroup, N_BLE_EVENT_HANDLED); } NANOCLR_NOCLEANUP(); -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothNanoDevice.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothNanoDevice.cpp index 753ff7055e..0acf573e14 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothNanoDevice.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothNanoDevice.cpp @@ -7,7 +7,7 @@ BluetoothNanoDevice_Mode ble_operatingMode = BluetoothNanoDevice_Mode_NotRunning; -char *bleDeviceName = NULL; +char *bleDeviceName = nullptr; void UpdateNameInContext() { @@ -28,7 +28,7 @@ void SetDeviceName(const char *deviceName) if (bleDeviceName) { platform_free(bleDeviceName); - bleDeviceName = NULL; + bleDeviceName = nullptr; } size_t nlen = hal_strlen_s(deviceName); @@ -104,4 +104,4 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_BluetoothNanoD } } NANOCLR_NOCLEANUP(); -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattServiceProvider.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattServiceProvider.cpp index fb23ac49d4..9928ed7100 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattServiceProvider.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.Bluetooth/sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttributeProfile_GattServiceProvider.cpp @@ -46,25 +46,25 @@ static void FreeContext(bleServicesContext &srvContext) if (srvContext.advertData) { platform_free((void *)srvContext.advertData); - srvContext.advertData = NULL; + srvContext.advertData = nullptr; } if (srvContext.scanResponse) { platform_free((void *)srvContext.scanResponse); - srvContext.scanResponse = NULL; + srvContext.scanResponse = nullptr; } if (srvContext.pDeviceName) { platform_free((void *)srvContext.pDeviceName); - srvContext.pDeviceName = NULL; + srvContext.pDeviceName = nullptr; } if (srvContext.gatt_service_def) { platform_free((void *)srvContext.gatt_service_def); - srvContext.gatt_service_def = NULL; + srvContext.gatt_service_def = nullptr; } // For each Service free up memory @@ -74,37 +74,37 @@ static void FreeContext(bleServicesContext &srvContext) if (context->serviceUuid) { platform_free(context->serviceUuid); - context->serviceUuid = NULL; + context->serviceUuid = nullptr; } if (context->characteristicsDefs) { platform_free(context->characteristicsDefs); - context->characteristicsDefs = NULL; + context->characteristicsDefs = nullptr; } if (context->characteristicsUuids) { platform_free(context->characteristicsUuids); - context->characteristicsUuids = NULL; + context->characteristicsUuids = nullptr; } if (context->attrHandles) { platform_free(context->attrHandles); - context->attrHandles = NULL; + context->attrHandles = nullptr; } if (context->descriptorDefs) { platform_free(context->descriptorDefs); - context->descriptorDefs = NULL; + context->descriptorDefs = nullptr; } if (context->descriptorUuids) { platform_free(context->descriptorUuids); - context->descriptorUuids = NULL; + context->descriptorUuids = nullptr; } } @@ -113,7 +113,7 @@ static void FreeContext(bleServicesContext &srvContext) if (srvContext.bleSrvContexts) { platform_free((void *)srvContext.bleSrvContexts); - srvContext.bleSrvContexts = NULL; + srvContext.bleSrvContexts = nullptr; } } @@ -173,7 +173,7 @@ bool BuildGattServices(bleServicesContext &context) // Define all services and null service(end) int svcDefSize = sizeof(ble_gatt_svc_def) * (srvCount + 1); ble_gatt_svc_def *svcDef = (ble_gatt_svc_def *)platform_malloc(svcDefSize); - if (svcDef == NULL) + if (svcDef == nullptr) { return false; } @@ -213,7 +213,7 @@ void AssignDescriptor(ble_gatt_dsc_def *pDsc, CLR_RT_HeapBlock *pPfItem, ble_uui pDsc->att_flags = BLE_ATT_F_READ; - if (pPfItem[GattLocalDescriptor::FIELD__WriteRequested].Dereference() != NULL) + if (pPfItem[GattLocalDescriptor::FIELD__WriteRequested].Dereference() != nullptr) { pDsc->att_flags |= BLE_ATT_F_WRITE; @@ -332,7 +332,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt context.characteristicsCount = CharacteristicsCount; context.characteristicsDefs = (ble_gatt_chr_def *)platform_malloc(sizeof(ble_gatt_chr_def) * context.characteristicsCount); - if (context.characteristicsDefs == NULL) + if (context.characteristicsDefs == nullptr) { // Out of memory return false; @@ -348,7 +348,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt { CLR_RT_HeapBlock *pUserDescriptionDescriptors = (CLR_RT_HeapBlock *)pItem[GattLocalCharacteristic::FIELD___userDescriptionDescriptor].Dereference(); - if (pUserDescriptionDescriptors != NULL) + if (pUserDescriptionDescriptors != nullptr) { descriptorCount++; } @@ -375,7 +375,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt // Allocate attribute handles for characteristics context.attrHandles = (uint16_t *)platform_malloc(sizeof(uint16_t) * context.characteristicsCount); - if (context.attrHandles == NULL) + if (context.attrHandles == nullptr) { // Out of memory return false; @@ -384,7 +384,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt // Allocate UUID table context.characteristicsUuids = (ble_uuid_any_t *)platform_malloc(sizeof(ble_uuid_any_t) * context.characteristicsCount); - if (context.characteristicsUuids == NULL) + if (context.characteristicsUuids == nullptr) { // Out of memory return false; @@ -392,13 +392,13 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt // Allocate tables context.descriptorDefs = (ble_gatt_dsc_def *)platform_malloc(sizeof(ble_gatt_dsc_def) * descriptorCount); - if (context.descriptorDefs == NULL && descriptorCount != 0) + if (context.descriptorDefs == nullptr && descriptorCount != 0) { // Out of memory return false; } context.descriptorUuids = (ble_uuid_any_t *)platform_malloc(sizeof(ble_uuid_any_t) * descriptorCount); - if (context.descriptorUuids == NULL && descriptorCount != 0) + if (context.descriptorUuids == nullptr && descriptorCount != 0) { // Out of memory return false; @@ -535,7 +535,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt // Set up User description descriptor if any CLR_RT_HeapBlock *pUserDescriptionDescriptors = (CLR_RT_HeapBlock *)pItem[GattLocalCharacteristic::FIELD___userDescriptionDescriptor].Dereference(); - if (pUserDescriptionDescriptors != NULL) + if (pUserDescriptionDescriptors != nullptr) { // Allocate descriptor for each User Description ble_gatt_dsc_def *pDsc = &context.descriptorDefs[descIndex]; @@ -582,7 +582,7 @@ bool ParseAndBuildNimbleDefinition(ble_context &context, CLR_RT_HeapBlock *pGatt } // Terminate characteristics - context.characteristicsDefs[CharacteristicsCount - 1].uuid = NULL; + context.characteristicsDefs[CharacteristicsCount - 1].uuid = nullptr; BLE_DEBUG_PRINTF( "characteristics start %X last def %X \n ", @@ -600,7 +600,7 @@ void PrintChars(const ble_gatt_chr_def *pchars) BLE_DEBUG_PRINTF("==Characteristics definitions==\n"); - while (pchar->uuid != NULL) + while (pchar->uuid != nullptr) { BLE_DEBUG_PRINTF("==characteristic==\n"); PrintUuid(pchar->uuid); @@ -657,7 +657,7 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_GenericAttribu // Allocate contexts for all service definitions size_t bleContextSize = sizeof(ble_context) * bleContext.serviceCount; bleContext.bleSrvContexts = (ble_context *)platform_malloc(bleContextSize); - if (bleContext.bleSrvContexts == NULL) + if (bleContext.bleSrvContexts == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -843,4 +843,4 @@ HRESULT Library_sys_dev_ble_native_nanoFramework_Device_Bluetooth_Advertisement_ stack.SetResult_Boolean(result); } NANOCLR_NOCLEANUP_NOLABEL(); -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp index 5e21b0f248..20b712bf94 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Device.OneWire/nf_dev_onewire_nanoFramework_Device_OneWire_OneWireHost.cpp @@ -68,7 +68,7 @@ HRESULT oneWireInit() return CLR_E_INVALID_OPERATION; } - if (uart_driver_install(NF_ONEWIRE_ESP32_UART_NUM, 256, 256, 0, NULL, ESP_INTR_FLAG_IRAM) != ESP_OK) + if (uart_driver_install(NF_ONEWIRE_ESP32_UART_NUM, 256, 256, 0, nullptr, ESP_INTR_FLAG_IRAM) != ESP_OK) { return CLR_E_INVALID_OPERATION; } @@ -439,7 +439,7 @@ static void OneWireFindWorkingThread(void *pvParameters) // fire event for 1-Wire operation completed xTaskNotifyGive(WaitingTask); - vTaskDelete(NULL); + vTaskDelete(nullptr); } HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) @@ -488,9 +488,9 @@ HRESULT FindOneDevice(CLR_RT_StackFrame &stack, bool findFirst) { // update serialNumber field - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); - if (pThis == NULL) + if (pThis == nullptr) { return CLR_E_NULL_REFERENCE; } diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulseCounter.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulseCounter.cpp index 6382c2f961..413cd198f2 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulseCounter.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulseCounter.cpp @@ -25,7 +25,7 @@ typedef Library_corlib_native_System_TimeSpan TimeSpan; // Maximum count value from driver #define MAX_COUNTER_VALUE 0x7fff -// Pulse counter information entry held in "counterEntries" array when active, inactive entries will be NULL. +// Pulse counter information entry held in "counterEntries" array when active, inactive entries will be nullptr. struct PulseCounterEntry { int8_t gpioPinA; @@ -46,7 +46,7 @@ static IRAM_ATTR bool pcnt_callback_handler( void *user_ctx) { PulseCounterEntry *entry = counterEntries[(int)user_ctx]; - if (entry != NULL) + if (entry != nullptr) { if (edata->watch_point_value == MAX_COUNTER_VALUE) { @@ -69,7 +69,7 @@ static int FindFreeCounter(int gpioPinA, int gpioPinB) for (counterIndex = 0; counterIndex < PCNT_NUM_UNIT; counterIndex++) { - if (counterEntries[counterIndex] == NULL) + if (counterEntries[counterIndex] == nullptr) { PulseCounterEntry *counter = new PulseCounterEntry(); counterEntries[counterIndex] = counter; @@ -92,7 +92,7 @@ static int FindCounterForGpio(int gpioPin) for (counterIndex = 0; counterIndex < PCNT_NUM_UNIT; counterIndex++) { - if (counterEntries[counterIndex] != NULL && counterEntries[counterIndex]->gpioPinA == gpioPin) + if (counterEntries[counterIndex] != nullptr && counterEntries[counterIndex]->gpioPinA == gpioPin) { return counterIndex; } @@ -110,7 +110,7 @@ static pcnt_unit_handle_t InitialiseCounter(int counterIndex) if (counterIndex >= SOC_PCNT_UNITS_PER_GROUP) { - return NULL; + return nullptr; } PulseCounterEntry *counter = counterEntries[counterIndex]; @@ -121,19 +121,19 @@ static pcnt_unit_handle_t InitialiseCounter(int counterIndex) unit_config.low_limit = -MAX_COUNTER_VALUE; unit_config.high_limit = MAX_COUNTER_VALUE; - counter->unitHandle = NULL; + counter->unitHandle = nullptr; ec = pcnt_new_unit(&unit_config, &counter->unitHandle); if (ec != ESP_OK) { - return NULL; + return nullptr; } pcnt_chan_config_t chan_config_a = {}; chan_config_a.edge_gpio_num = counter->gpioPinA; chan_config_a.level_gpio_num = counter->gpioPinB; - counter->chanHandleA = NULL; - counter->chanHandleB = NULL; + counter->chanHandleA = nullptr; + counter->chanHandleB = nullptr; ec |= pcnt_new_channel(counter->unitHandle, &chan_config_a, &counter->chanHandleA); @@ -156,7 +156,7 @@ static pcnt_unit_handle_t InitialiseCounter(int counterIndex) cbs.on_reach = pcnt_callback_handler; pcnt_unit_register_event_callbacks(counter->unitHandle, &cbs, (void *)counterIndex); - return (ec == ESP_OK) ? counter->unitHandle : NULL; + return (ec == ESP_OK) ? counter->unitHandle : nullptr; } static pcnt_unit_handle_t InitialiseEdgeAndActions(int counterIndex, GpioPulsePolarity polarity) @@ -211,13 +211,13 @@ static pcnt_unit_handle_t InitialiseEdgeAndActions(int counterIndex, GpioPulsePo PCNT_CHANNEL_LEVEL_ACTION_INVERSE); } - return (ec == ESP_OK) ? counter->unitHandle : NULL; + return (ec == ESP_OK) ? counter->unitHandle : nullptr; } static void DisposeCounter(int counterIndex) { PulseCounterEntry *counter = counterEntries[counterIndex]; - if (counter != NULL) + if (counter != nullptr) { pcnt_unit_disable(counter->unitHandle); @@ -227,18 +227,18 @@ static void DisposeCounter(int counterIndex) pcnt_del_unit(counter->unitHandle); // delete channel A ? - if (counter->chanHandleA != NULL) + if (counter->chanHandleA != nullptr) { pcnt_del_channel(counter->chanHandleA); } // delete channel B ? - if (counter->chanHandleB != NULL) + if (counter->chanHandleB != nullptr) { pcnt_del_channel(counter->chanHandleB); } - counterEntries[counterIndex] = NULL; + counterEntries[counterIndex] = nullptr; delete counter; } } @@ -247,7 +247,7 @@ void PulseCountUninitialize() { for (int counterIndex = 0; counterIndex < PCNT_NUM_UNIT; counterIndex++) { - if (counterEntries[counterIndex] != NULL) + if (counterEntries[counterIndex] != nullptr) { DisposeCounter(counterIndex); } @@ -276,7 +276,7 @@ HRESULT Library_nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulse // We need to initialize the array if it's the first one for (int i = 0; i < PCNT_NUM_UNIT; i++) { - counterEntries[i] = NULL; + counterEntries[i] = nullptr; } } @@ -294,7 +294,7 @@ HRESULT Library_nanoFramework_hardware_esp32_native_System_Device_Gpio_GpioPulse NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); } - if (InitialiseCounter(counterIndex) == NULL) + if (InitialiseCounter(counterIndex) == nullptr) { DisposeCounter(counterIndex); NANOCLR_SET_AND_LEAVE(CLR_E_NOT_SUPPORTED); diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32_Touch_TouchPad.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32_Touch_TouchPad.cpp index 558594ec6e..c1138115ee 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32_Touch_TouchPad.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.ESP32/nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32_Touch_TouchPad.cpp @@ -14,7 +14,7 @@ static int numberInitialzed = 0; static bool isTouchInitialized = false; static bool isTouchPadUsed[TOUCH_PAD_MAX]; static bool isFilterOn = false; -static TaskHandle_t handleReadTask = NULL; +static TaskHandle_t handleReadTask = nullptr; static bool isTouched[TOUCH_PAD_MAX]; static uint32_t thresholds[TOUCH_PAD_MAX]; static bool isTimeModeOn = false; @@ -60,12 +60,12 @@ Resources need to be cleaned and the driver uninstalled in case of a soft reboot static void TouchPad_Uninitialize() { // stop the task - if (handleReadTask != NULL) + if (handleReadTask != nullptr) { vTaskDelete(handleReadTask); } - handleReadTask = NULL; + handleReadTask = nullptr; isTimeModeOn = false; // Clean the isr registration @@ -75,7 +75,7 @@ static void TouchPad_Uninitialize() touch_pad_intr_disable((touch_pad_intr_mask_t)(TOUCH_PAD_INTR_MASK_ACTIVE | TOUCH_PAD_INTR_MASK_INACTIVE | TOUCH_PAD_INTR_MASK_TIMEOUT)); #endif - touch_pad_isr_deregister(IsrCallBack, NULL); + touch_pad_isr_deregister(IsrCallBack, nullptr); // Clean filter and uninstall the driver #if defined(CONFIG_IDF_TARGET_ESP32) touch_pad_filter_stop(); @@ -126,10 +126,10 @@ static void MakeSureTouchIsInitialized() #if defined(CONFIG_IDF_TARGET_ESP32) // and features will be added in the future. // touch_pad_intr_enable(); - // touch_pad_isr_register(IsrCallBack, NULL); + // touch_pad_isr_register(IsrCallBack, nullptr); #else // touch_pad_intr_enable(TOUCH_PAD_INTR_MASK_ACTIVE | TOUCH_PAD_INTR_MASK_INACTIVE | - // TOUCH_PAD_INTR_MASK_TIMEOUT); touch_pad_isr_register(IsrCallBack, NULL, TOUCH_PAD_INTR_MASK_ALL); + // TOUCH_PAD_INTR_MASK_TIMEOUT); touch_pad_isr_register(IsrCallBack, nullptr, TOUCH_PAD_INTR_MASK_ALL); #endif } } @@ -793,14 +793,14 @@ HRESULT Library_nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32 isTimeModeOn = false; // If we just switch mode, we have to wait for the task to exit // So killing it - if (handleReadTask != NULL) + if (handleReadTask != nullptr) { vTaskDelete(handleReadTask); } // Waiting a bit to make sure the task is properly deleted vTaskDelay(20 / portTICK_PERIOD_MS); - handleReadTask = NULL; + handleReadTask = nullptr; } // We are starting a task when on timer mode. @@ -810,7 +810,7 @@ HRESULT Library_nanoFramework_hardware_esp32_native_nanoFramework_Hardware_Esp32 { isTimeModeOn = true; // Start a task to show what pads have been touched - xTaskCreate(&ReadTask, "ReadTask", 4096, NULL, 5, &handleReadTask); + xTaskCreate(&ReadTask, "ReadTask", 4096, nullptr, 5, &handleReadTask); } } diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_ReceiverChannel.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_ReceiverChannel.cpp index b4ebef726c..14c83d8628 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_ReceiverChannel.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_ReceiverChannel.cpp @@ -27,7 +27,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E CLR_RT_HeapBlock *receiver_channel_settings; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -105,7 +105,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_INT32 channel; bool clearBuffer; esp_err_t err; @@ -134,7 +134,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E size_t length = 0; rmt_item32_t *rmtItems; - while ((rmtItems = (rmt_item32_t *)xRingbufferReceive(ringbufHandle, &length, 0)) != NULL) + while ((rmtItems = (rmt_item32_t *)xRingbufferReceive(ringbufHandle, &length, 0)) != nullptr) { // Release items back to Ringbuffer vRingbufferReturnItem(ringbufHandle, (void *)rmtItems); @@ -155,7 +155,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_INT32 channel; esp_err_t err; @@ -185,7 +185,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E RingbufHandle_t ringbufHandle; UBaseType_t uxItemsWaiting; - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -200,7 +200,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } - vRingbufferGetInfo(ringbufHandle, NULL, NULL, NULL, NULL, &uxItemsWaiting); + vRingbufferGetInfo(ringbufHandle, nullptr, nullptr, nullptr, nullptr, &uxItemsWaiting); stack.SetResult_I4(uxItemsWaiting); @@ -280,9 +280,9 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E CLR_INT32 waitMs; CLR_INT64 *timespan; size_t length = 0; - rmt_item32_t *rmtItems = NULL; + rmt_item32_t *rmtItems = nullptr; - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -336,7 +336,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E if (length == 0) { - stack.SetResult_Object(NULL); + stack.SetResult_Object(nullptr); } NANOCLR_NOCLEANUP(); @@ -352,7 +352,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E uint8_t threshold; esp_err_t err; - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -382,7 +382,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E CLR_INT32 channel; esp_err_t err; - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -409,7 +409,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E CLR_INT32 channel; - CLR_RT_HeapBlock *receiver_channel_settings = NULL; + CLR_RT_HeapBlock *receiver_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_RmtChannel.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_RmtChannel.cpp index ecb3a44b2a..af212c82c9 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_RmtChannel.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_RmtChannel.cpp @@ -45,7 +45,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *channel_settings = NULL; + CLR_RT_HeapBlock *channel_settings = nullptr; int32_t channel; uint8_t clockdiv = (uint8_t)stack.Arg1().NumericByRef().u1; @@ -71,7 +71,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); { - CLR_RT_HeapBlock *channel_settings = NULL; + CLR_RT_HeapBlock *channel_settings = nullptr; int32_t channel; uint8_t rmt_mem_num; diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_TransmitterChannel.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_TransmitterChannel.cpp index 6d0883522d..613b76d828 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_TransmitterChannel.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Hardware.Esp32.Rmt/nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_Esp32_Rmt_TransmitterChannel.cpp @@ -17,7 +17,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); { - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; int32_t channel; int32_t pin_number; @@ -110,7 +110,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; int32_t channel; bool retVal = 0; rmt_idle_level_t level; @@ -139,7 +139,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; int32_t channel; bool enabled; esp_err_t err; @@ -173,7 +173,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E #if SOC_RMT_SUPPORT_TX_LOOP_COUNT - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; int32_t channel; uint32_t count; esp_err_t err; @@ -218,7 +218,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E bool carrier_level; esp_err_t err; - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -270,7 +270,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E bool idle_level; esp_err_t err; - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -301,7 +301,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -344,7 +344,7 @@ HRESULT Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardware_E { NANOCLR_HEADER(); - CLR_RT_HeapBlock *transmitter_channel_settings = NULL; + CLR_RT_HeapBlock *transmitter_channel_settings = nullptr; int32_t channel; CLR_RT_HeapBlock *pThis = stack.This(); @@ -396,4 +396,4 @@ rmt_config_t Library_nanoFramework_hardware_esp32_rmt_native_nanoFramework_Hardw config.tx_config.idle_output_en = true; return config; -} \ No newline at end of file +} diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp index 7cde2ef48d..106470b33c 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Networking.Thread/net_thread_native_nanoFramework_Networking_Thread_OpenThread.cpp @@ -226,7 +226,7 @@ HRESULT Library_net_thread_native_nanoFramework_Networking_Thread_OpenThread::Na // Fill in active dataset from managed object CLR_RT_HeapBlock *datasetRef = pThis[Networking_Thread_OpenThread::FIELD___dataset].Dereference(); - if (datasetRef != NULL) + if (datasetRef != nullptr) { LoadDataset(dataset, datasetRef); @@ -260,7 +260,7 @@ HRESULT Library_net_thread_native_nanoFramework_Networking_Thread_OpenThread::Na // Save active dataset to managed object CLR_RT_HeapBlock *datasetRef = pThis[Networking_Thread_OpenThread::FIELD___dataset].Dereference(); - if (datasetRef != NULL) + if (datasetRef != nullptr) { // Save active dataset to managed object oterr = otDatasetGetActive(instance, &dataset); @@ -280,7 +280,7 @@ HRESULT Library_net_thread_native_nanoFramework_Networking_Thread_OpenThread::Na NANOCLR_HEADER(); { const char *pskc = stack.Arg1().DereferenceString()->StringText(); - JoinerStart(pskc, NULL); + JoinerStart(pskc, nullptr); } NANOCLR_NOCLEANUP_NOLABEL(); } @@ -326,7 +326,7 @@ HRESULT Library_net_thread_native_nanoFramework_Networking_Thread_OpenThread:: { NANOCLR_HEADER(); { - const char *commandLine = NULL; + const char *commandLine = nullptr; bool waitResponse = false; commandLine = stack.Arg1().DereferenceString()->StringText(); diff --git a/targets/ESP32/_nanoCLR/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_Rtc.cpp b/targets/ESP32/_nanoCLR/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_Rtc.cpp index 0d388206d6..28dbddc559 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_Rtc.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.Runtime.Native/nf_rt_native_nanoFramework_Runtime_Native_Rtc.cpp @@ -29,7 +29,7 @@ HRESULT Library_nf_rt_native_nanoFramework_Runtime_Native_Rtc::Native_RTC_SetSys time_t t = mktime(&newTime); struct timeval now = { .tv_sec = t, .tv_usec = 0 }; - settimeofday(&now, NULL); + settimeofday(&now, nullptr); // Return value to the managed application stack.SetResult_Boolean(true); diff --git a/targets/ESP32/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp b/targets/ESP32/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp index b15b6c977d..3dd2b12652 100644 --- a/targets/ESP32/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp +++ b/targets/ESP32/_nanoCLR/nanoFramework.System.IO.Hashing/nf_sys_io_hashing_System_IO_Hashing_Crc32.cpp @@ -15,13 +15,13 @@ HRESULT Library_nf_sys_io_hashing_System_IO_Hashing_Crc32::ComputeHash___STATIC_ CLR_RT_HeapBlock *bufferSpanByte; CLR_RT_HeapBlock_Array *buffer; - uint8_t *bufferData = NULL; + uint8_t *bufferData = nullptr; int16_t bufferSize = 0; int16_t bufferOffset = 0; uint32_t crc32 = 0; uint32_t hash = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr bufferSpanByte = stack.Arg1().Dereference(); FAULT_ON_NULL_ARG(bufferSpanByte); diff --git a/targets/ESP32/_nanoCLR/targetHAL.cpp b/targets/ESP32/_nanoCLR/targetHAL.cpp index 0bc0da8629..348a15af44 100644 --- a/targets/ESP32/_nanoCLR/targetHAL.cpp +++ b/targets/ESP32/_nanoCLR/targetHAL.cpp @@ -30,13 +30,13 @@ extern void ibeacon_start(); // Reboot handlers clean up on reboot // static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[16] = - {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; void HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] == NULL) + if (s_rebootHandlers[i] == nullptr) { s_rebootHandlers[i] = handler; return; @@ -87,7 +87,7 @@ void nanoHAL_Initialize() FileSystemVolumeList::InitializeVolumes(); // allocate & clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -138,7 +138,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // check for s_rebootHandlers for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] != NULL) + if (s_rebootHandlers[i] != nullptr) { s_rebootHandlers[i](); } diff --git a/targets/ESP32/_nanoCLR/targetHAL_Time.cpp b/targets/ESP32/_nanoCLR/targetHAL_Time.cpp index d4f1e97a10..b5608ecdb2 100644 --- a/targets/ESP32/_nanoCLR/targetHAL_Time.cpp +++ b/targets/ESP32/_nanoCLR/targetHAL_Time.cpp @@ -19,7 +19,7 @@ uint64_t HAL_Time_CurrentDateTime(bool datePartOnly) struct timeval tv; - gettimeofday(&tv, NULL); + gettimeofday(&tv, nullptr); // Convert from Unix time(year since 1900) to SYSTEMTIME(Years since 1601) int64_t time = ((int64_t)tv.tv_sec * (int64_t)TIME_CONVERSION__TO_SECONDS) + ((int64_t)tv.tv_usec * (int64_t)TIME_CONVERSION__TO_USECS) + TIME_UNIX_EPOCH_AS_TICKS; @@ -58,7 +58,7 @@ void HAL_Time_SetUtcTime(uint64_t utcTime) time_t t = mktime(&newTime); struct timeval now = { .tv_sec = t, .tv_usec = 0 }; - settimeofday(&now, NULL); + settimeofday(&now, nullptr); } bool HAL_Time_TimeSpanToStringEx( const int64_t& ticks, char*& buf, size_t& len ) diff --git a/targets/ESP32/_nanoCLR/targetPAL_Events.cpp b/targets/ESP32/_nanoCLR/targetPAL_Events.cpp index 18eae3f1c8..a49efbaee1 100644 --- a/targets/ESP32/_nanoCLR/targetPAL_Events.cpp +++ b/targets/ESP32/_nanoCLR/targetPAL_Events.cpp @@ -45,7 +45,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) // we assume only 1 can be active, abort previous just in case xTimerStop(boolEventsTimer, 0); - if (timerCompleteFlag != NULL) + if (timerCompleteFlag != nullptr) { vTimerSetTimerID(boolEventsTimer, (void *)timerCompleteFlag); xTimerChangePeriod(boolEventsTimer, millisecondsFromNow / portTICK_PERIOD_MS, 0); diff --git a/targets/FreeRTOS/NXP/_common/targetHAL_ConfigurationManager.cpp b/targets/FreeRTOS/NXP/_common/targetHAL_ConfigurationManager.cpp index 5e13cd372b..16d12b6c84 100644 --- a/targets/FreeRTOS/NXP/_common/targetHAL_ConfigurationManager.cpp +++ b/targets/FreeRTOS/NXP/_common/targetHAL_ConfigurationManager.cpp @@ -103,7 +103,7 @@ bool ConfigurationManager_GetConfigurationBlock( uint32_t configurationIndex) { int sizeOfBlock = 0; - uint8_t *blockAddress = NULL; + uint8_t *blockAddress = nullptr; // validate if the requested block exists // Count has to be non zero @@ -113,7 +113,7 @@ bool ConfigurationManager_GetConfigurationBlock( if (g_TargetConfiguration.NetworkInterfaceConfigs->Count == 0) { // there is no network config block, init one with default settings - if (!InitialiseNetworkDefaultConfig(NULL, 0)) + if (!InitialiseNetworkDefaultConfig(nullptr, 0)) { return FALSE; } @@ -270,7 +270,7 @@ bool ConfigurationManager_StoreConfigurationBlock( } // copy the config block content to the config block storage - success = iMXRTFlexSPIDriver_Write(NULL, storageAddress, blockSize, (unsigned char *)configurationBlock, false); + success = iMXRTFlexSPIDriver_Write(nullptr, storageAddress, blockSize, (unsigned char *)configurationBlock, false); // enumeration is required after we are DONE with SUCCESSFULLY storing all the config chunks requiresEnumeration = (success && done); @@ -308,7 +308,7 @@ UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock( // allocate memory from CRT heap uint8_t *configSectorCopy = (uint8_t *)platform_malloc(sizeOfConfigSector); - if (configSectorCopy != NULL) + if (configSectorCopy != nullptr) { // copy config sector from flash to RAM memcpy(configSectorCopy, &__nanoConfig_start__, sizeOfConfigSector); @@ -370,7 +370,7 @@ UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock( } // erase config sector - if (iMXRTFlexSPIDriver_EraseBlock(NULL, (uint32_t)&__nanoConfig_start__) == TRUE) + if (iMXRTFlexSPIDriver_EraseBlock(nullptr, (uint32_t)&__nanoConfig_start__) == TRUE) { // flash block is erased @@ -385,7 +385,7 @@ UpdateConfigurationResult ConfigurationManager_UpdateConfigurationBlock( // copy the config block copy back to the config block storage if (iMXRTFlexSPIDriver_Write( - NULL, + nullptr, (uint32_t)&__nanoConfig_start__, sizeOfConfigSector, (unsigned char *)configSectorCopy, diff --git a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp index e06f47d595..1455a10374 100644 --- a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp +++ b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp @@ -200,14 +200,14 @@ extern "C" } // Get pointer to gpio_input_state for Gpio pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputState(GPIO_PIN pinNumber) { int port = GetIoPort(pinNumber); int bit = GetIoBit(pinNumber); - if (port_array[port] == NULL) - return NULL; + if (port_array[port] == nullptr) + return nullptr; statePortArray *inputStates = port_array[port]; return *inputStates[bit]; @@ -220,11 +220,11 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) int port = GetIoPort(pinNumber); int bit = GetIoBit(pinNumber); - if (port_array[port] == NULL) + if (port_array[port] == nullptr) { port_array[port] = (statePortArray *)platform_malloc(sizeof(statePortArray)); - if (port_array[port] == NULL) - return NULL; + if (port_array[port] == nullptr) + return nullptr; memset(port_array[port], 0, sizeof(statePortArray)); } @@ -232,7 +232,7 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) statePortArray *inputStates = port_array[port]; gpio_input_state *pState = (*inputStates)[bit]; - if (pState == NULL) + if (pState == nullptr) { pState = (gpio_input_state *)platform_malloc(sizeof(gpio_input_state)); memset(pState, 0, sizeof(gpio_input_state)); @@ -249,7 +249,7 @@ void DeleteInputState(GPIO_PIN pinNumber) int bit = GetIoBit(pinNumber); statePortArray *inputStates = port_array[port]; - if (inputStates == NULL) + if (inputStates == nullptr) return; gpio_input_state *pState = (*inputStates)[bit]; @@ -265,7 +265,7 @@ void DeleteInputState(GPIO_PIN pinNumber) GPIO_PinInit(GPIO_BASE(pinNumber), GPIO_PIN(pinNumber), &config); platform_free(pState); - (*inputStates)[bit] = NULL; + (*inputStates)[bit] = nullptr; } } @@ -292,10 +292,10 @@ bool CPU_GPIO_Uninitialize() for (int port = 0; port < TOTAL_GPIO_PORTS; port++) { statePortArray *inputStates = port_array[port]; - if (inputStates != NULL) + if (inputStates != nullptr) { platform_free(port_array[port]); // free up inputStates array - port_array[port] = NULL; + port_array[port] = nullptr; } } @@ -395,7 +395,7 @@ bool CPU_GPIO_EnableInputPin( pState = AllocateGpioInputState(pinNumber); - if (pinISR != NULL && (pState->isrPtr == NULL)) + if (pinISR != nullptr && (pState->isrPtr == nullptr)) { // enable interupt mode with correct edge gpio_pin_config_t config = {kGPIO_DigitalInput, 0, kGPIO_IntRisingOrFallingEdge}; @@ -441,7 +441,7 @@ bool CPU_GPIO_EnableInputPin( } } } - else if (pinISR == NULL && (pState->isrPtr != NULL)) + else if (pinISR == nullptr && (pState->isrPtr != nullptr)) { // there is no managed handler setup anymore // remove INT handler @@ -450,9 +450,9 @@ bool CPU_GPIO_EnableInputPin( GPIO_PortDisableInterrupts(GPIO_BASE(pinNumber), 1U << GetIoBit(pinNumber)); // clear parameters & configs - pState->isrPtr = NULL; + pState->isrPtr = nullptr; pState->mode = GPIO_INT_NONE; - pState->param = NULL; + pState->param = nullptr; pState->debounceMs = 0; } diff --git a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index 8afdaa6def..8d2bf36618 100644 --- a/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/FreeRTOS/NXP/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -50,7 +50,7 @@ i2c_structure_t *I2C_ChoosePeripheralStructure(uint8_t busIndex) } else { - return NULL; + return nullptr; } } @@ -171,7 +171,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI i2c_structure_t *pI2Cx; uint8_t busIndex; - // Get a pointer to the managed object instance and check that it's not NULL + // Get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -220,7 +220,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ CLR_RT_HeapBlock *pConfig; - // Get a pointer to the managed object instance and check that it's not NULL + // Get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -289,12 +289,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; CLR_RT_HeapBlock *result; CLR_RT_HeapBlock *pConfig; - // Get a pointer to the managed object instance and check that it's not NULL + // Get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); CLR_RT_HeapBlock &top = stack.PushValueAndClear(); @@ -311,38 +311,38 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { pI2Cx->txBuffer = writeBuffer->GetFirstElement(); pI2Cx->txSize = writeBuffer->m_numOfElements; } } - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { - pI2Cx->txBuffer = NULL; + pI2Cx->txBuffer = nullptr; pI2Cx->txSize = 0; } readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { pI2Cx->rxBuffer = readBuffer->GetFirstElement(); pI2Cx->rxSize = readBuffer->m_numOfElements; } } - if (readBuffer == NULL) + if (readBuffer == nullptr) { - pI2Cx->rxBuffer = NULL; + pI2Cx->rxBuffer = nullptr; pI2Cx->rxSize = 0; } diff --git a/targets/FreeRTOS/NXP/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp b/targets/FreeRTOS/NXP/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp index a20029a2e0..18283bfb4f 100644 --- a/targets/FreeRTOS/NXP/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp +++ b/targets/FreeRTOS/NXP/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp @@ -16,7 +16,7 @@ static NF_PAL_UART Uart_PAL1, Uart_PAL2, Uart_PAL3, Uart_PAL4, Uart_PAL5, Uart_P // Array of pointers to above config UART structs. NF_PAL_UART *const - Uart_PAL[]{NULL, &Uart_PAL1, &Uart_PAL2, &Uart_PAL3, &Uart_PAL4, &Uart_PAL5, &Uart_PAL6, &Uart_PAL7, &Uart_PAL8}; + Uart_PAL[]{nullptr, &Uart_PAL1, &Uart_PAL2, &Uart_PAL3, &Uart_PAL4, &Uart_PAL5, &Uart_PAL6, &Uart_PAL7, &Uart_PAL8}; // Task firing up event after receiving wanted amount of bytes static void vREvent(void *pvParameters) @@ -210,10 +210,10 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - CLR_RT_HeapBlock_Array *dataBuffer = NULL; - NF_PAL_UART *palUart = NULL; + CLR_RT_HeapBlock_Array *dataBuffer = nullptr; + NF_PAL_UART *palUart = nullptr; - uint8_t *data = NULL; + uint8_t *data = nullptr; uint8_t uartNum = 0; size_t bytesRead = 0; @@ -351,14 +351,14 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum = 0; - uint8_t *buffer = NULL; + uint8_t *buffer = nullptr; uint32_t bufferLength; CLR_RT_HeapBlock &top = stack.PushValue(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -387,7 +387,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR buffer = (uint8_t *)platform_malloc(bufferLength); // sanity check - if (buffer == NULL) + if (buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -400,12 +400,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR else { // create an empty - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)nullptr)); } NANOCLR_CLEANUP(); - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -418,18 +418,18 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum = 0; - uint8_t *line = NULL; - const char *newLine = NULL; + uint8_t *line = nullptr; + const char *newLine = nullptr; uint32_t newLineLength; int64_t *timeoutTicks; bool eventResult = true; bool newLineFound = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -471,8 +471,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get new line from field newLine = pThis[FIELD___newLine].RecoverString(); - // sanity check for NULL string - if (newLine == NULL) + // sanity check for nullptr string + if (newLine == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -520,7 +520,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( stack.SetResult_String((const char *)line); // free memory, if needed - if (line != NULL) + if (line != nullptr) { platform_free(line); } @@ -532,7 +532,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; size_t length = 0; @@ -541,12 +541,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR int64_t *timeoutTicks; bool eventResult = true; - uint8_t *data = NULL; + uint8_t *data = nullptr; uint8_t uartNum = 0; size_t count = 0; size_t offset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -650,7 +650,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR stack.SetResult_U4(count); // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -662,7 +662,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO NF_PAL_UART *palUart; uint8_t uartNum = 0; - LPUART_Type *base = NULL; + LPUART_Type *base = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -671,7 +671,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO base = lpuart_bases[uartNum]; // Quit if parameters or device is invalid or out of range - if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || base == NULL) + if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || base == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -682,8 +682,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO platform_free(palUart->RxBuffer); // null all pointers - palUart->RxBuffer = NULL; - palUart->TxBuffer = NULL; + palUart->RxBuffer = nullptr; + palUart->TxBuffer = nullptr; // Deinitialize device and delete FreeRTOS idle tasks LPUART_Deinit(base); @@ -699,9 +699,9 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( status_t status = 0; uint8_t uartNum = 0; - lpuart_config_t *config = NULL; - LPUART_Type *base = NULL; - NF_PAL_UART *palUart = NULL; + lpuart_config_t *config = nullptr; + LPUART_Type *base = nullptr; + NF_PAL_UART *palUart = nullptr; BaseType_t xReturned; int32_t bufferSize; uint8_t watchChar; @@ -714,7 +714,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( base = lpuart_bases[uartNum]; // Quit if parameters or device is invalid or out of range - if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || config == NULL || base == NULL) + if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || config == nullptr || base == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -726,7 +726,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( palUart->RxBuffer = (uint8_t *)platform_malloc(bufferSize * sizeof(uint8_t)); - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -803,8 +803,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI status_t status = 0; uint8_t uartNum = 0; - lpuart_config_t *config = NULL; - LPUART_Type *base = NULL; + lpuart_config_t *config = nullptr; + LPUART_Type *base = nullptr; CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -813,7 +813,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI config = &Uart_PAL[uartNum]->uartCfg; base = lpuart_bases[uartNum]; - if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || config == NULL || base == NULL) + if (uartNum >= (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])) || config == nullptr || base == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_IO); } @@ -897,7 +897,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar NF_PAL_UART *palUart; uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -931,11 +931,11 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ bool eventResult = true; bool isNewAllocation = false; - char *buffer = NULL; + char *buffer = nullptr; uint32_t bufferLength; int32_t length = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -955,7 +955,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ palUart = Uart_PAL[uartNum]; - if (stack.Arg1().RecoverString() == NULL) + if (stack.Arg1().RecoverString() == nullptr) { // text string it's empty so there is noting to do here stack.SetResult_U4(0); @@ -1043,7 +1043,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1057,7 +1057,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte int32_t threshold; uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1099,7 +1099,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::GetDeviceSelector_ int len = 0; for (uint8_t i = 1; i < (sizeof(Uart_PAL) / sizeof(Uart_PAL[0])); i++) { - if (Uart_PAL[i] != NULL) + if (Uart_PAL[i] != nullptr) { char com[6] = "COM1,"; com[3] = i + '0'; diff --git a/targets/FreeRTOS/NXP/_nanoCLR/targetHAL.cpp b/targets/FreeRTOS/NXP/_nanoCLR/targetHAL.cpp index 02d9ca47b5..ea256bc26e 100644 --- a/targets/FreeRTOS/NXP/_nanoCLR/targetHAL.cpp +++ b/targets/FreeRTOS/NXP/_nanoCLR/targetHAL.cpp @@ -15,13 +15,13 @@ // Reboot handlers clean up on reboot // static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[16] = - {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; void HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] == NULL) + if (s_rebootHandlers[i] == nullptr) { s_rebootHandlers[i] = handler; return; @@ -62,7 +62,7 @@ void nanoHAL_Initialize() BlockStorageList_InitializeDevices(); // clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -91,7 +91,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // check for s_rebootHandlers for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] != NULL) + if (s_rebootHandlers[i] != nullptr) { s_rebootHandlers[i](); } diff --git a/targets/FreeRTOS/_common/nanoCLR/nanoCRT.cpp b/targets/FreeRTOS/_common/nanoCLR/nanoCRT.cpp index 4297bd9a2a..02457db7ad 100644 --- a/targets/FreeRTOS/_common/nanoCLR/nanoCRT.cpp +++ b/targets/FreeRTOS/_common/nanoCLR/nanoCRT.cpp @@ -137,7 +137,7 @@ int hal_strcpy_s(char *strDst, size_t sizeInBytes, const char *strSrc) #undef strcpy size_t len; - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -160,7 +160,7 @@ int hal_strncpy_s(char *strDst, size_t sizeInBytes, const char *strSrc, size_t c { NATIVE_PROFILE_PAL_CRT(); #undef strncpy - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -194,7 +194,7 @@ int hal_strncmp_s(const char *str1, const char *str2, size_t num) { NATIVE_PROFILE_PAL_CRT(); #undef strncmp - if (str1 == NULL || str2 == NULL) + if (str1 == nullptr || str2 == nullptr) { _ASSERTE(FALSE); return 1; diff --git a/targets/FreeRTOS/_common/nanoCLR/targetPAL_Events.cpp b/targets/FreeRTOS/_common/nanoCLR/targetPAL_Events.cpp index 876ffc5417..13a056bb30 100644 --- a/targets/FreeRTOS/_common/nanoCLR/targetPAL_Events.cpp +++ b/targets/FreeRTOS/_common/nanoCLR/targetPAL_Events.cpp @@ -45,7 +45,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) // we assume only 1 can be active, abort previous just in case xTimerStop(boolEventsTimer, 0); - if (timerCompleteFlag != NULL) + if (timerCompleteFlag != nullptr) { vTimerSetTimerID(boolEventsTimer, (void *)timerCompleteFlag); xTimerChangePeriod(boolEventsTimer, millisecondsFromNow / portTICK_PERIOD_MS, 0); diff --git a/targets/TI_SimpleLink/_common/simplelink_sockets.cpp b/targets/TI_SimpleLink/_common/simplelink_sockets.cpp index f098d8b2e2..6bc6a62d32 100644 --- a/targets/TI_SimpleLink/_common/simplelink_sockets.cpp +++ b/targets/TI_SimpleLink/_common/simplelink_sockets.cpp @@ -116,9 +116,9 @@ bool SimpleLink_SOCKETS_Initialize() { NATIVE_PROFILE_PAL_NETWORK(); - PostAddressChangedContinuation.InitializeCallback(PostAddressChanged, NULL); - PostAvailabilityOnContinuation.InitializeCallback(PostAvailabilityOn, NULL); - PostAvailabilityOffContinuation.InitializeCallback(PostAvailabilityOff, NULL); + PostAddressChangedContinuation.InitializeCallback(PostAddressChanged, nullptr); + PostAvailabilityOnContinuation.InitializeCallback(PostAvailabilityOn, nullptr); + PostAvailabilityOffContinuation.InitializeCallback(PostAvailabilityOff, nullptr); return true; } diff --git a/targets/TI_SimpleLink/_common/simplelink_sockets_functions.cpp b/targets/TI_SimpleLink/_common/simplelink_sockets_functions.cpp index ba9c6cb4c2..40510bd32a 100644 --- a/targets/TI_SimpleLink/_common/simplelink_sockets_functions.cpp +++ b/targets/TI_SimpleLink/_common/simplelink_sockets_functions.cpp @@ -172,7 +172,7 @@ HRESULT HAL_SOCK_CONFIGURATION_UpdateAdapterConfiguration( // all changes require SL reinit sl_Stop(0); - sl_Start(NULL, NULL, NULL); + sl_Start(nullptr, nullptr, nullptr); return S_OK; } @@ -212,5 +212,5 @@ void HAL_SOCK_EventsSet(uint32_t events) void *HAL_SOCK_GlobalLockContext() { NATIVE_PROFILE_PAL_NETWORK(); - return NULL; + return nullptr; } diff --git a/targets/TI_SimpleLink/_common/sockets_simplelink.cpp b/targets/TI_SimpleLink/_common/sockets_simplelink.cpp index 77c3f1dddc..f134fc60df 100644 --- a/targets/TI_SimpleLink/_common/sockets_simplelink.cpp +++ b/targets/TI_SimpleLink/_common/sockets_simplelink.cpp @@ -18,7 +18,7 @@ int socketErrorCode; static int MARSHAL_SOCK_FDSET_TO_SL_SDSET(SOCK_fd_set *sf, SlNetSock_SdSet_t *f) { - if (f != NULL && sf != NULL) + if (f != nullptr && sf != nullptr) { SlNetSock_sdsClrAll(f); @@ -35,7 +35,7 @@ static int MARSHAL_SOCK_FDSET_TO_SL_SDSET(SOCK_fd_set *sf, SlNetSock_SdSet_t *f) static void MARSHAL_SL_SDSET_TO_SOCK_FDSET(SOCK_fd_set *sf, SlNetSock_SdSet_t *f) { - if (sf != NULL && f != NULL) + if (sf != nullptr && f != nullptr) { int cnt = sf->fd_count; sf->fd_count = 0; @@ -321,17 +321,17 @@ int SOCK_getaddrinfo( NATIVE_PROFILE_PAL_COM(); SOCK_addrinfo *ai; - SOCK_sockaddr_in *sa = NULL; + SOCK_sockaddr_in *sa = nullptr; int total_size = sizeof(SOCK_addrinfo) + sizeof(SOCK_sockaddr_in); - struct SlNetUtil_addrInfo_t *addrInfo = NULL; + struct SlNetUtil_addrInfo_t *addrInfo = nullptr; - if (res == NULL) + if (res == nullptr) return SOCK_SOCKET_ERROR; - *res = NULL; + *res = nullptr; // if the nodename == "" then return the IP address of this device - if (nodename[0] == 0 && servname == NULL) + if (nodename[0] == 0 && servname == nullptr) { uint16_t configOptions; uint16_t ipLen = sizeof(SlNetCfgIpV4Args_t); @@ -341,7 +341,7 @@ int SOCK_getaddrinfo( { ai = (SOCK_addrinfo *)platform_malloc(total_size); - if (ai != NULL) + if (ai != nullptr) { memset(ai, 0, total_size); sa = (SOCK_sockaddr_in *)((uint8_t *)ai + sizeof(SOCK_addrinfo)); @@ -359,7 +359,7 @@ int SOCK_getaddrinfo( // set up addrinfo ai->ai_family = SL_AF_INET; - if (hints != NULL) + if (hints != nullptr) { // copy socktype & protocol from hints if specified ai->ai_socktype = hints->ai_socktype; @@ -388,7 +388,7 @@ int SOCK_getaddrinfo( SlNetSock_AddrIn_t *sockaddr_in; ai = (SOCK_addrinfo *)platform_malloc(total_size); - if (ai == NULL) + if (ai == nullptr) { SlNetUtil_freeAddrInfo(addrInfo); } @@ -406,7 +406,7 @@ int SOCK_getaddrinfo( /* set up addrinfo */ ai->ai_family = addrInfo->ai_family; - if (hints != NULL) + if (hints != nullptr) { /* copy socktype & protocol from hints if specified */ ai->ai_socktype = hints->ai_socktype; @@ -655,7 +655,7 @@ int SOCK_select( uint32_t networkInterfaceID; // If the network goes down then we should alert any pending socket actions - if (exceptfds != NULL && exceptfds->fd_count > 0) + if (exceptfds != nullptr && exceptfds->fd_count > 0) { // find the network interface for this socket // the socket handle is "burried" inside the exceptfds struct (see the caller code in Helper__SelectSocket) @@ -669,11 +669,11 @@ int SOCK_select( if (SlNetIf_getConnectionStatus(networkInterfaceID) == SLNETIF_STATUS_DISCONNECTED) { - if (readfds != NULL) + if (readfds != nullptr) { readfds->fd_count = 0; } - if (writefds != NULL) + if (writefds != nullptr) { writefds->fd_count = 0; } @@ -686,7 +686,7 @@ int SOCK_select( // developer note: // The original code, being lwIP based, uses the convention that 0 is infinite timeout - // Because SimpleLink infinite timeout is negative or NULL we need to translate it. + // Because SimpleLink infinite timeout is negative or nullptr we need to translate it. SlNetSock_Timeval_t timeoutCopy; bool isInfiniteTimeout = false; @@ -705,7 +705,7 @@ int SOCK_select( (SlNetSock_SdSet_t *)readfds, (SlNetSock_SdSet_t *)writefds, (SlNetSock_SdSet_t *)exceptfds, - isInfiniteTimeout ? NULL : &timeoutCopy); + isInfiniteTimeout ? nullptr : &timeoutCopy); socketErrorCode = ret; diff --git a/targets/TI_SimpleLink/_common/ssl_simplelink.cpp b/targets/TI_SimpleLink/_common/ssl_simplelink.cpp index 9b4a200d6b..54ed6edb93 100644 --- a/targets/TI_SimpleLink/_common/ssl_simplelink.cpp +++ b/targets/TI_SimpleLink/_common/ssl_simplelink.cpp @@ -102,7 +102,7 @@ bool ssl_generic_init_internal( /////////////////////// for (uint32_t i = 0; i < ARRAYSIZE(g_SSL_Driver.ContextArray); i++) { - if (g_SSL_Driver.ContextArray[i].Context == NULL) + if (g_SSL_Driver.ContextArray[i].Context == nullptr) { sslContexIndex = i; break; @@ -115,7 +115,7 @@ bool ssl_generic_init_internal( // create and init nanoFramework Simple Link context // this needs to be freed in ssl_exit_context_internal context = (SlSSL_Context *)platform_malloc(sizeof(SlSSL_Context)); - if (context == NULL) + if (context == nullptr) { goto error; } @@ -124,7 +124,7 @@ bool ssl_generic_init_internal( // this is the equivalent of SSL context in MbedTLS // it needs to be freed in ssl_exit_context_internal context->SecurityAttributes = SlNetSock_secAttribCreate(); - if (context->SecurityAttributes == NULL) + if (context->SecurityAttributes == nullptr) { goto error; } @@ -166,7 +166,7 @@ bool ssl_generic_init_internal( // CA root certs are taken from Simple Link trusted root-certificate catalog, so nothing to do here // // parse "own" certificate if passed - // if(certificate != NULL && certLength > 0) + // if(certificate != nullptr && certLength > 0) // { // // TODO // // this isn't required for client authentication @@ -185,7 +185,7 @@ bool ssl_generic_init_internal( // // } // // if( mbedtls_pk_parse_key( &pkey, (const unsigned char *) mbedtls_test_cli_key, mbedtls_test_cli_key_len, - // NULL, 0 ) != 0) + // nullptr, 0 ) != 0) // // { // // // failed parsing the // // } @@ -225,12 +225,12 @@ bool ssl_generic_init_internal( error: // check for any memory allocation that needs to be freed before exiting - if (context != NULL) + if (context != nullptr) { platform_free(context); } - if (context->SecurityAttributes != NULL) + if (context->SecurityAttributes != nullptr) { SlNetSock_secAttribDelete(context->SecurityAttributes); } @@ -240,17 +240,17 @@ bool ssl_generic_init_internal( bool ssl_exit_context_internal(int contextHandle) { - SlSSL_Context *context = NULL; + SlSSL_Context *context = nullptr; // Check contextHandle range if ((contextHandle >= (int)ARRAYSIZE(g_SSL_Driver.ContextArray)) || (contextHandle < 0) || - (g_SSL_Driver.ContextArray[contextHandle].Context == NULL)) + (g_SSL_Driver.ContextArray[contextHandle].Context == nullptr)) { return false; } context = (SlSSL_Context *)g_SSL_Driver.ContextArray[contextHandle].Context; - if (context == NULL) + if (context == nullptr) { return false; } @@ -283,7 +283,7 @@ int ssl_connect_internal(int sd, const char *szTargetHost, int contextHandle) // sd should already have been created // Now do the SSL negotiation context = (SlSSL_Context *)g_SSL_Driver.ContextArray[contextHandle].Context; - if (context == NULL) + if (context == nullptr) { return SOCK_SOCKET_ERROR; } @@ -291,7 +291,7 @@ int ssl_connect_internal(int sd, const char *szTargetHost, int contextHandle) // set socket in network context context->SocketFd = sd; - if (szTargetHost != NULL && szTargetHost[0] != 0) + if (szTargetHost != nullptr && szTargetHost[0] != 0) { status = SlNetSock_secAttribSet( context->SecurityAttributes, diff --git a/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC13xx_26xx.cpp b/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC13xx_26xx.cpp index 4261ae5257..53eee12381 100644 --- a/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC13xx_26xx.cpp +++ b/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC13xx_26xx.cpp @@ -35,9 +35,9 @@ void *ConfigurationManagerCC13xx_26xx_FindNetworkConfigurationBlocks() fileList = (slGetfileList_t *)platform_malloc(sizeof(slGetfileList_t) * NETWORK_CONFIG_MAX_COUNT); // check successful malloc - if (fileList == NULL) + if (fileList == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -249,7 +249,7 @@ bool ConfigurationManager_GetConfigurationBlock( DeviceConfigurationOption configuration, uint32_t configurationIndex) { - unsigned char *fileName = NULL; + unsigned char *fileName = nullptr; int32_t fileHandle; uint32_t token = 0; @@ -259,7 +259,7 @@ bool ConfigurationManager_GetConfigurationBlock( uint8_t dummyMAC[SL_MAC_ADDR_LEN]; uint32_t dummyPriority; - HAL_Configuration_Wireless80211 *wirelessConfigBlock = NULL; + HAL_Configuration_Wireless80211 *wirelessConfigBlock = nullptr; // validate if the requested block exists // Count has to be non zero @@ -333,7 +333,7 @@ bool ConfigurationManager_GetConfigurationBlock( } } - if (fileName != NULL) + if (fileName != nullptr) { platform_free(fileName); } @@ -358,7 +358,7 @@ bool ConfigurationManager_GetConfigurationBlock( &dummyNameLen, &dummyMAC[0], &secParams, - NULL, + nullptr, &dummyPriority); if (retVal == SL_ERROR_WLAN_GET_PROFILE_INVALID_INDEX) { @@ -370,7 +370,7 @@ bool ConfigurationManager_GetConfigurationBlock( wirelessConfigBlock->Authentication = GetAuthentication(secParams); wirelessConfigBlock->Encryption = GetEncryption(secParams); - // password is hidden, NULL the string + // password is hidden, nullptr the string memset(wirelessConfigBlock->Password, 0, sizeof(wirelessConfigBlock->Password)); // wirelessConfigBlock->Radio @@ -418,7 +418,7 @@ bool ConfigurationManager_StoreConfigurationBlock( bool requiresEnumeration = false; bool success = false; - unsigned char *fileName = NULL; + unsigned char *fileName = nullptr; int32_t fileHandle; uint32_t token = 0; @@ -473,7 +473,7 @@ bool ConfigurationManager_StoreConfigurationBlock( } } - if (fileName != NULL) + if (fileName != nullptr) { platform_free(fileName); } @@ -491,9 +491,9 @@ bool ConfigurationManager_StoreConfigurationBlock( retVal = sl_WlanProfileAdd( (const signed char *)wirelessConfigBlock->Ssid, hal_strlen_s((const char *)(wirelessConfigBlock->Ssid)), - NULL, + nullptr, &secParams, - NULL, + nullptr, 0, 0); if (retVal < 0) diff --git a/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC32xx.cpp b/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC32xx.cpp index f4ad372220..ab33021c54 100644 --- a/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC32xx.cpp +++ b/targets/TI_SimpleLink/_common/targetHAL_ConfigurationManager_CC32xx.cpp @@ -35,9 +35,9 @@ void *ConfigurationManagerCC32xx_FindNetworkConfigurationBlocks() fileList = (slGetfileList_t *)platform_malloc(sizeof(slGetfileList_t) * NETWORK_CONFIG_MAX_COUNT); // check successful malloc - if (fileList == NULL) + if (fileList == nullptr) { - return NULL; + return nullptr; } // clear memory @@ -248,7 +248,7 @@ bool ConfigurationManager_GetConfigurationBlock( DeviceConfigurationOption configuration, uint32_t configurationIndex) { - unsigned char *fileName = NULL; + unsigned char *fileName = nullptr; int32_t fileHandle; uint32_t token = 0; @@ -258,7 +258,7 @@ bool ConfigurationManager_GetConfigurationBlock( uint8_t dummyMAC[SL_MAC_ADDR_LEN]; uint32_t dummyPriority; - HAL_Configuration_Wireless80211 *wirelessConfigBlock = NULL; + HAL_Configuration_Wireless80211 *wirelessConfigBlock = nullptr; // validate if the requested block exists // Count has to be non zero @@ -332,7 +332,7 @@ bool ConfigurationManager_GetConfigurationBlock( } } - if (fileName != NULL) + if (fileName != nullptr) { platform_free(fileName); } @@ -357,7 +357,7 @@ bool ConfigurationManager_GetConfigurationBlock( &dummyNameLen, &dummyMAC[0], &secParams, - NULL, + nullptr, &dummyPriority); if (retVal == SL_ERROR_WLAN_GET_PROFILE_INVALID_INDEX) { @@ -369,7 +369,7 @@ bool ConfigurationManager_GetConfigurationBlock( wirelessConfigBlock->Authentication = GetAuthentication(secParams); wirelessConfigBlock->Encryption = GetEncryption(secParams); - // password is hidden, NULL the string + // password is hidden, nullptr the string memset(wirelessConfigBlock->Password, 0, sizeof(wirelessConfigBlock->Password)); // wirelessConfigBlock->Radio @@ -417,7 +417,7 @@ bool ConfigurationManager_StoreConfigurationBlock( bool requiresEnumeration = false; bool success = false; - unsigned char *fileName = NULL; + unsigned char *fileName = nullptr; int32_t fileHandle; uint32_t token = 0; @@ -472,7 +472,7 @@ bool ConfigurationManager_StoreConfigurationBlock( } } - if (fileName != NULL) + if (fileName != nullptr) { platform_free(fileName); } @@ -490,9 +490,9 @@ bool ConfigurationManager_StoreConfigurationBlock( retVal = sl_WlanProfileAdd( (const signed char *)wirelessConfigBlock->Ssid, hal_strlen_s((const char *)(wirelessConfigBlock->Ssid)), - NULL, + nullptr, &secParams, - NULL, + nullptr, 0, 0); if (retVal < 0) diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp index f670441602..9666aeb45c 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcChannel.cpp @@ -35,7 +35,7 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue double rawValue; ADC_Handle adcHandler; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -49,7 +49,7 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcChannel::NativeReadValue FAULT_ON_NULL(adcHandler); // sanity check - if (adcHandler == NULL) + if (adcHandler == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_FAIL); } diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp index bfc0a33be1..047a32f8ef 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Adc/sys_dev_adc_native_System_Device_Adc_AdcController.cpp @@ -77,7 +77,7 @@ HRESULT Library_sys_dev_adc_native_System_Device_Adc_AdcController::NativeInit__ { NANOCLR_HEADER(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp index b82d86609e..e66fa3da5e 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Gpio/cpu_gpio.cpp @@ -61,12 +61,12 @@ static HAL_DblLinkedList gpioInputList; // static uint8_t pinReserved[TOTAL_GPIO_PORTS]; // Get pointer to gpio_input_state for GPIO pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputState(GPIO_PIN pinNumber) { gpio_input_state *pState = gpioInputList.FirstNode(); - while (pState->Next() != NULL) + while (pState->Next() != nullptr) { if (pState->pinNumber == pinNumber) { @@ -76,16 +76,16 @@ gpio_input_state *GetInputState(GPIO_PIN pinNumber) pState = pState->Next(); } - return NULL; + return nullptr; } // Get pointer to gpio_input_state for GPIO pin -// return NULL if not found +// return nullptr if not found gpio_input_state *GetInputStateByConfigIndex(uint8_t pinConfigIndex) { gpio_input_state *pState = gpioInputList.FirstNode(); - while (pState->Next() != NULL) + while (pState->Next() != nullptr) { if (pState->pinConfigIndex == pinConfigIndex) { @@ -95,7 +95,7 @@ gpio_input_state *GetInputStateByConfigIndex(uint8_t pinConfigIndex) pState = pState->Next(); } - return NULL; + return nullptr; } // Allocate a new gpio_input_state and add to end of list @@ -104,13 +104,13 @@ gpio_input_state *AllocateGpioInputState(GPIO_PIN pinNumber) { gpio_input_state *pState = GetInputState(pinNumber); - if (pState == NULL) + if (pState == nullptr) { // found a free slot! pState = (gpio_input_state *)platform_malloc(sizeof(gpio_input_state)); // sanity check - if (pState != NULL) + if (pState != nullptr) { memset(pState, 0, sizeof(gpio_input_state)); @@ -190,7 +190,7 @@ static void GpioEventCallback(uint_least8_t index) gpio_input_state *pState = GetInputStateByConfigIndex(index); // Any pin set up here ? - if (pState != NULL) + if (pState != nullptr) { // Ignore any pin changes during debounce timeout if (!pState->waitingDebounce) @@ -355,7 +355,7 @@ bool CPU_GPIO_EnableInputPin( // Link ISR ptr supplied and not already set up // CPU_GPIO_EnableInputPin could be called a 2nd time with changed parameters - if (pinISR != NULL && (pState->isrPtr == NULL)) + if (pinISR != nullptr && (pState->isrPtr == nullptr)) { // set callback GPIO_setCallback(pState->pinConfigIndex, GpioEventCallback); @@ -370,7 +370,7 @@ bool CPU_GPIO_EnableInputPin( pState->debounceMs = debounceTimeMilliseconds; // create timer if not there yet - if (pState->debounceMs > 0 && pState->debounceTimer == NULL) + if (pState->debounceMs > 0 && pState->debounceTimer == nullptr) { // setup timer Clock_Params params; @@ -411,7 +411,7 @@ bool CPU_GPIO_EnableInputPin( break; } } - else if (pinISR == NULL && (pState->isrPtr != NULL)) + else if (pinISR == nullptr && (pState->isrPtr != nullptr)) { // there is no managed handler setup anymore // remove INT handler @@ -419,12 +419,12 @@ bool CPU_GPIO_EnableInputPin( // disable interrupt GPIO_disableInt(pState->pinConfigIndex); // remove callback - GPIO_setCallback(pState->pinConfigIndex, NULL); + GPIO_setCallback(pState->pinConfigIndex, nullptr); // clear parameters & configs - pState->isrPtr = NULL; + pState->isrPtr = nullptr; pState->mode = GPIO_INT_NONE; - pState->param = NULL; + pState->param = nullptr; pState->debounceMs = 0; } @@ -556,7 +556,7 @@ uint32_t CPU_GPIO_GetPinDebounce(GPIO_PIN pinNumber) { gpio_input_state *pState = GetInputState(pinNumber); - _ASSERTE(pState == NULL); + _ASSERTE(pState == nullptr); return pState->debounceMs; } @@ -567,7 +567,7 @@ bool CPU_GPIO_SetPinDebounce(GPIO_PIN pinNumber, uint32_t debounceTimeMillisecon // can only change the debounce in pin state if the pin has already been configured as input // if not, doesn't matter, because the new debounce will be used next time it's required - if (pState != NULL) + if (pState != nullptr) { pState->debounceMs = debounceTimeMilliseconds; } diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp index a3e6693e97..f86afb251e 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.I2c/sys_dev_i2c_native_System_Device_I2c_I2cDevice.cpp @@ -30,10 +30,10 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI { NANOCLR_HEADER(); { - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; I2cBusSpeed busSpeed; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -51,7 +51,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeInit___VOI switch (busIndex) { case 1: - if (I2C1_PAL.i2c == NULL) + if (I2C1_PAL.i2c == nullptr) { palI2c = &I2C1_PAL; } @@ -102,7 +102,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ uint8_t busIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -121,7 +121,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice::NativeDispose___ // no more devices on the bus // deactivates the I2C peripheral I2C_close(I2C1_PAL.i2c); - I2C1_PAL.i2c == NULL; + I2C1_PAL.i2c == nullptr; } break; @@ -141,7 +141,7 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NANOCLR_HEADER(); uint8_t busIndex; - NF_PAL_I2C *palI2c = NULL; + NF_PAL_I2C *palI2c = nullptr; CLR_RT_HeapBlock hbTimeout; CLR_INT64 *timeout; @@ -152,10 +152,10 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: CLR_RT_HeapBlock *writeSpanByte; CLR_RT_HeapBlock *readSpanByte; CLR_RT_HeapBlock *connectionSettings; - CLR_RT_HeapBlock_Array *writeBuffer = NULL; - CLR_RT_HeapBlock_Array *readBuffer = NULL; + CLR_RT_HeapBlock_Array *writeBuffer = nullptr; + CLR_RT_HeapBlock_Array *readBuffer = nullptr; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -180,36 +180,36 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: // dereference the write and read SpanByte from the arguments writeSpanByte = stack.Arg1().Dereference(); - if (writeSpanByte != NULL) + if (writeSpanByte != nullptr) { // get buffer writeBuffer = writeSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array palI2c->i2cTransaction.writeCount = writeBuffer->m_numOfElements; } } - if (writeBuffer == NULL) + if (writeBuffer == nullptr) { // nothing to write, have to zero this palI2c->i2cTransaction.writeCount = 0; } readSpanByte = stack.Arg2().Dereference(); - if (readSpanByte != NULL) + if (readSpanByte != nullptr) { // get buffer readBuffer = readSpanByte[SpanByte::FIELD___array].DereferenceArray(); - if (readBuffer != NULL) + if (readBuffer != nullptr) { // get the size of the buffer by reading the number of elements in the CLR_RT_HeapBlock_Array palI2c->i2cTransaction.readCount = readBuffer->m_numOfElements; } } - if (readBuffer == NULL) + if (readBuffer == nullptr) { // nothing to read, have to zero this palI2c->i2cTransaction.readCount = 0; @@ -223,13 +223,13 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: NANOCLR_CHECK_HRESULT(stack.SetupTimeoutFromTicks(hbTimeout, timeout)); // pin the buffers so DMA can find them where they are supposed to be - if (writeBuffer != NULL) + if (writeBuffer != nullptr) { writeBuffer->Pin(); palI2c->i2cTransaction.writeBuf = (uint8_t *)writeBuffer->GetFirstElement(); } - if (readBuffer != NULL) + if (readBuffer != nullptr) { readBuffer->Pin(); palI2c->i2cTransaction.readBuf = (uint8_t *)readBuffer->GetFirstElement(); @@ -289,12 +289,12 @@ HRESULT Library_sys_dev_i2c_native_System_Device_I2c_I2cDevice:: if (hr != CLR_E_THREAD_WAITING) { // un-pin the buffers - if (writeBuffer != NULL && writeBuffer->IsPinned()) + if (writeBuffer != nullptr && writeBuffer->IsPinned()) { writeBuffer->Unpin(); } - if (readBuffer != NULL && readBuffer->IsPinned()) + if (readBuffer != nullptr && readBuffer->IsPinned()) { readBuffer->Unpin(); } diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp index d27db271d0..fa665360f3 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Pwm/sys_dev_pwm_native_System_Device_Pwm_PwmChannel.cpp @@ -23,7 +23,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetDesire { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -41,7 +41,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeSetActive { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -61,7 +61,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -83,7 +83,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStart___V params.periodUnits = PWM_PERIOD_HZ; params.periodValue = frequency; PwmPins[pinNumber] = PWM_open(pinNumber, ¶ms); - if (PwmPins[pinNumber] == NULL) + if (PwmPins[pinNumber] == nullptr) { // Board_PWM did not open NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); @@ -98,7 +98,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::NativeStop___VO { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -116,7 +116,7 @@ HRESULT Library_sys_dev_pwm_native_System_Device_Pwm_PwmChannel::DisposeNative__ { NANOCLR_HEADER(); { - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); diff --git a/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp b/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp index 1f96c5a17f..41cf41de9b 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.Device.Spi/cpu_spi.cpp @@ -131,7 +131,7 @@ HRESULT CPU_SPI_nWrite_nRead( NANOCLR_HEADER(); { - unsigned char *readDataBuffer = NULL; + unsigned char *readDataBuffer = nullptr; GetSPIConfig(sdev, wrc); @@ -149,7 +149,7 @@ HRESULT CPU_SPI_nWrite_nRead( } // check allocation - if (SPI1_PAL.transactions == NULL) + if (SPI1_PAL.transactions == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } diff --git a/targets/TI_SimpleLink/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp b/targets/TI_SimpleLink/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp index 5b8761e5e6..8440beae44 100644 --- a/targets/TI_SimpleLink/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/System.IO.Ports/sys_io_ser_native_System_IO_Ports_SerialPort.cpp @@ -32,7 +32,7 @@ Task_Struct SerialRxTaskStruct; NF_PAL_UART *GetPalUartFromUartNum(int uart_num) { - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; switch (uart_num) { @@ -55,7 +55,7 @@ void UnitializePalUart(NF_PAL_UART *palUart) if (palUart && palUart->UartDriver) { // destroy task UART task - if (palUart->WorkingTask != NULL) + if (palUart->WorkingTask != nullptr) { Task_destruct(&SerialRxTaskStruct); } @@ -66,10 +66,10 @@ void UnitializePalUart(NF_PAL_UART *palUart) platform_free(palUart->RxBuffer); // null all pointers - palUart->TxBuffer = NULL; - palUart->RxBuffer = NULL; - palUart->UartDriver = NULL; - palUart->WorkingTask = NULL; + palUart->TxBuffer = nullptr; + palUart->RxBuffer = nullptr; + palUart->UartDriver = nullptr; + palUart->WorkingTask = nullptr; palUart->WatchChar = 0; } } @@ -191,7 +191,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___ NF_PAL_UART *palUart; uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -199,7 +199,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::get_BytesToRead___ // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -239,7 +239,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY CLR_RT_HeapBlock hbTimeout; CLR_RT_HeapBlock_Array *dataBuffer; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum; uint8_t *data; @@ -253,7 +253,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY int64_t *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -300,7 +300,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Read___I4__SZARRAY // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -382,7 +382,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum; uint8_t *buffer; @@ -390,7 +390,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR CLR_RT_HeapBlock &top = stack.PushValue(); - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -403,7 +403,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -417,7 +417,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR buffer = (uint8_t *)platform_malloc(bufferLength); // sanity check - if (buffer == NULL) + if (buffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -430,12 +430,12 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadExisting___STR else { // create an empty - NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)NULL)); + NANOCLR_CHECK_HRESULT(CLR_RT_HeapBlock_String::CreateInstance(top, (const char *)nullptr)); } NANOCLR_CLEANUP(); - if (buffer != NULL) + if (buffer != nullptr) { platform_free(buffer); } @@ -448,18 +448,18 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( NANOCLR_HEADER(); CLR_RT_HeapBlock hbTimeout; - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum; - uint8_t *line = NULL; - const char *newLine = NULL; + uint8_t *line = nullptr; + const char *newLine = nullptr; uint32_t newLineLength; int64_t *timeoutTicks; bool eventResult = true; bool newLineFound = false; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -476,7 +476,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -498,8 +498,8 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( // get new line from field newLine = pThis[FIELD___newLine].RecoverString(); - // sanity check for NULL string - if (newLine == NULL) + // sanity check for nullptr string + if (newLine == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -547,7 +547,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::ReadLine___STRING( stack.SetResult_String((const char *)line); // free memory, if needed - if (line != NULL) + if (line != nullptr) { platform_free(line); } @@ -559,7 +559,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum; CLR_RT_HeapBlock_Array *dataBuffer; @@ -575,7 +575,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR int32_t count = 0; int32_t offset = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -588,7 +588,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -645,7 +645,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // Write data to start sending // by design: don't bother checking the return value - UART2_write(palUart->UartDriver, (const void *)data, count, NULL); + UART2_write(palUart->UartDriver, (const void *)data, count, nullptr); // bump custom state so the read value above is pushed only once stack.m_customState = 2; @@ -658,7 +658,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::Write___VOID__SZAR // Write data to ring buffer to start sending // by design: don't bother checking the return value - UART2_write(palUart->UartDriver, (const void *)data, count, NULL); + UART2_write(palUart->UartDriver, (const void *)data, count, nullptr); } } @@ -712,7 +712,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeDispose___VO uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -733,7 +733,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( int32_t bufferSize; uint8_t watchChar; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -749,7 +749,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -757,7 +757,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( #if defined(NF_SERIAL_COMM_TI_USE_UART1) && (NF_SERIAL_COMM_TI_USE_UART1 == TRUE) // assign buffers, if not already done - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { // alloc buffer memory bufferSize = pThis[FIELD___bufferSize].NumericByRef().s4; @@ -765,7 +765,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeInit___VOID( palUart->RxBuffer = (uint8_t *)platform_malloc(bufferSize); // check allocation - if (palUart->RxBuffer == NULL) + if (palUart->RxBuffer == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -797,10 +797,10 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI { NANOCLR_HEADER(); - NF_PAL_UART *palUart = NULL; + NF_PAL_UART *palUart = nullptr; uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -808,7 +808,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -866,25 +866,25 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI UART2_readCancel(palUart->UartDriver); UART2_writeCancel(palUart->UartDriver); - if (palUart->UartDriver != NULL) + if (palUart->UartDriver != nullptr) { // stop UART before changing configuration, just in case UART2_close(palUart->UartDriver); // destroy task UART task, if it's running - if (palUart->WorkingTask != NULL) + if (palUart->WorkingTask != nullptr) { Task_destruct(&SerialRxTaskStruct); // null pointer - palUart->WorkingTask = NULL; + palUart->WorkingTask = nullptr; } } palUart->UartDriver = UART2_open(uartNum, &palUart->UartParams); // check if UART was opened - if (palUart->UartDriver == NULL) + if (palUart->UartDriver == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_OPERATION); } @@ -902,7 +902,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeConfig___VOI taskParams.arg0 = (UArg)palUart->UartNum; // construct task - Task_construct(&SerialRxTaskStruct, (Task_FuncPtr)SerialRxTask, &taskParams, NULL); + Task_construct(&SerialRxTaskStruct, (Task_FuncPtr)SerialRxTask, &taskParams, nullptr); // store pointer to task palUart->WorkingTask = Task_handle(&SerialRxTaskStruct); @@ -917,14 +917,14 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeSetWatchChar NF_PAL_UART *palUart; uint8_t uartNum; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); uartNum = PORT_INDEX_TO_UART_NUM(pThis[FIELD___portIndex].NumericByRef().s4); palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -948,11 +948,11 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ bool eventResult = true; bool isNewAllocation = false; - char *buffer = NULL; + char *buffer = nullptr; uint32_t bufferLength; int32_t length = 0; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -961,7 +961,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ NANOCLR_SET_AND_LEAVE(CLR_E_OBJECT_DISPOSED); } - if (stack.Arg1().RecoverString() == NULL) + if (stack.Arg1().RecoverString() == nullptr) { // text string it's empty so there is noting to do here stack.SetResult_U4(0); @@ -971,7 +971,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ uartNum = PORT_INDEX_TO_UART_NUM(pThis[FIELD___portIndex].NumericByRef().s4); palUart = GetPalUartFromUartNum(uartNum); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } @@ -998,7 +998,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ // set TX ongoing count palUart->TxOngoingCount = bufferLength; - UART2_write(palUart->UartDriver, (const void *)buffer, bufferLength, NULL); + UART2_write(palUart->UartDriver, (const void *)buffer, bufferLength, nullptr); // bump custom state stack.m_customState = 2; @@ -1049,7 +1049,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeWriteString_ } // null pointers and vars - pThis = NULL; + pThis = nullptr; NANOCLR_NOCLEANUP(); } @@ -1063,7 +1063,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte int32_t threshold; uint8_t portIndex; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -1079,7 +1079,7 @@ HRESULT Library_sys_io_ser_native_System_IO_Ports_SerialPort::NativeReceivedByte // Choose the driver for this SerialDevice palUart = GetPalUartFromUartNum(portIndex); - if (palUart == NULL) + if (palUart == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoCRT.cpp b/targets/TI_SimpleLink/_nanoCLR/nanoCRT.cpp index 4297bd9a2a..02457db7ad 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoCRT.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/nanoCRT.cpp @@ -137,7 +137,7 @@ int hal_strcpy_s(char *strDst, size_t sizeInBytes, const char *strSrc) #undef strcpy size_t len; - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -160,7 +160,7 @@ int hal_strncpy_s(char *strDst, size_t sizeInBytes, const char *strSrc, size_t c { NATIVE_PROFILE_PAL_CRT(); #undef strncpy - if (strDst == NULL || strSrc == NULL || sizeInBytes == 0) + if (strDst == nullptr || strSrc == nullptr || sizeInBytes == 0) { _ASSERTE(FALSE); return 1; @@ -194,7 +194,7 @@ int hal_strncmp_s(const char *str1, const char *str2, size_t num) { NATIVE_PROFILE_PAL_CRT(); #undef strncmp - if (str1 == NULL || str2 == NULL) + if (str1 == nullptr || str2 == nullptr) { _ASSERTE(FALSE); return 1; diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Power.cpp b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Power.cpp index 6e2a765df8..99f441268b 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Power.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.Hardware.TI/nf_hardware_ti_native_nanoFramework_Hardware_TI_Power.cpp @@ -39,8 +39,8 @@ HRESULT Library_nf_hardware_ti_native_nanoFramework_Hardware_TI_Power:: int32_t configCount; int32_t index = 0; - PIN_Config *wakeupConfigurations = NULL; - CLR_RT_HeapBlock *pinWakeupConfig = NULL; + PIN_Config *wakeupConfigurations = nullptr; + CLR_RT_HeapBlock *pinWakeupConfig = nullptr; CLR_RT_HeapBlock_Array *configArray = stack.Arg0().DereferenceArray(); FAULT_ON_NULL(configArray); @@ -55,7 +55,7 @@ HRESULT Library_nf_hardware_ti_native_nanoFramework_Hardware_TI_Power:: wakeupConfigurations = (PIN_Config *)platform_malloc((configCount + 1) * sizeof(PIN_Config)); // check allocation - if (wakeupConfigurations != NULL) + if (wakeupConfigurations != nullptr) { // clear memory memset(wakeupConfigurations, 0, configCount * sizeof(PIN_Config)); diff --git a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp index 6248db070e..2abc14d87b 100644 --- a/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/nanoFramework.TI.EasyLink/nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController.cpp @@ -347,7 +347,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController::Ini taskParams.priority = 4; // create task - Task_construct(&easyLinkTask, EasyLinkTask, &taskParams, NULL); + Task_construct(&easyLinkTask, EasyLinkTask, &taskParams, nullptr); // bump custom state stack.m_customState = 2; @@ -403,7 +403,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: CLR_INT64 *timeoutTicks; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -459,8 +459,8 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: NANOCLR_CHECK_HRESULT( g_CLR_RT_ExecutionEngine.WaitEvents(stack.m_owningThread, *timeoutTicks, Event_Radio, eventResult)); - // set to NULL and protect from GC - hbObj.SetObjectReference(NULL); + // set to nullptr and protect from GC + hbObj.SetObjectReference(nullptr); CLR_RT_ProtectFromGC gc1(hbObj); if (eventResult) @@ -533,7 +533,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: // packet it's passed as "out" meaning BYREF // need to store the ReceivedPacket object in its reference - // hbObj it's either NULL or it's a properly formated ReceivedPacket object + // hbObj it's either nullptr or it's a properly formated ReceivedPacket object NANOCLR_CHECK_HRESULT(hbObj.StoreToReference(stack.Arg1(), 0)); } @@ -623,7 +623,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController:: uint32_t absTime; bool eventResult = true; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -758,17 +758,17 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController::Upd { NANOCLR_HEADER(); - uint8_t *addressTable = NULL; - uint8_t *addressTableCursor = NULL; + uint8_t *addressTable = nullptr; + uint8_t *addressTableCursor = nullptr; uint8_t addressSize; // need to initialize these because they are passed by ref int addressCount = 0, capacity = 0; - CLR_RT_HeapBlock_Array *addressList = NULL; + CLR_RT_HeapBlock_Array *addressList = nullptr; CLR_RT_HeapBlock_Array *address; CLR_RT_HeapBlock *addressField; - // get a pointer to the managed object instance and check that it's not NULL + // get a pointer to the managed object instance and check that it's not nullptr CLR_RT_HeapBlock *pThis = stack.This(); FAULT_ON_NULL(pThis); @@ -788,7 +788,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController::Upd addressTable = (uint8_t *)platform_malloc(addressCount * addressSize); // sanity check - if (addressTable == NULL) + if (addressTable == nullptr) { // mem allocation failed NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); @@ -802,7 +802,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController::Upd for (int i = 0; i < addressCount; i++) { address = ((CLR_RT_HeapBlock_Array *)addressList->GetElement(i))->DereferenceArray(); - if (address != NULL) + if (address != nullptr) { memcpy(addressTableCursor, address->GetFirstElement(), addressSize); @@ -814,7 +814,7 @@ HRESULT Library_nf_ti_easylink_nanoFramework_TI_EasyLink_EasyLinkController::Upd EasyLink_enableRxAddrFilter(addressTable, addressCount, addressSize); } - if (addressTable != NULL) + if (addressTable != nullptr) { platform_free(addressTable); } diff --git a/targets/TI_SimpleLink/_nanoCLR/targetHAL.cpp b/targets/TI_SimpleLink/_nanoCLR/targetHAL.cpp index 1e93be609a..4466df793e 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetHAL.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/targetHAL.cpp @@ -30,13 +30,13 @@ // Reboot handlers clean up on reboot // static ON_SOFT_REBOOT_HANDLER s_rebootHandlers[16] = - {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; + {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}; void HAL_AddSoftRebootHandler(ON_SOFT_REBOOT_HANDLER handler) { for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] == NULL) + if (s_rebootHandlers[i] == nullptr) { s_rebootHandlers[i] = handler; return; @@ -77,7 +77,7 @@ void nanoHAL_Initialize() BlockStorageList_InitializeDevices(); // clear managed heap region - unsigned char *heapStart = NULL; + unsigned char *heapStart = nullptr; unsigned int heapSize = 0; ::HeapLocation(heapStart, heapSize); @@ -118,7 +118,7 @@ void nanoHAL_Uninitialize(bool isPoweringDown) // check for s_rebootHandlers for (unsigned int i = 0; i < ARRAYSIZE(s_rebootHandlers); i++) { - if (s_rebootHandlers[i] != NULL) + if (s_rebootHandlers[i] != nullptr) { s_rebootHandlers[i](); } diff --git a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp index d0affd12df..0260e10059 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp @@ -24,7 +24,7 @@ bool Events_Initialize_Platform() Clock_Params params; Clock_Params_init(¶ms); - params.arg = NULL; + params.arg = nullptr; params.startFlag = FALSE; params.period = 0; @@ -56,7 +56,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) // we assume only 1 can be active, abort previous just in case Clock_stop(boolEventsTimer); - if (timerCompleteFlag != NULL) + if (timerCompleteFlag != nullptr) { // As only one timer running at a time we will just save it saveTimerCompleteFlag = timerCompleteFlag; diff --git a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp index 2e6ff7c2ba..2c24554030 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp @@ -23,7 +23,7 @@ HRESULT Time_Initialize() Clock_Params params; Clock_Params_init(¶ms); - params.arg = NULL; + params.arg = nullptr; params.startFlag = FALSE; params.period = 0; diff --git a/targets/netcore/littlefs/littlefs_FS_Driver.cpp b/targets/netcore/littlefs/littlefs_FS_Driver.cpp index 768f18f7b5..af90ddb47c 100644 --- a/targets/netcore/littlefs/littlefs_FS_Driver.cpp +++ b/targets/netcore/littlefs/littlefs_FS_Driver.cpp @@ -21,7 +21,7 @@ STREAM_DRIVER_DETAILS *LITTLEFS_FS_Driver::DriverDetails(const VOLUME_ID *volume { (void)volume; - static STREAM_DRIVER_DETAILS driverDetail = {SYSTEM_BUFFERED_IO, NULL, NULL, 0, 0, TRUE, TRUE, TRUE, 0, 0}; + static STREAM_DRIVER_DETAILS driverDetail = {SYSTEM_BUFFERED_IO, nullptr, nullptr, 0, 0, TRUE, TRUE, TRUE, 0, 0}; return &driverDetail; } @@ -58,8 +58,8 @@ HRESULT LITTLEFS_FS_Driver::Format(const VOLUME_ID *volume, const char *volumeLa (void)volumeLabel; (void)parameters; - lfs_t *fsDrive = NULL; - uint8_t *index = NULL; + lfs_t *fsDrive = nullptr; + uint8_t *index = nullptr; // get littlefs instance fsDrive = hal_lfs_get_fs_from_index(volume->volumeId); @@ -142,7 +142,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void int32_t result; #endif - LITTLEFS_FileHandle *fileHandle = NULL; + LITTLEFS_FileHandle *fileHandle = nullptr; lfs_info info; int32_t flags; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -151,7 +151,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void // allocate file handle fileHandle = (LITTLEFS_FileHandle *)platform_malloc(sizeof(LITTLEFS_FileHandle)); - if (fileHandle == NULL) + if (fileHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -193,7 +193,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void fileHandle->nanoAttributes = FileAttributes_Normal; fileHandle->attr = {NANO_LITTLEFS_ATTRIBUTE, &fileHandle->nanoAttributes, NANO_LITTLEFS_ATTRIBUTE_SIZE}; fileHandle->fileConfig = { - .buffer = NULL, + .buffer = nullptr, .attrs = &fileHandle->attr, .attr_count = 1, }; @@ -233,7 +233,7 @@ HRESULT LITTLEFS_FS_Driver::Open(const VOLUME_ID *volume, const char *path, void NANOCLR_CLEANUP(); - if (fileHandle != NULL) + if (fileHandle != nullptr) { platform_free(fileHandle); } @@ -508,12 +508,12 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_HEADER(); char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; - LITTLEFS_FindFileHandle *findHandle = NULL; + LITTLEFS_FindFileHandle *findHandle = nullptr; // allocate file handle findHandle = (LITTLEFS_FindFileHandle *)platform_malloc(sizeof(LITTLEFS_FindFileHandle)); - if (findHandle == NULL) + if (findHandle == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -552,7 +552,7 @@ HRESULT LITTLEFS_FS_Driver::FindOpen(const VOLUME_ID *volume, const char *path, NANOCLR_CLEANUP(); - if (findHandle != NULL) + if (findHandle != nullptr) { platform_free(findHandle); } @@ -613,7 +613,7 @@ HRESULT LITTLEFS_FS_Driver::FindNext(void *handle, FS_FILEINFO *fi, bool *fileFo fi->FileName = (char *)platform_malloc(fi->FileNameSize + 1); // sanity check for successfull malloc - if (fi->FileName == NULL) + if (fi->FileName == nullptr) { NANOCLR_SET_AND_LEAVE(CLR_E_OUT_OF_MEMORY); } @@ -644,7 +644,7 @@ HRESULT LITTLEFS_FS_Driver::FindClose(void *handle) { findHandle = (LITTLEFS_FindFileHandle *)handle; - if (findHandle->fs != NULL) + if (findHandle->fs != nullptr) { lfs_dir_close(findHandle->fs, &findHandle->dir); @@ -657,7 +657,7 @@ HRESULT LITTLEFS_FS_Driver::FindClose(void *handle) HRESULT LITTLEFS_FS_Driver::GetFileInfo(const VOLUME_ID *volume, const char *path, FS_FILEINFO *fileInfo, bool *found) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -715,7 +715,7 @@ HRESULT LITTLEFS_FS_Driver::GetAttributes(const VOLUME_ID *volume, const char *p { NANOCLR_HEADER(); - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; int32_t result; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -804,7 +804,7 @@ HRESULT LITTLEFS_FS_Driver::GetAttributes(const VOLUME_ID *volume, const char *p HRESULT LITTLEFS_FS_Driver::SetAttributes(const VOLUME_ID *volume, const char *path, uint32_t attributes) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; uint32_t currentAttributes; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; @@ -861,7 +861,7 @@ HRESULT LITTLEFS_FS_Driver::SetAttributes(const VOLUME_ID *volume, const char *p HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char *path) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; int32_t result = LFS_ERR_OK; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; char tempPath[FS_MAX_DIRECTORY_LENGTH + 1]; @@ -900,7 +900,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char // add back the '/' separator strcat(tempPath, "/"); - segment = strtok(NULL, "/"); + segment = strtok(nullptr, "/"); } // remove trailing '/' @@ -945,7 +945,7 @@ HRESULT LITTLEFS_FS_Driver::CreateDirectory(const VOLUME_ID *volume, const char HRESULT LITTLEFS_FS_Driver::Move(const VOLUME_ID *volume, const char *oldPath, const char *newPath) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; char normalizedNewPath[FS_MAX_DIRECTORY_LENGTH]; char normalizedOldPath[FS_MAX_DIRECTORY_LENGTH]; int32_t result = LFS_ERR_OK; @@ -989,7 +989,7 @@ HRESULT LITTLEFS_FS_Driver::Move(const VOLUME_ID *volume, const char *oldPath, c HRESULT LITTLEFS_FS_Driver::Delete(const VOLUME_ID *volume, const char *path, bool recursive) { - lfs_t *fsDrive = NULL; + lfs_t *fsDrive = nullptr; lfs_info info; char normalizedPath[FS_MAX_DIRECTORY_LENGTH]; int32_t result; diff --git a/targets/netcore/nanoFramework.nanoCLR/target_littlefs.cpp b/targets/netcore/nanoFramework.nanoCLR/target_littlefs.cpp index 009b6ff4c8..68a4925afd 100644 --- a/targets/netcore/nanoFramework.nanoCLR/target_littlefs.cpp +++ b/targets/netcore/nanoFramework.nanoCLR/target_littlefs.cpp @@ -7,7 +7,7 @@ #include #include -CLR_RT_Buffer *storageLfs0 = NULL; +CLR_RT_Buffer *storageLfs0 = nullptr; // target specific implementation of hal_lfs_erase int32_t hal_lfs_erase_0(const struct lfs_config *c, lfs_block_t block) From 1caf18611b4428111661b1977a7d3c6c08a4916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 16:25:38 +0100 Subject: [PATCH 152/168] Fix case in struct element --- src/CLR/Core/CLR_RT_StackFrame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CLR/Core/CLR_RT_StackFrame.cpp b/src/CLR/Core/CLR_RT_StackFrame.cpp index c4e047ae2d..c2691bc1dc 100644 --- a/src/CLR/Core/CLR_RT_StackFrame.cpp +++ b/src/CLR/Core/CLR_RT_StackFrame.cpp @@ -38,7 +38,7 @@ HRESULT CLR_RT_StackFrame::Push(CLR_RT_Thread *th, const CLR_RT_MethodDef_Instan #ifndef NANOCLR_NO_IL_INLINE sizeEvalStack = md->lengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod + 1; #else - sizeEvalStack = md->LengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod; + sizeEvalStack = md->lengthEvalStack + CLR_RT_StackFrame::c_OverheadForNewObjOrInteropMethod; #endif //--// From 795d4a5fd676322892fb00820acc32272b880ed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Wed, 9 Apr 2025 18:20:01 +0100 Subject: [PATCH 153/168] Revert wrong NULL replacement --- .../System.Device.I2c/nano_sl_i2cspm.c | 2 +- .../_common/Target_System_IO_FileSystem.c | 2 +- .../_common/targetHAL_ConfigStorageLittlefs.c | 36 +++++++++---------- .../_nanoCLR/targetPAL_Events.cpp | 4 +-- .../TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c index 87541cbdcd..65a575de4d 100644 --- a/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c +++ b/targets/AzureRTOS/SiliconLabs/_nanoCLR/System.Device.I2c/nano_sl_i2cspm.c @@ -32,7 +32,7 @@ void I2CSPM_Init(I2CSPM_Init_TypeDef *init) CMU_Clock_TypeDef i2cClock; I2C_Init_TypeDef i2cInit; - EFM_ASSERT(init != nullptr); + EFM_ASSERT(init != NULL); #if defined(_CMU_HFPERCLKEN0_MASK) CMU_ClockEnable(cmuClock_HFPER, true); diff --git a/targets/ESP32/_common/Target_System_IO_FileSystem.c b/targets/ESP32/_common/Target_System_IO_FileSystem.c index d08cbf8702..baa128af58 100644 --- a/targets/ESP32/_common/Target_System_IO_FileSystem.c +++ b/targets/ESP32/_common/Target_System_IO_FileSystem.c @@ -61,7 +61,7 @@ bool Storage_UnMountSDCard(int driveIndex) return false; } - card = nullptr; + card = NULL; return true; } diff --git a/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c b/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c index 0e3a79a814..df4579cae5 100644 --- a/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c +++ b/targets/ESP32/_common/targetHAL_ConfigStorageLittlefs.c @@ -160,14 +160,14 @@ FILE *ConfigStorage_OpenFile( // Open SPIFFS config storage FILE *file = fopen(fileName, isWrite ? (isAppend ? "a" : "w") : "r"); - if (file != nullptr) + if (file != NULL) { return file; } ESP_LOGE(TAG, "NANO: Failed to open file (%s)", fileName); - return nullptr; + return NULL; } // @@ -375,9 +375,9 @@ HAL_CONFIGURATION_NETWORK *ConfigStorage_FindNetworkConfigurationBlocks() HAL_CONFIGURATION_NETWORK *networkConfigs = (HAL_CONFIGURATION_NETWORK *)platform_malloc(allocationSize); // check allocation - if (networkConfigs == nullptr) + if (networkConfigs == NULL) { - return nullptr; + return NULL; } // clear memory @@ -421,9 +421,9 @@ HAL_CONFIGURATION_NETWORK_WIRELESS80211 *ConfigStorage_FindNetworkWireless80211C (HAL_CONFIGURATION_NETWORK_WIRELESS80211 *)platform_malloc(allocationSize); // check allocation - if (networkWirelessConfigs == nullptr) + if (networkWirelessConfigs == NULL) { - return nullptr; + return NULL; } // clear memory @@ -467,9 +467,9 @@ HAL_CONFIGURATION_NETWORK_WIRELESSAP *ConfigStorage_FindNetworkWirelessAPConfigu (HAL_CONFIGURATION_NETWORK_WIRELESSAP *)platform_malloc(allocationSize); // check allocation - if (networkWirelessAPConfigs == nullptr) + if (networkWirelessAPConfigs == NULL) { - return nullptr; + return NULL; } // clear memory @@ -517,9 +517,9 @@ HAL_CONFIGURATION_X509_CERTIFICATE *ConfigStorage_FindX509CertificateConfigurati (HAL_CONFIGURATION_X509_CERTIFICATE *)platform_malloc(allocationSize); // check allocation - if (certificateStore == nullptr) + if (certificateStore == NULL) { - return nullptr; + return NULL; } // clear memory @@ -535,9 +535,9 @@ HAL_CONFIGURATION_X509_CERTIFICATE *ConfigStorage_FindX509CertificateConfigurati (HAL_Configuration_X509CaRootBundle *)platform_malloc(sizeof(HAL_Configuration_X509CaRootBundle)); // check allocation - if (certificate == nullptr) + if (certificate == NULL) { - return nullptr; + return NULL; } // clear memory @@ -595,9 +595,9 @@ HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *IRAM_ATTR ConfigStorage_FindX509Devic (HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *)platform_malloc(allocationSize); // check allocation - if (deviceCertificate == nullptr) + if (deviceCertificate == NULL) { - return nullptr; + return NULL; } // clear memory @@ -613,9 +613,9 @@ HAL_CONFIGURATION_X509_DEVICE_CERTIFICATE *IRAM_ATTR ConfigStorage_FindX509Devic (HAL_Configuration_X509DeviceCertificate *)platform_malloc(sizeof(HAL_Configuration_X509DeviceCertificate)); // check allocation - if (certificate == nullptr) + if (certificate == NULL) { - return nullptr; + return NULL; } // clear memory @@ -652,7 +652,7 @@ bool ConfigurationManager_GetConfigurationBlockFromStorage( handle = ConfigStorage_OpenFile(configuration, configurationIndex, false, false); - if (handle != nullptr) + if (handle != NULL) { readSize = ConfigStorage_ReadFile(handle, configurationBlock, maxBlockSize); @@ -675,7 +675,7 @@ int32_t ConfigurationManager_GetConfigurationBlockSize( handle = ConfigStorage_OpenFile(configuration, configurationIndex, false, false); - if (handle != nullptr) + if (handle != NULL) { readSize = ConfigStorage_FileSize(handle); diff --git a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp index 0260e10059..d0affd12df 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Events.cpp @@ -24,7 +24,7 @@ bool Events_Initialize_Platform() Clock_Params params; Clock_Params_init(¶ms); - params.arg = nullptr; + params.arg = NULL; params.startFlag = FALSE; params.period = 0; @@ -56,7 +56,7 @@ void Events_SetBoolTimer(bool *timerCompleteFlag, uint32_t millisecondsFromNow) // we assume only 1 can be active, abort previous just in case Clock_stop(boolEventsTimer); - if (timerCompleteFlag != nullptr) + if (timerCompleteFlag != NULL) { // As only one timer running at a time we will just save it saveTimerCompleteFlag = timerCompleteFlag; diff --git a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp index 2c24554030..2e6ff7c2ba 100644 --- a/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp +++ b/targets/TI_SimpleLink/_nanoCLR/targetPAL_Time.cpp @@ -23,7 +23,7 @@ HRESULT Time_Initialize() Clock_Params params; Clock_Params_init(¶ms); - params.arg = nullptr; + params.arg = NULL; params.startFlag = FALSE; params.period = 0; From c1132152bf7773f3a461868831fe6b1e24b3d3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 13:02:14 +0100 Subject: [PATCH 154/168] Work CI-CD - Add template and steps to use specific MDP for mscorlib build. --- .../check-mdp-for-build.yml | 75 +++++++++++++++++++ azure-pipelines.yml | 33 +++++++- 2 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 azure-pipelines-templates/check-mdp-for-build.yml diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml new file mode 100644 index 0000000000..0adb7e9899 --- /dev/null +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -0,0 +1,75 @@ +# Copyright (c) .NET Foundation and Contributors +# See LICENSE file in the project root for full license information. + +steps: + - task: PowerShell@2 + displayName: Check MDP for build + condition: ne(variables['System.PullRequest.PullRequestId'], '') + inputs: + failOnStderr: false + targetType: "inline" + script: | + + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + + # find PR + "Getting PR#$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline + $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json + + if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") + { + '##[command] OK' | Write-Host -ForegroundColor Green + } + + # grab PR commit message + $prCommitMessage = $($pr.body) + + # look for test prompt in PR commit message + # pattern is "[build with MDP buildId NNN]" + + if($prCommitMessage -match "\[build with MDP buildId (\d+)\]") + { + $buildId = $matches[1] + "AZDO build ID found: $buildId" | Write-Host -ForegroundColor White + + echo "##vso[task.setvariable variable=MDP_BUILDID]$buildId" + } + else + { + "No build ID found" | Write-Host -ForegroundColor Red + } + env: + GITHUB_TOKEN: $(GitHubToken) + + - task: DownloadPipelineArtifact@2 + condition: >- + and( + eq(variables['DownloadMDP'], true), + ne(variables['MDP_BUILDID'], '') + ) + displayName: Download MDP + inputs: + buildType: specific + project: 'metadata-processor' + definition: '43' + buildVersionToDownload: specific + allowFailedBuilds: true + pipelineId: $(MDP_BUILDID) + artifactName: 'deployables' + targetPath: '$(Pipeline.Workspace)/mdp' + itemPattern: '*.MsBuildTask.dll' + + - task: PowerShell@2 + condition: >- + and( + succeeded(), + eq(variables['DownloadNanoClrPreview'], true), + ne(variables['MDP_BUILDID'], '') + ) + displayName: Set MDP path + inputs: + targetType: 'inline' + script: | + Write-Host "##vso[task.setvariable variable=NF_MDP_MSBUILDTASK_PATH]$(Pipeline.Workspace)/mdp/nanoFramework.Tools.MetadataProcessor.MsBuildTask.dll" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 85e7217114..92577b892c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -92,6 +92,10 @@ jobs: { Write-Host "##[command] **This is a PR build**" + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/commits/$(Build.SourceVersion)" -ContentType "application/json" -Method GET if( ($commit.commit.author.name -eq "nfbot") -and ($commit.commit.message -like "*[version update]*") ) @@ -104,12 +108,34 @@ jobs: echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" } + # find PR + "Getting PR#$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline + $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json + + if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") + { + '##[command] OK' | Write-Host -ForegroundColor Green + } + + # grab PR commit message + $prCommitMessage = $($pr.body) + + # debug output + # echo "=====`r`n$($prCommitMessage)`r`n=====" + # check if Unit Tests for mscorlib should be run - if(($commit.commit.message -like "*[run mscorlib tests]*") -or ($commit.commit.message -match "Tested against nanoframework/CoreLibrary#(\d+)")) + if(($prCommitMessage -like "*[run mscorlib tests]*") -or ($prCommitMessage -match "Tested against nanoframework/CoreLibrary#(\d+)")) { - Write-Host "##[command] **mscorlib tests are to be runned**" + Write-Host "##[command] >> mscorlib tests are to be runned" echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]true" } + + # check if should use specific MDP for mscorlib + if($prCommitMessage -match "\[build with MDP buildId (\d+)\]") + { + Write-Host "##[command] >> Using specific MDP for mscorlib build" + echo "##vso[task.setvariable variable=USE_SPECIFIC_MDP;isOutput=true]true" + } } else { @@ -1241,6 +1267,7 @@ jobs: dependsOn: - Build_nanoCLR_CLI + - Check_Build_Options pool: vmImage: "windows-latest" @@ -1250,6 +1277,7 @@ jobs: solution: "nanoFramework.CoreLibrary.sln" buildPlatform: "Any CPU" buildConfiguration: "Release" + DownloadMDP: $[ dependencies.Check_Build_Options.outputs['BuildOptions.USE_SPECIFIC_MDP'] ] steps: - checkout: self @@ -1260,6 +1288,7 @@ jobs: persistCredentials: true - template: azure-pipelines-templates/check-mscorlib-to-test.yml + - template: azure-pipelines-templates/check-mdp-for-build.yml # Download nanoclr from build artifacts - task: DownloadBuildArtifacts@1 From c20d9b04910d2ed4074e84924a0ae08485caf4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 17:56:01 +0100 Subject: [PATCH 155/168] Fix wrong declarations --- src/CLR/Core/Serialization/BinaryFormatter_stub.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp index 066a97d1ae..642ec7b6ce 100644 --- a/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp +++ b/src/CLR/Core/Serialization/BinaryFormatter_stub.cpp @@ -287,16 +287,10 @@ __nfweak void CLR_RT_BinaryFormatter::PrepareForGC(void *data) NATIVE_PROFILE_CLR_SERIALIZATION(); } -__nfweak HRESULT CLR_RT_BinaryFormatter::Serialize( - CLR_RT_HeapBlock &refData, - CLR_RT_HeapBlock &object, - CLR_RT_HeapBlock *cls, - CLR_UINT32 flags) +__nfweak HRESULT CLR_RT_BinaryFormatter::Serialize(CLR_RT_HeapBlock &refData, CLR_RT_HeapBlock &object) { (void)refData; (void)object; - (void)cls; - (void)flags; NATIVE_PROFILE_CLR_SERIALIZATION(); NANOCLR_FEATURE_STUB_RETURN(); @@ -305,13 +299,11 @@ __nfweak HRESULT CLR_RT_BinaryFormatter::Serialize( __nfweak HRESULT CLR_RT_BinaryFormatter::Deserialize( CLR_RT_HeapBlock &refData, CLR_RT_HeapBlock &object, - CLR_RT_HeapBlock *cls, CLR_UINT32 *unknownType, CLR_UINT32 flags) { (void)refData; (void)object; - (void)cls; (void)unknownType; (void)flags; From ee6dee314f1b1fd6bddbde03ac65f7d30b334f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 17:56:14 +0100 Subject: [PATCH 156/168] Fix wrong struct element names --- src/CLR/Debugger/Debugger.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CLR/Debugger/Debugger.cpp b/src/CLR/Debugger/Debugger.cpp index 01ce9ba32c..b36fa18432 100644 --- a/src/CLR/Debugger/Debugger.cpp +++ b/src/CLR/Debugger/Debugger.cpp @@ -2727,7 +2727,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) num = isInline ? md.target->argumentsCount : md.target->argumentsCount; #else array = call->m_arguments; - num = call->m_call.m_target->ArgumentsCount; + num = call->m_call.target->argumentsCount; #endif break; @@ -2737,7 +2737,7 @@ bool CLR_DBG_Debugger::Debugging_Value_GetStack(WP_Message *msg) num = isInline ? md.target->localsCount : md.target->localsCount; #else array = call->m_locals; - num = call->m_call.m_target->LocalsCount; + num = call->m_call.target->localsCount; #endif break; From cd8d7fcb7d5bdfe4c839a83d10f246357529a98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 17:58:52 +0100 Subject: [PATCH 157/168] Work CI-CD - Disabled build for ST_NUCLEO64_F091RC. --- azure-pipelines-nightly.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/azure-pipelines-nightly.yml b/azure-pipelines-nightly.yml index 27574b31cd..0769a3713e 100644 --- a/azure-pipelines-nightly.yml +++ b/azure-pipelines-nightly.yml @@ -283,13 +283,13 @@ jobs: NeedsSRECORD: false CMakePreset: ORGPAL_PALX - ST_NUCLEO64_F091RC: - TargetBoard: ST_NUCLEO64_F091RC - TargetSeries: "stm32f0xx" - BuildOptions: - NeedsDFU: false - NeedsSRECORD: true - CMakePreset: ST_NUCLEO64_F091RC + # ST_NUCLEO64_F091RC: + # TargetBoard: ST_NUCLEO64_F091RC + # TargetSeries: "stm32f0xx" + # BuildOptions: + # NeedsDFU: false + # NeedsSRECORD: true + # CMakePreset: ST_NUCLEO64_F091RC variables: DOTNET_NOLOGO: true From 67932adb85b3e0eafb7c2e2f7a5e2b613f133988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 18:03:44 +0100 Subject: [PATCH 158/168] Work CI-CD - Fix condition to set MDP path. --- azure-pipelines-templates/check-mdp-for-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml index 0adb7e9899..41df5ecf55 100644 --- a/azure-pipelines-templates/check-mdp-for-build.yml +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -65,7 +65,7 @@ steps: condition: >- and( succeeded(), - eq(variables['DownloadNanoClrPreview'], true), + eq(variables['DownloadMDP'], true), ne(variables['MDP_BUILDID'], '') ) displayName: Set MDP path From edca5fef3e1bc6bfded15e7fc3eb806fb264687d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 18:41:07 +0100 Subject: [PATCH 159/168] Fix MDP path --- azure-pipelines-templates/check-mdp-for-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml index 41df5ecf55..425cc8e516 100644 --- a/azure-pipelines-templates/check-mdp-for-build.yml +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -72,4 +72,4 @@ steps: inputs: targetType: 'inline' script: | - Write-Host "##vso[task.setvariable variable=NF_MDP_MSBUILDTASK_PATH]$(Pipeline.Workspace)/mdp/nanoFramework.Tools.MetadataProcessor.MsBuildTask.dll" + Write-Host "##vso[task.setvariable variable=NF_MDP_MSBUILDTASK_PATH]$(Pipeline.Workspace)\mdp" From 29f16f6c31cccc8665e26fa402c729bfd3964688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 19:48:30 +0100 Subject: [PATCH 160/168] Replace setting MDP path with copy over - Required because VS tries to load MDP from the directory and then all the other DLLs are missing. - Should be reviewed upstream in order to pack all the directory. --- .../check-mdp-for-build.yml | 22 +++++++++++++++++-- azure-pipelines.yml | 11 +++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml index 425cc8e516..047339ffec 100644 --- a/azure-pipelines-templates/check-mdp-for-build.yml +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -68,8 +68,26 @@ steps: eq(variables['DownloadMDP'], true), ne(variables['MDP_BUILDID'], '') ) - displayName: Set MDP path + displayName: Copy MDP to build tool inputs: targetType: 'inline' script: | - Write-Host "##vso[task.setvariable variable=NF_MDP_MSBUILDTASK_PATH]$(Pipeline.Workspace)\mdp" + # Find which VS version is installed + $VsWherePath = "${env:PROGRAMFILES(X86)}\Microsoft Visual Studio\Installer\vswhere.exe" + + Write-Output "VsWherePath is: $VsWherePath" + + $VsInstance = $(&$VSWherePath -latest -property displayName) + + Write-Output "Latest VS is: $VsInstance" + + # copy MDP file to msbuild location + $VsPath = $(&$VsWherePath -latest -property installationPath) + + Write-Debug "Copy MDP DLL to msbuild location" + + $msbuildPath = $VsPath + "\MSBuild" + + $extensionPath = $msbuildPath + "\nanoFramework\v1.0" + + Copy-Item -Path "$env:Pipeline_Workspace\mdp" -Destination $msbuildPath -Recurse diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 92577b892c..5aadeb22f3 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -90,7 +90,7 @@ jobs: # get commit details, if this is a PR if($env:System_PullRequest_PullRequestId -ne $null) { - Write-Host "##[command] **This is a PR build**" + Write-Host "**This is a PR build**" # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" # 'encoded token' is the Base64 of the string "nfbot:personal-token" @@ -100,7 +100,7 @@ jobs: if( ($commit.commit.author.name -eq "nfbot") -and ($commit.commit.message -like "*[version update]*") ) { - Write-Host "##[command] **version update commit, skipping build**" + Write-Host "**version update commit, skipping build**" echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" } else @@ -109,12 +109,12 @@ jobs: } # find PR - "Getting PR#$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline + "Getting PR #$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") { - '##[command] OK' | Write-Host -ForegroundColor Green + 'OK' | Write-Host -ForegroundColor Green } # grab PR commit message @@ -1288,7 +1288,6 @@ jobs: persistCredentials: true - template: azure-pipelines-templates/check-mscorlib-to-test.yml - - template: azure-pipelines-templates/check-mdp-for-build.yml # Download nanoclr from build artifacts - task: DownloadBuildArtifacts@1 @@ -1305,6 +1304,8 @@ jobs: inputs: GitHubToken: $(GitHubToken) + - template: azure-pipelines-templates/check-mdp-for-build.yml + - template: azure-pipelines-templates/install-nuget.yml@templates - task: Cache@2 From 74392c7ac4837a878fe20cfcfc4a6ca610c84fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 10 Apr 2025 22:53:03 +0100 Subject: [PATCH 161/168] Fix formating and typo --- azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5aadeb22f3..01126a4278 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -82,7 +82,7 @@ jobs: { # this is a release prep so NO build echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" - + Write-Host "##[command] Release preparation, skipping build." } else @@ -101,11 +101,11 @@ jobs: if( ($commit.commit.author.name -eq "nfbot") -and ($commit.commit.message -like "*[version update]*") ) { Write-Host "**version update commit, skipping build**" - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" } else { - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" } # find PR @@ -126,7 +126,7 @@ jobs: # check if Unit Tests for mscorlib should be run if(($prCommitMessage -like "*[run mscorlib tests]*") -or ($prCommitMessage -match "Tested against nanoframework/CoreLibrary#(\d+)")) { - Write-Host "##[command] >> mscorlib tests are to be runned" + Write-Host "##[command] >> mscorlib tests are to be run" echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]true" } From 86550782b9c9bba69e504373044639d5329cc2a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 14 Apr 2025 17:56:10 +0100 Subject: [PATCH 162/168] Add debug output --- azure-pipelines-templates/check-mdp-for-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml index 047339ffec..585a352bb8 100644 --- a/azure-pipelines-templates/check-mdp-for-build.yml +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -90,4 +90,4 @@ steps: $extensionPath = $msbuildPath + "\nanoFramework\v1.0" - Copy-Item -Path "$env:Pipeline_Workspace\mdp" -Destination $msbuildPath -Recurse + Copy-Item -Path "$env:Pipeline_Workspace\mdp" -Destination $msbuildPath -Force -Verbose From b18de9d7e3c2e9bf1e0e718fec38f5e45f7fbd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Mon, 14 Apr 2025 19:12:49 +0100 Subject: [PATCH 163/168] Fix copy script --- azure-pipelines-templates/check-mdp-for-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines-templates/check-mdp-for-build.yml b/azure-pipelines-templates/check-mdp-for-build.yml index 585a352bb8..d7219214e5 100644 --- a/azure-pipelines-templates/check-mdp-for-build.yml +++ b/azure-pipelines-templates/check-mdp-for-build.yml @@ -77,12 +77,12 @@ steps: Write-Output "VsWherePath is: $VsWherePath" - $VsInstance = $(&$VSWherePath -latest -property displayName) + $VsInstance = & $VsWherePath -latest -property displayName Write-Output "Latest VS is: $VsInstance" # copy MDP file to msbuild location - $VsPath = $(&$VsWherePath -latest -property installationPath) + $VsPath = & $VSWherePath -latest -property installationPath Write-Debug "Copy MDP DLL to msbuild location" @@ -90,4 +90,4 @@ steps: $extensionPath = $msbuildPath + "\nanoFramework\v1.0" - Copy-Item -Path "$env:Pipeline_Workspace\mdp" -Destination $msbuildPath -Force -Verbose + Copy-Item -Path "$env:Pipeline_Workspace\mdp\*" -Destination $extensionPath -Force -Verbose From 30142269d4af86ac6c4c3a91ab587a88ad4fed70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 17 Apr 2025 16:35:22 +0100 Subject: [PATCH 164/168] Bump version variable counter --- azure-pipelines-nightly.yml | 8 ++++---- azure-pipelines.yml | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/azure-pipelines-nightly.yml b/azure-pipelines-nightly.yml index 0769a3713e..16a0be3807 100644 --- a/azure-pipelines-nightly.yml +++ b/azure-pipelines-nightly.yml @@ -294,7 +294,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('STM32_1_12_4_versioncounter', 0)] + REVISION: $[counter('STM32_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "stm32" @@ -582,7 +582,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('ESP32_1_12_4_versioncounter', 0)] + REVISION: $[counter('ESP32_2_0_0_versioncounter', 0)] IDF_PATH: "D:/a/1/s/esp-idf" PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip TargetPlatform: "esp32" @@ -665,7 +665,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('TI_1_12_4_versioncounter', 0)] + REVISION: $[counter('TI_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "ti_simplelink" @@ -717,7 +717,7 @@ jobs: variables: # creates a counter and assigns it to the revision variable - REVISION: $[counter('AZURERTOS_1_12_4_versioncounter', 0)] + REVISION: $[counter('AZURERTOS_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "efm32" diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 01126a4278..e62506257c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -439,7 +439,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('STM32_1_12_4_versioncounter', 0)] + REVISION: $[counter('STM32_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "stm32" @@ -554,7 +554,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('ESP32_1_12_4_versioncounter', 0)] + REVISION: $[counter('ESP32_2_0_0_versioncounter', 0)] IDF_PATH: "D:/a/1/s/esp-idf" PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip TargetPlatform: "esp32" @@ -642,7 +642,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('NXP_1_12_4_versioncounter', 0)] + REVISION: $[counter('NXP_2_0_0_versioncounter', 0)] GIT_LFS_SKIP_SMUDGE: 1 TargetPlatform: "freertos" @@ -721,7 +721,7 @@ jobs: variables: DOTNET_NOLOGO: true # creates a counter and assigns it to the revision variable - REVISION: $[counter('TI_1_12_4_versioncounter', 0)] + REVISION: $[counter('TI_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "ti_simplelink" @@ -793,7 +793,7 @@ jobs: variables: # creates a counter and assigns it to the revision variable - REVISION: $[counter('AZURERTOS_1_12_4_versioncounter', 0)] + REVISION: $[counter('AZURERTOS_2_0_0_versioncounter', 0)] HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] TargetPlatform: "efm32" @@ -845,7 +845,7 @@ jobs: value: true # creates a counter and assigns it to the revision variable - name: REVISION - value: $[counter('WIN32_1_12_4_versioncounter', 0)] + value: $[counter('WIN32_2_0_0_versioncounter', 0)] - name: LITTLEFS_PATH value: "D:/a/1/s/littlefs" From 091f92c8c9ba1440a6a29fe26fffb5f8b6d8f840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 17 Apr 2025 18:08:03 +0100 Subject: [PATCH 165/168] Add config for task to download preview version of msbuild components --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e62506257c..a524977a57 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1303,6 +1303,7 @@ jobs: displayName: Install .NET nanoFramework MSBuild components inputs: GitHubToken: $(GitHubToken) + UsePreview: true - template: azure-pipelines-templates/check-mdp-for-build.yml From 60d427dde0bbac061156d493b555fd58752dff57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 17 Apr 2025 19:00:06 +0100 Subject: [PATCH 166/168] renormalize AZDO yaml ***NO_CI*** --- azure-pipelines.yml | 3034 +++++++++++++++++++++---------------------- 1 file changed, 1517 insertions(+), 1517 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a524977a57..ea99afa659 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,1517 +1,1517 @@ -# Copyright (c) .NET Foundation and Contributors -# See LICENSE file in the project root for full license information. - -trigger: - branches: - include: - - main - - develop* - - release-* - - refs/tags/* - paths: - exclude: - - .clang-format - - .github_changelog_generator - - .gitignore - - .typo-ci.yml - - build.ps1 - - CHANGELOG.md - - CMakeSettings.json - - CMakeSettings.SAMPLE.json - - LICENSE.md - - nf.props - - nfcore.vssettings - - README.md - - README.zh-cn.md - - RunCmd.bat - - startocd.bat - - .github/* - - .devcontainer/* - - .vscode/* - - .vs/* - - assets/* - - config/* - - install-scripts/* - - VisualStudioDevelopment/* - -pr: - autoCancel: true - -# add nf-tools repo to resources (for Azure Pipelines templates) -resources: - repositories: - - repository: templates - type: github - name: nanoframework/nf-tools - endpoint: nanoframework - - repository: esp32_idf - type: github - name: espressif/esp-idf - endpoint: nanoframework - ref: refs/tags/v5.2.3 - - repository: mscorlib - type: github - name: nanoframework/CoreLibrary - endpoint: nanoframework - - repository: littlefs - type: github - name: littlefs-project/littlefs - endpoint: nanoframework - ref: refs/tags/v2.9.3 - -jobs: - ############################## - - job: Check_Build_Options - pool: - vmImage: "windows-latest" - - variables: - DOTNET_NOLOGO: true - - steps: - - checkout: self - fetchDepth: 1 - - # get commit message - - powershell: | - - # set default values - echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]false" - - if($env:StartReleaseCandidate -like "true") - { - # this is a release prep so NO build - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" - - Write-Host "##[command] Release preparation, skipping build." - } - else - { - # get commit details, if this is a PR - if($env:System_PullRequest_PullRequestId -ne $null) - { - Write-Host "**This is a PR build**" - - # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" - # 'encoded token' is the Base64 of the string "nfbot:personal-token" - $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" - - $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/commits/$(Build.SourceVersion)" -ContentType "application/json" -Method GET - - if( ($commit.commit.author.name -eq "nfbot") -and ($commit.commit.message -like "*[version update]*") ) - { - Write-Host "**version update commit, skipping build**" - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" - } - else - { - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" - } - - # find PR - "Getting PR #$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline - $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json - - if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") - { - 'OK' | Write-Host -ForegroundColor Green - } - - # grab PR commit message - $prCommitMessage = $($pr.body) - - # debug output - # echo "=====`r`n$($prCommitMessage)`r`n=====" - - # check if Unit Tests for mscorlib should be run - if(($prCommitMessage -like "*[run mscorlib tests]*") -or ($prCommitMessage -match "Tested against nanoframework/CoreLibrary#(\d+)")) - { - Write-Host "##[command] >> mscorlib tests are to be run" - echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]true" - } - - # check if should use specific MDP for mscorlib - if($prCommitMessage -match "\[build with MDP buildId (\d+)\]") - { - Write-Host "##[command] >> Using specific MDP for mscorlib build" - echo "##vso[task.setvariable variable=USE_SPECIFIC_MDP;isOutput=true]true" - } - } - else - { - Write-Host "##[command] **build for other reasons**" - - echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" - } - } - - name: BuildOptions - displayName: Get build options - - # check what changed - - powershell: | - git config --global user.email "nfbot" - git config --global user.name "nanoframework@outlook.com" - - $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$(GitHubToken)")))" - - if($env:StartReleaseCandidate -like "true") - { - # this is a release prep so NO build - } - elseif($env:Build_Reason -eq "Manual") - { - # this is a manual build, no need to check anything - Write-host "##[command] Manual build" - } - else - { - # check if this build was triggered by the pipeline itself - if($env:Build_Reason -eq "Manual") - { - # this is a manual build, no need to check anything - Write-host "##[command] Manual build" - } - if($env:System_PullRequest_PullRequestId -ne $null) - { - # get files changed in PR, if this is a PR - $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/pulls/$env:System_PullRequest_PullRequestNumber/files" -Header @{"Authorization"="$auth"} -ContentType "application/json" -Method GET - - # filter removed files - $files = $commit.where{$_.status -ne 'removed'} - } - else - { - # get files changed in the commit, if this is NOT a PR - $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/commits/$(Build.SourceVersion)" -Header @{"Authorization"="$auth"} -ContentType "application/json" -Method GET - - # filter removed files - $files = $commit.files.where{$_.status -ne 'removed'} - } - - # get file names only - $files = $files | % {$_.filename} - - Write-host "##[group] Files changed:" - $files | % { Write-host $_ } - Write-host "##[endgroup]" - - # set default values - echo "##vso[task.setvariable variable=BUILD_CHIBIOS;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_FREERTOS;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_ESP32;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_TI;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_AZURERTOS;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_WIN32;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_NANOCLR_CLI;isOutput=true]false" - echo "##vso[task.setvariable variable=BUILD_ALL;isOutput=true]false" - - if( - (($files.where{$_.Contains('/')}).Count -eq 0) -Or - (($files.where{$_.StartsWith('azure-pipelines-templates')}).Count -gt 0) -Or - (($files.where{$_.StartsWith('CMake')}).Count -gt 0) -Or - (($files.where{$_.StartsWith('src')}).Count -gt 0) - ) - { - # files at: - # - repo root - # - azure-pipelines-templates - # - CMake - # - src - - echo "##vso[task.setvariable variable=BUILD_ALL;isOutput=true]true" - - Write-host "##[command] Building ALL targets" - } - - if( ($files.where{$_.Contains('targets/ChibiOS')}).Count -gt 0) - { - # files at ChibiOS folder - echo "##vso[task.setvariable variable=BUILD_CHIBIOS;isOutput=true]true" - - Write-host "##[command] Building ChibiOS targets" - } - - if( ($files.where{$_.Contains('targets/FreeRTOS')}).Count -gt 0) - { - # files at FreeRTOS folder - echo "##vso[task.setvariable variable=BUILD_FREERTOS;isOutput=true]true" - - Write-host "##[command] Building FreeRTOS targets" - } - - if( ($files.where{$_.Contains('targets/ESP32')}).Count -gt 0) - { - # files at ESP32 folder - echo "##vso[task.setvariable variable=BUILD_ESP32;isOutput=true]true" - - Write-host "##[command] Building ESP32 targets" - } - - if( ($files.where{$_.Contains('targets/TI_SimpleLink')}).Count -gt 0) - { - # files at TI_SimpleLink folder - echo "##vso[task.setvariable variable=BUILD_TI;isOutput=true]true" - - Write-host "##[command] Building TI SimpleLink targets" - } - - if( ($files.where{$_.Contains('targets/AzureRTOS')}).Count -gt 0) - { - # files at AzureRTOS folder - echo "##vso[task.setvariable variable=BUILD_AZURERTOS;isOutput=true]true" - - Write-host "##[command] Building Azure RTOS targets" - } - - if( - (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR')}).Count -gt 0) -Or - (($files.where{$_.Contains('targets/netcore/nanoCLR.sln')}).Count -gt 0) -Or - (($files.where{$_.Contains('targets/netcore/littlefs')}).Count -gt 0) -Or - (($files.where{$_.Contains('targets/win32')}).Count -gt 0) - ) - { - # files at win32 or netcore folders - echo "##vso[task.setvariable variable=BUILD_WIN32;isOutput=true]true" - - Write-host "##[command] Building nanoCLR target" - } - - if( - (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR.CLI')}).Count -gt 0) -Or - (($files.where{$_.Contains('targets/netcore/nanoCLR.sln')}).Count -gt 0) -Or - (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR.Host')}).Count -gt 0) - ) - { - # files at nanoCLR CLI or Host folders - echo "##vso[task.setvariable variable=BUILD_NANOCLR_CLI;isOutput=true]true" - - Write-host "##[command] Building nanoCLR CLI target" - } - - } - - name: TargetsToBuild - displayName: Get targets to build - - - task: DotNetCoreCLI@2 - condition: eq( variables['StartReleaseCandidate'], true ) - displayName: Install NBGV tool - inputs: - command: custom - custom: tool - arguments: install -g nbgv - - - powershell: | - - # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" - # 'encoded token' is the Base64 of the string "nfbot:personal-token" - $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" - - cd "$env:Agent_TempDirectory" > $null - - git init "$env:Agent_TempDirectory\repo" - cd repo > $null - git remote add origin "$env:Build_Repository_Uri" - git config --global gc.auto 0 - git config --global user.name nfbot - git config --global user.email nanoframework@outlook.com - git config --global core.autocrlf true - git -c http.extraheader="AUTHORIZATION: $auth" fetch --progress origin - - git checkout develop - - # prepare release and capture output - $release = nbgv prepare-release - - # push all changes to github - git -c http.extraheader="AUTHORIZATION: $auth" push --all origin - - # get release branch name - $branch = $release.Split(' ')[0] - - # start PR for release - $prRequestBody = @{title="Release $branch";body="";head="$branch";base="main"} | ConvertTo-Json - $githubApiEndpoint = "https://api.github.com/repos/$env:Build_Repository_Name/pulls" - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - - $headers = @{} - $headers.Add("Authorization","$auth") - $headers.Add("Accept","application/vnd.github.symmetra-preview+json") - - try - { - $result = Invoke-RestMethod -Method Post -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer -Uri $githubApiEndpoint -Header $headers -ContentType "application/json" -Body $prRequestBody - 'Started PR for new release...' | Write-Host -NoNewline - '##[error] OK' | Write-Host -ForegroundColor Green - } - catch - { - $result = $_.Exception.Response.GetResponseStream() - $reader = New-Object System.IO.StreamReader($result) - $reader.BaseStream.Position = 0 - $reader.DiscardBufferedData() - $responseBody = $reader.ReadToEnd(); - - "##[error] Error starting PR: $responseBody" | Write-Host -ForegroundColor Red - } - - condition: eq( variables['StartReleaseCandidate'], true ) - displayName: NBGV prepare release - - ############################## - - job: Check_Code_Style - condition: >- - and( - ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_CHIBIOS'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ESP32'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_FREERTOS'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_TI'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_AZURERTOS'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_WIN32'], true) - ) - ) - - dependsOn: - - Check_Build_Options - - pool: - vmImage: "windows-latest" - - steps: - - checkout: self - fetchDepth: 1 - condition: ne(variables['System.PullRequest.PullRequestId'], '') - - - template: azure-pipelines-templates/download-install-llvm.yml - - template: azure-pipelines-templates/check-code-style.yml - - ############### - # STM32 - - job: Build_STM32_targets - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_CHIBIOS'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_CHIBIOS__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - strategy: - matrix: - ST_STM32F429I_DISCOVERY: - TargetBoard: ST_STM32F429I_DISCOVERY - TargetSeries: "stm32f4xx" - BuildOptions: - NeedsDFU: false - NeedsSRECORD: false - CMakePreset: ST_STM32F429I_DISCOVERY - - ST_STM32F769I_DISCOVERY: - TargetBoard: ST_STM32F769I_DISCOVERY - TargetSeries: "stm32f7xx" - BuildOptions: - NeedsDFU: false - NeedsSRECORD: true - CMakePreset: ST_STM32F769I_DISCOVERY - - variables: - DOTNET_NOLOGO: true - # creates a counter and assigns it to the revision variable - REVISION: $[counter('STM32_2_0_0_versioncounter', 0)] - HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] - TargetPlatform: "stm32" - - steps: - - template: azure-pipelines-templates/build-preparations.yml - - template: azure-pipelines-templates/nb-gitversioning.yml - - template: azure-pipelines-templates/download-install-cmake.yml - - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml - - template: azure-pipelines-templates/download-install-ninja.yml - - template: azure-pipelines-templates/download-srecord.yml - - template: azure-pipelines-templates/download-hexdfu.yml - - template: azure-pipelines-templates/build-chibios-stm32-targets.yml - - template: azure-pipelines-templates/pack-publish-artifacts.yml - - template: azure-pipelines-templates/publish-cloudsmith.yml - - template: azure-pipelines-templates/pack-publish-managed-helpers.yml - - ################# - # ESP32 targets - - job: Build_ESP32_targets - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ESP32'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_ESP32__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - # there is only a single ESP32 target, but this is already config as a matrix to make it easy to add new ones - strategy: - matrix: - ESP32_PSRAM_REV0: - TargetBoard: ESP32 - TargetSeries: "esp32" - BuildOptions: - IDF_Target: esp32 - TargetName: ESP32 - PackageName: ESP32_PSRAM_REV0 - CMakePreset: ESP32_PSRAM_REV0 - - ESP32_BLE_REV0: - TargetBoard: ESP32 - TargetSeries: "esp32" - BuildOptions: - IDF_Target: esp32 - TargetName: ESP32 - PackageName: ESP32_BLE_REV0 - CMakePreset: ESP32_BLE_REV0 - - ESP32_C3: - TargetBoard: ESP32_C3 - TargetSeries: "esp32c3" - BuildOptions: - IDF_Target: esp32c3 - TargetName: ESP32_C3 - PackageName: ESP32_C3 - CMakePreset: ESP32_C3 - - ESP32_C6_THREAD: - TargetBoard: ESP32_C6 - TargetSeries: "esp32c6" - BuildOptions: - IDF_Target: esp32c6 - TargetName: ESP32_C6_THREAD - PackageName: ESP32_C6_THREAD - CMakePreset: ESP32_C6_THREAD - - ESP32_H2_THREAD: - TargetBoard: ESP32_H2 - TargetSeries: "esp32h2" - BuildOptions: - IDF_Target: esp32h2 - TargetName: ESP32_H2_THREAD - PackageName: ESP32_H2_THREAD - CMakePreset: ESP32_H2_THREAD - - ESP32_S3_ALL: - TargetBoard: ESP32_S3 - TargetSeries: "esp32s3" - BuildOptions: - IDF_Target: esp32s3 - TargetName: ESP32_S3_ALL - PackageName: ESP32_S3_ALL - CMakePreset: ESP32_S3_ALL - - ESP32_ETHERNET_KIT_1.2: - TargetBoard: ESP32 - TargetSeries: "esp32" - BuildOptions: - IDF_Target: esp32 - TargetName: ESP32_ETHERNET_KIT_1.2 - PackageName: ESP32_ETHERNET_KIT_1.2 - CMakePreset: ESP32_ETHERNET_KIT_1.2 - - variables: - DOTNET_NOLOGO: true - # creates a counter and assigns it to the revision variable - REVISION: $[counter('ESP32_2_0_0_versioncounter', 0)] - IDF_PATH: "D:/a/1/s/esp-idf" - PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip - TargetPlatform: "esp32" - IDF_TAG: "v5.2.3" - - steps: - - checkout: self - path: s/nf-interpreter - - - template: azure-pipelines-templates/checkout-idf.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s' - - template: azure-pipelines-templates/build-preparations.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' - - template: azure-pipelines-templates/nb-gitversioning.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' - - template: azure-pipelines-templates/download-install-esp32-build-components.yml - - template: azure-pipelines-templates/download-install-ninja.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' - - template: azure-pipelines-templates/build-espressif-esp32-targets.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' - partitionsDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter/targets/ESP32/_IDF/$(IDF_Target)' - - task: CopyFiles@2 - condition: succeeded() - displayName: Copying bootloader - inputs: - sourceFolder: '$(Agent.BuildDirectory)/s/nf-interpreter/build/bootloader' - Contents: | - bootloader.bin - TargetFolder: '$(Build.ArtifactStagingDirectory)\$(TargetPublishName)' - flattenFolders: true - ignoreMakeDirErrors: true - - - template: azure-pipelines-templates/copy-sdkconfig.yml - parameters: - repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' - - template: azure-pipelines-templates/pack-publish-artifacts.yml - parameters: - buildDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter/build' - - template: azure-pipelines-templates/publish-cloudsmith.yml - - template: azure-pipelines-templates/publish-sdkconfig.yml - - ################# - # NXP - - job: Build_NXP_targets - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_FREERTOS'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_NXP__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - strategy: - matrix: - NXP_MIMXRT1060_EVK: - TargetBoard: NXP_MIMXRT1060_EVK - TargetSeries: "imxrt10xx" - BuildOptions: - NeedsSRECORD: true - CMakePreset: NXP_MIMXRT1060_EVK - - variables: - DOTNET_NOLOGO: true - # creates a counter and assigns it to the revision variable - REVISION: $[counter('NXP_2_0_0_versioncounter', 0)] - GIT_LFS_SKIP_SMUDGE: 1 - TargetPlatform: "freertos" - - steps: - - template: azure-pipelines-templates/build-preparations.yml - - template: azure-pipelines-templates/nb-gitversioning.yml - - template: azure-pipelines-templates/download-install-cmake.yml - - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml - - template: azure-pipelines-templates/download-install-ninja.yml - - template: azure-pipelines-templates/download-srecord.yml - - template: azure-pipelines-templates/build-freertos-nxp-targets.yml - - template: azure-pipelines-templates/pack-publish-artifacts.yml - - template: azure-pipelines-templates/publish-cloudsmith.yml - - template: azure-pipelines-templates/pack-publish-managed-helpers.yml - - ################# - # TI SimpleLink - - job: Build_TI_SimpleLink_targets - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_TI'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_TI__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - strategy: - matrix: - # disabled: waiting to update SDK to latest version with Sys Config - # TI_CC3220SF_LAUNCHXL: - # TargetBoard: TI_CC3220SF_LAUNCHXL - # TargetSeries: 'cc32xx' - # BuildOptions: >- - # -DTARGET_SERIES=CC32xx - # -DRTOS=TI_SimpleLink - # -DSUPPORT_ANY_BASE_CONVERSION=OFF - # -DNF_FEATURE_DEBUGGER=ON - # -DNF_FEATURE_RTC=ON - # -DNF_FEATURE_WATCHDOG=OFF - # -DNF_FEATURE_HAS_CONFIG_BLOCK=ON - # -DAPI_System.Device.Gpio=ON - # -DAPI_System.Device.Spi=ON - # -DAPI_System.Device.I2c=ON - # -DAPI_System.Device.Pwm=ON - # -DAPI_System.Device.Adc=ON - # -DAPI_System.Net=ON - # -DAPI_nanoFramework.System.Collections=ON - # -DAPI_nanoFramework.System.Text=ON - - TI_CC1352R1_LAUNCHXL_915: - TargetBoard: TI_CC1352R1_LAUNCHXL - PackageName: TI_CC1352R1_LAUNCHXL_915 - TargetSeries: "CC13X2" - BuildOptions: >- - -DRADIO_FREQUENCY=915 - CMakePreset: TI_CC1352R1_LAUNCHXL - - variables: - DOTNET_NOLOGO: true - # creates a counter and assigns it to the revision variable - REVISION: $[counter('TI_2_0_0_versioncounter', 0)] - HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] - TargetPlatform: "ti_simplelink" - - steps: - - template: azure-pipelines-templates/build-preparations.yml - - template: azure-pipelines-templates/nb-gitversioning.yml - - template: azure-pipelines-templates/download-install-cmake.yml - - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml - - template: azure-pipelines-templates/download-install-ninja.yml - - template: azure-pipelines-templates/build-ti-simplelink-targets.yml - - template: azure-pipelines-templates/pack-publish-artifacts.yml - - template: azure-pipelines-templates/publish-cloudsmith.yml - - template: azure-pipelines-templates/pack-publish-ti-sl-managed-helpers.yml - - ################# - # Azure RTOS - - job: Build_Azure_RTOS_targets - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_AZURERTOS'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_AZURERTOS__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - strategy: - matrix: - # ST_B_L475E_IOT01A: - # TargetBoard: ST_B_L475E_IOT01A - # TargetSeries: 'stm32l4xx' - # BuildOptions: - # NeedsDFU: true - # NeedsSRECORD: false - # CMakePreset: ST_B_L475E_IOT01A - - # ORGPAL_PALTHREE: - # TargetBoard: ORGPAL_PALTHREE - # TargetSeries: 'stm32f7xx' - # BuildOptions: - # NeedsDFU: true - # NeedsSRECORD: false - # CMakePreset: ORGPAL_PALTHREE - - SL_STK3701A: - TargetBoard: SL_STK3701A - TargetSeries: "gg11" - BuildOptions: - NeedsDFU: false - NeedsSRECORD: false - CMakePreset: SL_STK3701A - - variables: - # creates a counter and assigns it to the revision variable - REVISION: $[counter('AZURERTOS_2_0_0_versioncounter', 0)] - HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] - TargetPlatform: "efm32" - - steps: - - template: azure-pipelines-templates/build-preparations.yml - - template: azure-pipelines-templates/nb-gitversioning.yml - - template: azure-pipelines-templates/download-install-cmake.yml - - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml - - template: azure-pipelines-templates/download-install-ninja.yml - - template: azure-pipelines-templates/download-hexdfu.yml - - template: azure-pipelines-templates/download-srecord.yml - - template: azure-pipelines-templates/build-azurertos-targets.yml - - template: azure-pipelines-templates/pack-publish-artifacts.yml - - template: azure-pipelines-templates/publish-cloudsmith.yml - - template: azure-pipelines-templates/pack-publish-managed-helpers.yml - - ################# - # WIN32 executable - - job: Build_WIN32_nanoCLR - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_WIN32'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_WINDOWS_NANOCLR__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - pool: - vmImage: "windows-latest" - - variables: - - group: sign-client-credentials - - name: DOTNET_NOLOGO - value: true - # creates a counter and assigns it to the revision variable - - name: REVISION - value: $[counter('WIN32_2_0_0_versioncounter', 0)] - - name: LITTLEFS_PATH - value: "D:/a/1/s/littlefs" - - steps: - - checkout: self - - checkout: littlefs - fetchDepth: 1 - - - template: azure-pipelines-templates/nb-gitversioning.yml - parameters: - repoDirectory: '$(Build.SourcesDirectory)/nf-interpreter' - - - task: PowerShell@2 - displayName: Store CLR DLL revision - name: SetRevision - inputs: - targetType: "inline" - script: | - Write-Host "$("##vso[task.setvariable variable=CLR_REVISION;isOutput=true]")$(REVISION)" - - - task: PowerShell@2 - displayName: Store package version - inputs: - targetType: "inline" - script: | - Write-Host "$("##vso[task.setvariable variable=WINCLR_PACKAGE_VERSION]")$(NBGV_VersionMajor).$(NBGV_VersionMinor).$(NBGV_BuildNumber).$(TARGET_BUILD_COUNTER)" - Write-Host "$("##vso[task.setvariable variable=WINCLR_AssemblyInformationalVersion]")$(NBGV_VersionMajor).$(NBGV_VersionMinor).$(NBGV_BuildNumber).$(TARGET_BUILD_COUNTER)$(NBGV_BuildMetadataFragment)" - - - template: azure-pipelines-templates/install-nuget.yml@templates - - - task: DotNetCoreCLI@2 - displayName: Restore NuGet packages - inputs: - command: restore - restoreArguments: "--locked-mode" - verbosityRestore: minimal - projects: nf-interpreter/targets/netcore/nanoCLR.sln - feedsToUse: select - includeNuGetOrg: true - - - task: VSBuild@1 - displayName: Build WIN32 EXE target - inputs: - solution: "nf-interpreter/targets/win32/nanoCLR.sln" - platform: "x86" - maximumCpuCount: true - msbuildArgs: "/p:PublicRelease=true" - configuration: "Release" - - - task: VSBuild@1 - displayName: Build WIN DLL target - inputs: - solution: "nf-interpreter/targets/netcore/nanoCLR.sln" - platform: "Any CPU" - maximumCpuCount: true - msbuildArgs: "/p:PublicRelease=true" - configuration: "Release" - - - task: DotNetCoreCLI@2 - displayName: Install Sign Client CLI - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - inputs: - command: custom - custom: tool - arguments: install --tool-path . sign --version 0.9.1-beta.23530.1 - - - pwsh: | - .\sign code azure-key-vault ` - "**/nanoFramework.nanoCLR.*" ` - --base-directory "$(Build.SourcesDirectory)/nf-interpreter/build/bin/Release" ` - --publisher-name ".NET nanoFramework" ` - --description "nanoFramework.nanoCLR" ` - --description-url "https://github.com/$env:Build_Repository_Name" ` - --azure-key-vault-tenant-id "$(SignTenantId)" ` - --azure-key-vault-client-id "$(SignClientId)" ` - --azure-key-vault-client-secret "$(SignClientSecret)" ` - --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` - --azure-key-vault-url "$(SignKeyVaultUrl)" ` - --timestamp-url http://timestamp.digicert.com - displayName: Sign nanoCLR assemblies - continueOnError: true - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - - - task: NuGetCommand@2 - condition: succeeded() - displayName: Pack nanoCLR WIN32 - inputs: - command: "custom" - arguments: "pack nf-interpreter/targets/win32/nanoFramework.nanoCLR.Win32.nuspec -Version $(NBGV_NuGetPackageVersion)" - - - task: CopyFiles@2 - condition: succeeded() - displayName: Collecting NuGet packages - inputs: - sourceFolder: $(Build.SourcesDirectory) - Contents: | - **\nanoFramework.nanoCLR.Win32*.nupkg - TargetFolder: "$(Build.ArtifactStagingDirectory)" - flattenFolders: true - ignoreMakeDirErrors: true - - - task: CopyFiles@2 - condition: succeeded() - displayName: Adding nanoCLR WIN32 to deployable artifacts - inputs: - sourceFolder: $(Build.SourcesDirectory) - Contents: | - **\nanoFramework.nanoCLR.exe - TargetFolder: '$(Build.ArtifactStagingDirectory)\WIN32_nanoCLR' - flattenFolders: true - ignoreMakeDirErrors: true - - - task: CopyFiles@2 - condition: succeeded() - displayName: Adding nanoCLR DLL to deployable artifacts - inputs: - sourceFolder: $(Build.SourcesDirectory) - Contents: | - **\nanoFramework.nanoCLR.dll - TargetFolder: '$(Build.ArtifactStagingDirectory)\WIN_DLL_nanoCLR' - flattenFolders: true - ignoreMakeDirErrors: true - - - pwsh: | - .\sign code azure-key-vault ` - "**/*.nupkg" ` - --base-directory "$(Build.ArtifactStagingDirectory)" ` - --publisher-name ".NET nanoFramework" ` - --description "nanoFramework.nanoCLR NuGets" ` - --description-url "https://github.com/$env:Build_Repository_Name" ` - --azure-key-vault-tenant-id "$(SignTenantId)" ` - --azure-key-vault-client-id "$(SignClientId)" ` - --azure-key-vault-client-secret "$(SignClientSecret)" ` - --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` - --azure-key-vault-url "$(SignKeyVaultUrl)" ` - --timestamp-url http://timestamp.digicert.com - displayName: Sign packages - continueOnError: true - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - - # publish artifacts - - task: PublishPipelineArtifact@1 - condition: succeeded() - displayName: Publish deployables artifacts - inputs: - targetPath: "$(Build.ArtifactStagingDirectory)" - artifactName: nanoclr_win32 - artifactType: pipeline - - # push NuGet packages to Azure Artifacts feed (always happens when building from main, except on PR builds) - - task: NuGetCommand@2 - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - or( - eq(variables['ForceUpload'], true), - eq(variables['Build.SourceBranchName'], 'main') - ) - ) - continueOnError: true - displayName: Push NuGet packages to Azure Artifacts - inputs: - command: push - nuGetFeedType: external - packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" - publishFeedCredentials: "AzureArtifacts-nf-interpreter" - allowPackageConflicts: true - - # push NuGet packages to NuGet (always happens when building from main, except on PR builds) - - task: NuGetCommand@2 - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - or( - eq(variables['ForceUpload'], true), - eq(variables['Build.SourceBranchName'], 'main') - ) - ) - continueOnError: true - displayName: Push NuGet packages to NuGet - inputs: - command: push - nuGetFeedType: external - allowPackageConflicts: true - packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" - publishFeedCredentials: "NuGet-nf-interpreter" - - - template: azure-pipelines-templates/publish-nanoclr.yml - - ################# - # nanoCLR CLI tool - - job: Build_nanoCLR_CLI - condition: >- - or( - and( - succeeded('Check_Code_Style'), - ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), - or( - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_NANOCLR_CLI'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_NANOCLR_CLI__'], 'true') - ) - ) - ) - - dependsOn: - - Check_Build_Options - - Check_Code_Style - - Build_WIN32_nanoCLR - - pool: - vmImage: "windows-latest" - - variables: - - group: sign-client-credentials - - name: DOTNET_NOLOGO - value: true - - name: LITTLEFS_PATH - value: "D:/a/1/s/littlefs" - - name: REVISION - value: $[dependencies.Build_WIN32_nanoCLR.outputs['SetRevision.CLR_REVISION']] - - steps: - - checkout: self - - checkout: littlefs - fetchDepth: 1 - - - template: azure-pipelines-templates/nb-gitversioning.yml - parameters: - repoDirectory: '$(Build.SourcesDirectory)/nf-interpreter' - - - template: azure-pipelines-templates/install-nuget.yml@templates - - - task: DotNetCoreCLI@2 - displayName: Restore NuGet packages - inputs: - command: restore - restoreArguments: "--locked-mode" - verbosityRestore: minimal - projects: "nf-interpreter/targets/netcore/nanoCLR.sln" - feedsToUse: select - includeNuGetOrg: true - - - task: VSBuild@1 - displayName: Build .NET tool - condition: succeeded() - inputs: - solution: "nf-interpreter/targets/netcore/nanoCLR.sln" - platform: "Any CPU" - maximumCpuCount: true - msbuildArgs: "/p:PublicRelease=true" - configuration: "Release" - - - task: DotNetCoreCLI@2 - displayName: Install Sign Client CLI - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - inputs: - command: custom - custom: tool - arguments: install --tool-path . sign --version 0.9.1-beta.23530.1 - - - pwsh: | - .\sign code azure-key-vault ` - "**/nanoFramework.nanoCLR.*" ` - --base-directory "$(Build.SourcesDirectory)/nf-interpreter/build/bin/Release" ` - --publisher-name ".NET nanoFramework" ` - --description "nanoFramework.nanoCLR.CLI" ` - --description-url "https://github.com/$env:Build_Repository_Name" ` - --azure-key-vault-tenant-id "$(SignTenantId)" ` - --azure-key-vault-client-id "$(SignClientId)" ` - --azure-key-vault-client-secret "$(SignClientSecret)" ` - --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` - --azure-key-vault-url "$(SignKeyVaultUrl)" ` - --timestamp-url http://timestamp.digicert.com - displayName: Sign nanoCLR assemblies - continueOnError: true - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - - - task: MSBuild@1 - condition: succeeded() - displayName: Pack nanoCLR CLI - inputs: - solution: "nf-interpreter/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj" - platform: "Any CPU" - msbuildArguments: "/p:PublicRelease=true /t:pack /p:PackageOutputPath=$(Build.ArtifactStagingDirectory) " - configuration: "Release" - maximumCpuCount: true - - - pwsh: | - .\sign code azure-key-vault ` - "**/*.nupkg" ` - --base-directory "$(Build.ArtifactStagingDirectory)" ` - --publisher-name ".NET nanoFramework" ` - --description "nanoFramework.nanoCLR.CLI NuGet" ` - --description-url "https://github.com/$env:Build_Repository_Name" ` - --azure-key-vault-tenant-id "$(SignTenantId)" ` - --azure-key-vault-client-id "$(SignClientId)" ` - --azure-key-vault-client-secret "$(SignClientSecret)" ` - --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` - --azure-key-vault-url "$(SignKeyVaultUrl)" ` - --timestamp-url http://timestamp.digicert.com - displayName: Sign packages - continueOnError: true - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], '') - ) - - - task: CopyFiles@2 - condition: succeeded() - displayName: Copy nanoclr - inputs: - SourceFolder: "nf-interpreter/build/bin/Release" - Contents: "nanoFramework.nanoCLR.dll" - TargetFolder: "$(Build.ArtifactStagingDirectory)/nanoclr" - - - task: PublishPipelineArtifact@1 - condition: succeeded() - displayName: Publish nanoclr - inputs: - targetPath: "$(Build.ArtifactStagingDirectory)/nanoclr" - artifactName: nanoclr_cli - artifactType: pipeline - - # push NuGet packages to Azure Artifacts feed (always happens when building from main, except on PR builds) - - task: NuGetCommand@2 - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - or( - eq(variables['ForceUpload'], true), - eq(variables['Build.SourceBranchName'], 'main') - ) - ) - continueOnError: true - displayName: Push NuGet packages to Azure Artifacts - inputs: - command: push - nuGetFeedType: external - packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" - publishFeedCredentials: "AzureArtifacts-nf-interpreter" - allowPackageConflicts: true - - # push NuGet packages to NuGet (always happens when building from main, except on PR builds) - - task: NuGetCommand@2 - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - or( - eq(variables['ForceUpload'], true), - eq(variables['Build.SourceBranchName'], 'main') - ) - ) - continueOnError: true - displayName: Push NuGet packages to NuGet - inputs: - command: push - nuGetFeedType: external - allowPackageConflicts: true - packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" - publishFeedCredentials: "NuGet-nf-interpreter" - - ######################### - # Run mscorlib Unit Tests - - - job: Run_UnitTests_mscorlib - condition: >- - or( - and( - succeeded('Build_nanoCLR_CLI'), - ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), - ne(variables['System.PullRequest.PullRequestId'], ''), - or( - eq(dependencies.Check_Build_Options.outputs['BuildOptions.RUN_MSCORLIB_TESTS'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), - eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_NANOCLR_CLI'], true) - ) - ), - and( - eq(variables['Build.Reason'], 'Manual'), - or( - eq(variables['BUILD_ALL__'], 'true'), - eq(variables['BUILD_NANOCLR_CLI__'], 'true') - ), - eq(variables['RUN_MSCORLIB_TESTS__'], 'true') - ) - ) - - dependsOn: - - Build_nanoCLR_CLI - - Check_Build_Options - - pool: - vmImage: "windows-latest" - - variables: - DOTNET_NOLOGO: true - solution: "nanoFramework.CoreLibrary.sln" - buildPlatform: "Any CPU" - buildConfiguration: "Release" - DownloadMDP: $[ dependencies.Check_Build_Options.outputs['BuildOptions.USE_SPECIFIC_MDP'] ] - - steps: - - checkout: self - fetchDepth: 1 - - checkout: mscorlib - fetchDepth: 100 - submodules: true - persistCredentials: true - - - template: azure-pipelines-templates/check-mscorlib-to-test.yml - - # Download nanoclr from build artifacts - - task: DownloadBuildArtifacts@1 - inputs: - buildType: "current" - artifactName: "nanoclr_cli" - downloadPath: "$(Agent.TempDirectory)/nanoclr_cli" - - # build mscorlib - - - task: InstallNanoMSBuildComponents@1 - condition: succeeded() - displayName: Install .NET nanoFramework MSBuild components - inputs: - GitHubToken: $(GitHubToken) - UsePreview: true - - - template: azure-pipelines-templates/check-mdp-for-build.yml - - - template: azure-pipelines-templates/install-nuget.yml@templates - - - task: Cache@2 - displayName: Cache NuGet packages - condition: succeeded() - continueOnError: true - inputs: - key: 'nuget | **/packages.lock.json' - path: $(UserProfile)/.nuget/packages - - - task: NuGetCommand@2 - condition: succeeded() - displayName: NuGet restore - retryCountOnTaskFailure: 5 - inputs: - restoreSolution: "**/nanoFramework.CoreLibrary.sln" - feedsToUse: select - - - task: VSBuild@1 - condition: succeeded() - inputs: - solution: "**/nanoFramework.CoreLibrary.sln" - platform: "Any CPU" - msbuildArgs: "/p:PublicRelease=true" - configuration: "Release" - msbuildArchitecture: "x64" - maximumCpuCount: true - - # run tests - - template: azure-pipelines-templates/run-unit-tests.yml@templates - parameters: - runUnitTests: true - unitTestRunsettings: '$(System.DefaultWorkingDirectory)\nf-interpreter\targets\netcore\pipeline_tests.runsettings' - packagesDirectory: "$(Build.SourcesDirectory)/CoreLibrary/packages" - - - task: CopyFiles@2 - condition: succeededOrFailed() - displayName: Copy vstest dump files - inputs: - SourceFolder: 'D:\a\_temp\' - Contents: "**/*.dmp" - TargetFolder: "$(Build.ArtifactStagingDirectory)/vstest_dumps" - flattenFolders: true - - - powershell: | - $dumpPath = "$(Build.ArtifactStagingDirectory)/vstest_dumps" - $hasFiles = $false - - if (Test-Path $dumpPath -PathType Container) { - $fileCount = (Get-ChildItem $dumpPath -File | Measure-Object).Count - $hasFiles = $fileCount -gt 0 - } - echo "##vso[task.setvariable variable=hasFiles;isOutput=true]$hasFiles" - displayName: "Check for dump files" - name: checkFiles - - - task: PublishPipelineArtifact@1 - condition: eq(variables['hasFiles'], 'true') - displayName: Publish vstest dump files - inputs: - targetPath: "$(Build.ArtifactStagingDirectory)/vstest_dumps" - artifactName: VsTestCrashDumps - artifactType: pipeline - - ###################### - # generate change log - - job: Generate_change_log - dependsOn: - - Build_STM32_targets - - Build_ESP32_targets - - Build_NXP_targets - - Build_TI_SimpleLink_targets - - Build_Azure_RTOS_targets - # skip build if this is a PR, submitted by nfbot and the commit message contains [version update] - condition: >- - and( - succeeded('Build_STM32_targets'), - succeeded('Build_ESP32_targets'), - succeeded('Build_NXP_targets'), - succeeded('Build_TI_SimpleLink_targets'), - succeeded('Build_Azure_RTOS_targets'), - not( eq(variables['Build.Reason'], 'PullRequest') - ), - or( - eq(variables['Build.SourceBranchName'], 'main'), - startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), - ne( variables['StartReleaseCandidate'], true ) - ) - - pool: - vmImage: "windows-latest" - - steps: - - task: DotNetCoreCLI@2 - condition: succeeded() - displayName: Install NBGV tool - inputs: - command: custom - custom: tool - arguments: install --tool-path . nbgv - - - script: nbgv cloud -a -c - condition: succeeded() - displayName: Set build number - - - task: UseRubyVersion@0 - condition: succeeded() - inputs: - versionSpec: "= 3.0" - addToPath: true - - # Cache change log cache files - - task: Cache@2 - displayName: Cache change log cache files - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - startsWith(variables['Build.SourceBranch'], 'refs/tags/v') - ) - inputs: - key: "changeLogCacheFiles" - restoreKeys: 1_0 - path: | - $(Agent.TempDirectory)/github-changelog-logger.log - $(Agent.TempDirectory)/github-changelog-http-cache - - # generate change log including future version - - powershell: | - gem install github_changelog_generator --quiet --no-document - # need to call it passing both cache options with full path otherwise it won't work - github_changelog_generator --token $(GitHubToken) --cache-log $env:AGENT_TEMPDIRECTORY\github-changelog-logger.log --cache-file $env:AGENT_TEMPDIRECTORY\github-changelog-http-cache --pr-wo-labels --future-release "v$env:NBGV_AssemblyVersion" - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - startsWith(variables['Build.SourceBranch'], 'refs/tags/v') - ) - displayName: Generate change log - - # push new changelog to GitHub repo - - powershell: | - git config --global gc.auto 0 - git config --global user.name nfbot - git config --global user.email nanoframework@outlook.com - git config --global core.autocrlf true - - git add CHANGELOG.md - git commit -m "Update CHANGELOG" -m"***NO_CI***" - - # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" - # 'encoded token' is the Base64 of the string "nfbot:personal-token" - $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" - - git -c http.extraheader="AUTHORIZATION: $auth" push origin "HEAD:$(Build.SourceBranchName)" - condition: >- - and( - succeeded(), - eq(variables['System.PullRequest.PullRequestId'], ''), - not( - startsWith(variables['Build.SourceBranch'], 'refs/tags/v') - ), - eq( variables['StartReleaseCandidate'], false ) - ) - continueOnError: true - displayName: Push changelog to GitHub - - ################################# - # report build failure to Discord - - job: Report_Build_Failure - dependsOn: - - Build_STM32_targets - - Build_ESP32_targets - - Build_NXP_targets - - Build_TI_SimpleLink_targets - - Build_Azure_RTOS_targets - - Build_WIN32_nanoCLR - - Build_nanoCLR_CLI - - Generate_change_log - - Check_Code_Style - condition: >- - and( - ne( dependencies.Check_Code_Style.outputs['Check_Code_Style.CODE_STYLE_CHECK_FAILED'], true), - or( - failed('Build_STM32_targets'), - failed('Build_ESP32_targets'), - failed('Build_NXP_targets'), - failed('Build_TI_SimpleLink_targets'), - failed('Build_Azure_RTOS_targets'), - failed('Build_WIN32_nanoCLR'), - failed('Build_nanoCLR_CLI'), - failed('Generate_change_log') - ) - ) - - pool: - vmImage: "windows-latest" - - steps: - - checkout: self - fetchDepth: 1 - - # step from template @ nf-tools repo - - template: azure-pipelines-templates/discord-webhook.yml@templates - parameters: - status: "failure" - webhookUrl: "$(DiscordWebhook)" - message: "" +# Copyright (c) .NET Foundation and Contributors +# See LICENSE file in the project root for full license information. + +trigger: + branches: + include: + - main + - develop* + - release-* + - refs/tags/* + paths: + exclude: + - .clang-format + - .github_changelog_generator + - .gitignore + - .typo-ci.yml + - build.ps1 + - CHANGELOG.md + - CMakeSettings.json + - CMakeSettings.SAMPLE.json + - LICENSE.md + - nf.props + - nfcore.vssettings + - README.md + - README.zh-cn.md + - RunCmd.bat + - startocd.bat + - .github/* + - .devcontainer/* + - .vscode/* + - .vs/* + - assets/* + - config/* + - install-scripts/* + - VisualStudioDevelopment/* + +pr: + autoCancel: true + +# add nf-tools repo to resources (for Azure Pipelines templates) +resources: + repositories: + - repository: templates + type: github + name: nanoframework/nf-tools + endpoint: nanoframework + - repository: esp32_idf + type: github + name: espressif/esp-idf + endpoint: nanoframework + ref: refs/tags/v5.2.3 + - repository: mscorlib + type: github + name: nanoframework/CoreLibrary + endpoint: nanoframework + - repository: littlefs + type: github + name: littlefs-project/littlefs + endpoint: nanoframework + ref: refs/tags/v2.9.3 + +jobs: + ############################## + - job: Check_Build_Options + pool: + vmImage: "windows-latest" + + variables: + DOTNET_NOLOGO: true + + steps: + - checkout: self + fetchDepth: 1 + + # get commit message + - powershell: | + + # set default values + echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]false" + + if($env:StartReleaseCandidate -like "true") + { + # this is a release prep so NO build + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" + + Write-Host "##[command] Release preparation, skipping build." + } + else + { + # get commit details, if this is a PR + if($env:System_PullRequest_PullRequestId -ne $null) + { + Write-Host "**This is a PR build**" + + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + + $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/commits/$(Build.SourceVersion)" -ContentType "application/json" -Method GET + + if( ($commit.commit.author.name -eq "nfbot") -and ($commit.commit.message -like "*[version update]*") ) + { + Write-Host "**version update commit, skipping build**" + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]true" + } + else + { + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" + } + + # find PR + "Getting PR #$env:System_PullRequest_PullRequestNumber details..." | Write-Host -ForegroundColor White -NoNewline + $pr = Invoke-WebRequest "https://api.github.com/repos/$env:Build_Repository_Name/pulls/$env:System_PullRequest_PullRequestNumber" | ConvertFrom-Json + + if($($pr.number) -eq "$env:System_PullRequest_PullRequestNumber") + { + 'OK' | Write-Host -ForegroundColor Green + } + + # grab PR commit message + $prCommitMessage = $($pr.body) + + # debug output + # echo "=====`r`n$($prCommitMessage)`r`n=====" + + # check if Unit Tests for mscorlib should be run + if(($prCommitMessage -like "*[run mscorlib tests]*") -or ($prCommitMessage -match "Tested against nanoframework/CoreLibrary#(\d+)")) + { + Write-Host "##[command] >> mscorlib tests are to be run" + echo "##vso[task.setvariable variable=RUN_MSCORLIB_TESTS;isOutput=true]true" + } + + # check if should use specific MDP for mscorlib + if($prCommitMessage -match "\[build with MDP buildId (\d+)\]") + { + Write-Host "##[command] >> Using specific MDP for mscorlib build" + echo "##vso[task.setvariable variable=USE_SPECIFIC_MDP;isOutput=true]true" + } + } + else + { + Write-Host "##[command] **build for other reasons**" + + echo "##vso[task.setvariable variable=SKIP_BUILD;isOutput=true]false" + } + } + + name: BuildOptions + displayName: Get build options + + # check what changed + - powershell: | + git config --global user.email "nfbot" + git config --global user.name "nanoframework@outlook.com" + + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$(GitHubToken)")))" + + if($env:StartReleaseCandidate -like "true") + { + # this is a release prep so NO build + } + elseif($env:Build_Reason -eq "Manual") + { + # this is a manual build, no need to check anything + Write-host "##[command] Manual build" + } + else + { + # check if this build was triggered by the pipeline itself + if($env:Build_Reason -eq "Manual") + { + # this is a manual build, no need to check anything + Write-host "##[command] Manual build" + } + if($env:System_PullRequest_PullRequestId -ne $null) + { + # get files changed in PR, if this is a PR + $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/pulls/$env:System_PullRequest_PullRequestNumber/files" -Header @{"Authorization"="$auth"} -ContentType "application/json" -Method GET + + # filter removed files + $files = $commit.where{$_.status -ne 'removed'} + } + else + { + # get files changed in the commit, if this is NOT a PR + $commit = Invoke-RestMethod -Uri "https://api.github.com/repos/nanoframework/nf-interpreter/commits/$(Build.SourceVersion)" -Header @{"Authorization"="$auth"} -ContentType "application/json" -Method GET + + # filter removed files + $files = $commit.files.where{$_.status -ne 'removed'} + } + + # get file names only + $files = $files | % {$_.filename} + + Write-host "##[group] Files changed:" + $files | % { Write-host $_ } + Write-host "##[endgroup]" + + # set default values + echo "##vso[task.setvariable variable=BUILD_CHIBIOS;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_FREERTOS;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_ESP32;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_TI;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_AZURERTOS;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_WIN32;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_NANOCLR_CLI;isOutput=true]false" + echo "##vso[task.setvariable variable=BUILD_ALL;isOutput=true]false" + + if( + (($files.where{$_.Contains('/')}).Count -eq 0) -Or + (($files.where{$_.StartsWith('azure-pipelines-templates')}).Count -gt 0) -Or + (($files.where{$_.StartsWith('CMake')}).Count -gt 0) -Or + (($files.where{$_.StartsWith('src')}).Count -gt 0) + ) + { + # files at: + # - repo root + # - azure-pipelines-templates + # - CMake + # - src + + echo "##vso[task.setvariable variable=BUILD_ALL;isOutput=true]true" + + Write-host "##[command] Building ALL targets" + } + + if( ($files.where{$_.Contains('targets/ChibiOS')}).Count -gt 0) + { + # files at ChibiOS folder + echo "##vso[task.setvariable variable=BUILD_CHIBIOS;isOutput=true]true" + + Write-host "##[command] Building ChibiOS targets" + } + + if( ($files.where{$_.Contains('targets/FreeRTOS')}).Count -gt 0) + { + # files at FreeRTOS folder + echo "##vso[task.setvariable variable=BUILD_FREERTOS;isOutput=true]true" + + Write-host "##[command] Building FreeRTOS targets" + } + + if( ($files.where{$_.Contains('targets/ESP32')}).Count -gt 0) + { + # files at ESP32 folder + echo "##vso[task.setvariable variable=BUILD_ESP32;isOutput=true]true" + + Write-host "##[command] Building ESP32 targets" + } + + if( ($files.where{$_.Contains('targets/TI_SimpleLink')}).Count -gt 0) + { + # files at TI_SimpleLink folder + echo "##vso[task.setvariable variable=BUILD_TI;isOutput=true]true" + + Write-host "##[command] Building TI SimpleLink targets" + } + + if( ($files.where{$_.Contains('targets/AzureRTOS')}).Count -gt 0) + { + # files at AzureRTOS folder + echo "##vso[task.setvariable variable=BUILD_AZURERTOS;isOutput=true]true" + + Write-host "##[command] Building Azure RTOS targets" + } + + if( + (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR')}).Count -gt 0) -Or + (($files.where{$_.Contains('targets/netcore/nanoCLR.sln')}).Count -gt 0) -Or + (($files.where{$_.Contains('targets/netcore/littlefs')}).Count -gt 0) -Or + (($files.where{$_.Contains('targets/win32')}).Count -gt 0) + ) + { + # files at win32 or netcore folders + echo "##vso[task.setvariable variable=BUILD_WIN32;isOutput=true]true" + + Write-host "##[command] Building nanoCLR target" + } + + if( + (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR.CLI')}).Count -gt 0) -Or + (($files.where{$_.Contains('targets/netcore/nanoCLR.sln')}).Count -gt 0) -Or + (($files.where{$_.Contains('targets/netcore/nanoFramework.nanoCLR.Host')}).Count -gt 0) + ) + { + # files at nanoCLR CLI or Host folders + echo "##vso[task.setvariable variable=BUILD_NANOCLR_CLI;isOutput=true]true" + + Write-host "##[command] Building nanoCLR CLI target" + } + + } + + name: TargetsToBuild + displayName: Get targets to build + + - task: DotNetCoreCLI@2 + condition: eq( variables['StartReleaseCandidate'], true ) + displayName: Install NBGV tool + inputs: + command: custom + custom: tool + arguments: install -g nbgv + + - powershell: | + + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + + cd "$env:Agent_TempDirectory" > $null + + git init "$env:Agent_TempDirectory\repo" + cd repo > $null + git remote add origin "$env:Build_Repository_Uri" + git config --global gc.auto 0 + git config --global user.name nfbot + git config --global user.email nanoframework@outlook.com + git config --global core.autocrlf true + git -c http.extraheader="AUTHORIZATION: $auth" fetch --progress origin + + git checkout develop + + # prepare release and capture output + $release = nbgv prepare-release + + # push all changes to github + git -c http.extraheader="AUTHORIZATION: $auth" push --all origin + + # get release branch name + $branch = $release.Split(' ')[0] + + # start PR for release + $prRequestBody = @{title="Release $branch";body="";head="$branch";base="main"} | ConvertTo-Json + $githubApiEndpoint = "https://api.github.com/repos/$env:Build_Repository_Name/pulls" + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + + $headers = @{} + $headers.Add("Authorization","$auth") + $headers.Add("Accept","application/vnd.github.symmetra-preview+json") + + try + { + $result = Invoke-RestMethod -Method Post -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer -Uri $githubApiEndpoint -Header $headers -ContentType "application/json" -Body $prRequestBody + 'Started PR for new release...' | Write-Host -NoNewline + '##[error] OK' | Write-Host -ForegroundColor Green + } + catch + { + $result = $_.Exception.Response.GetResponseStream() + $reader = New-Object System.IO.StreamReader($result) + $reader.BaseStream.Position = 0 + $reader.DiscardBufferedData() + $responseBody = $reader.ReadToEnd(); + + "##[error] Error starting PR: $responseBody" | Write-Host -ForegroundColor Red + } + + condition: eq( variables['StartReleaseCandidate'], true ) + displayName: NBGV prepare release + + ############################## + - job: Check_Code_Style + condition: >- + and( + ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_CHIBIOS'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ESP32'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_FREERTOS'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_TI'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_AZURERTOS'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_WIN32'], true) + ) + ) + + dependsOn: + - Check_Build_Options + + pool: + vmImage: "windows-latest" + + steps: + - checkout: self + fetchDepth: 1 + condition: ne(variables['System.PullRequest.PullRequestId'], '') + + - template: azure-pipelines-templates/download-install-llvm.yml + - template: azure-pipelines-templates/check-code-style.yml + + ############### + # STM32 + - job: Build_STM32_targets + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_CHIBIOS'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_CHIBIOS__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + strategy: + matrix: + ST_STM32F429I_DISCOVERY: + TargetBoard: ST_STM32F429I_DISCOVERY + TargetSeries: "stm32f4xx" + BuildOptions: + NeedsDFU: false + NeedsSRECORD: false + CMakePreset: ST_STM32F429I_DISCOVERY + + ST_STM32F769I_DISCOVERY: + TargetBoard: ST_STM32F769I_DISCOVERY + TargetSeries: "stm32f7xx" + BuildOptions: + NeedsDFU: false + NeedsSRECORD: true + CMakePreset: ST_STM32F769I_DISCOVERY + + variables: + DOTNET_NOLOGO: true + # creates a counter and assigns it to the revision variable + REVISION: $[counter('STM32_2_0_0_versioncounter', 0)] + HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] + TargetPlatform: "stm32" + + steps: + - template: azure-pipelines-templates/build-preparations.yml + - template: azure-pipelines-templates/nb-gitversioning.yml + - template: azure-pipelines-templates/download-install-cmake.yml + - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml + - template: azure-pipelines-templates/download-install-ninja.yml + - template: azure-pipelines-templates/download-srecord.yml + - template: azure-pipelines-templates/download-hexdfu.yml + - template: azure-pipelines-templates/build-chibios-stm32-targets.yml + - template: azure-pipelines-templates/pack-publish-artifacts.yml + - template: azure-pipelines-templates/publish-cloudsmith.yml + - template: azure-pipelines-templates/pack-publish-managed-helpers.yml + + ################# + # ESP32 targets + - job: Build_ESP32_targets + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ESP32'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_ESP32__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + # there is only a single ESP32 target, but this is already config as a matrix to make it easy to add new ones + strategy: + matrix: + ESP32_PSRAM_REV0: + TargetBoard: ESP32 + TargetSeries: "esp32" + BuildOptions: + IDF_Target: esp32 + TargetName: ESP32 + PackageName: ESP32_PSRAM_REV0 + CMakePreset: ESP32_PSRAM_REV0 + + ESP32_BLE_REV0: + TargetBoard: ESP32 + TargetSeries: "esp32" + BuildOptions: + IDF_Target: esp32 + TargetName: ESP32 + PackageName: ESP32_BLE_REV0 + CMakePreset: ESP32_BLE_REV0 + + ESP32_C3: + TargetBoard: ESP32_C3 + TargetSeries: "esp32c3" + BuildOptions: + IDF_Target: esp32c3 + TargetName: ESP32_C3 + PackageName: ESP32_C3 + CMakePreset: ESP32_C3 + + ESP32_C6_THREAD: + TargetBoard: ESP32_C6 + TargetSeries: "esp32c6" + BuildOptions: + IDF_Target: esp32c6 + TargetName: ESP32_C6_THREAD + PackageName: ESP32_C6_THREAD + CMakePreset: ESP32_C6_THREAD + + ESP32_H2_THREAD: + TargetBoard: ESP32_H2 + TargetSeries: "esp32h2" + BuildOptions: + IDF_Target: esp32h2 + TargetName: ESP32_H2_THREAD + PackageName: ESP32_H2_THREAD + CMakePreset: ESP32_H2_THREAD + + ESP32_S3_ALL: + TargetBoard: ESP32_S3 + TargetSeries: "esp32s3" + BuildOptions: + IDF_Target: esp32s3 + TargetName: ESP32_S3_ALL + PackageName: ESP32_S3_ALL + CMakePreset: ESP32_S3_ALL + + ESP32_ETHERNET_KIT_1.2: + TargetBoard: ESP32 + TargetSeries: "esp32" + BuildOptions: + IDF_Target: esp32 + TargetName: ESP32_ETHERNET_KIT_1.2 + PackageName: ESP32_ETHERNET_KIT_1.2 + CMakePreset: ESP32_ETHERNET_KIT_1.2 + + variables: + DOTNET_NOLOGO: true + # creates a counter and assigns it to the revision variable + REVISION: $[counter('ESP32_2_0_0_versioncounter', 0)] + IDF_PATH: "D:/a/1/s/esp-idf" + PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip + TargetPlatform: "esp32" + IDF_TAG: "v5.2.3" + + steps: + - checkout: self + path: s/nf-interpreter + + - template: azure-pipelines-templates/checkout-idf.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s' + - template: azure-pipelines-templates/build-preparations.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' + - template: azure-pipelines-templates/nb-gitversioning.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' + - template: azure-pipelines-templates/download-install-esp32-build-components.yml + - template: azure-pipelines-templates/download-install-ninja.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' + - template: azure-pipelines-templates/build-espressif-esp32-targets.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' + partitionsDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter/targets/ESP32/_IDF/$(IDF_Target)' + - task: CopyFiles@2 + condition: succeeded() + displayName: Copying bootloader + inputs: + sourceFolder: '$(Agent.BuildDirectory)/s/nf-interpreter/build/bootloader' + Contents: | + bootloader.bin + TargetFolder: '$(Build.ArtifactStagingDirectory)\$(TargetPublishName)' + flattenFolders: true + ignoreMakeDirErrors: true + + - template: azure-pipelines-templates/copy-sdkconfig.yml + parameters: + repoDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter' + - template: azure-pipelines-templates/pack-publish-artifacts.yml + parameters: + buildDirectory: '$(Agent.BuildDirectory)/s/nf-interpreter/build' + - template: azure-pipelines-templates/publish-cloudsmith.yml + - template: azure-pipelines-templates/publish-sdkconfig.yml + + ################# + # NXP + - job: Build_NXP_targets + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_FREERTOS'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_NXP__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + strategy: + matrix: + NXP_MIMXRT1060_EVK: + TargetBoard: NXP_MIMXRT1060_EVK + TargetSeries: "imxrt10xx" + BuildOptions: + NeedsSRECORD: true + CMakePreset: NXP_MIMXRT1060_EVK + + variables: + DOTNET_NOLOGO: true + # creates a counter and assigns it to the revision variable + REVISION: $[counter('NXP_2_0_0_versioncounter', 0)] + GIT_LFS_SKIP_SMUDGE: 1 + TargetPlatform: "freertos" + + steps: + - template: azure-pipelines-templates/build-preparations.yml + - template: azure-pipelines-templates/nb-gitversioning.yml + - template: azure-pipelines-templates/download-install-cmake.yml + - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml + - template: azure-pipelines-templates/download-install-ninja.yml + - template: azure-pipelines-templates/download-srecord.yml + - template: azure-pipelines-templates/build-freertos-nxp-targets.yml + - template: azure-pipelines-templates/pack-publish-artifacts.yml + - template: azure-pipelines-templates/publish-cloudsmith.yml + - template: azure-pipelines-templates/pack-publish-managed-helpers.yml + + ################# + # TI SimpleLink + - job: Build_TI_SimpleLink_targets + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_TI'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_TI__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + strategy: + matrix: + # disabled: waiting to update SDK to latest version with Sys Config + # TI_CC3220SF_LAUNCHXL: + # TargetBoard: TI_CC3220SF_LAUNCHXL + # TargetSeries: 'cc32xx' + # BuildOptions: >- + # -DTARGET_SERIES=CC32xx + # -DRTOS=TI_SimpleLink + # -DSUPPORT_ANY_BASE_CONVERSION=OFF + # -DNF_FEATURE_DEBUGGER=ON + # -DNF_FEATURE_RTC=ON + # -DNF_FEATURE_WATCHDOG=OFF + # -DNF_FEATURE_HAS_CONFIG_BLOCK=ON + # -DAPI_System.Device.Gpio=ON + # -DAPI_System.Device.Spi=ON + # -DAPI_System.Device.I2c=ON + # -DAPI_System.Device.Pwm=ON + # -DAPI_System.Device.Adc=ON + # -DAPI_System.Net=ON + # -DAPI_nanoFramework.System.Collections=ON + # -DAPI_nanoFramework.System.Text=ON + + TI_CC1352R1_LAUNCHXL_915: + TargetBoard: TI_CC1352R1_LAUNCHXL + PackageName: TI_CC1352R1_LAUNCHXL_915 + TargetSeries: "CC13X2" + BuildOptions: >- + -DRADIO_FREQUENCY=915 + CMakePreset: TI_CC1352R1_LAUNCHXL + + variables: + DOTNET_NOLOGO: true + # creates a counter and assigns it to the revision variable + REVISION: $[counter('TI_2_0_0_versioncounter', 0)] + HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] + TargetPlatform: "ti_simplelink" + + steps: + - template: azure-pipelines-templates/build-preparations.yml + - template: azure-pipelines-templates/nb-gitversioning.yml + - template: azure-pipelines-templates/download-install-cmake.yml + - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml + - template: azure-pipelines-templates/download-install-ninja.yml + - template: azure-pipelines-templates/build-ti-simplelink-targets.yml + - template: azure-pipelines-templates/pack-publish-artifacts.yml + - template: azure-pipelines-templates/publish-cloudsmith.yml + - template: azure-pipelines-templates/pack-publish-ti-sl-managed-helpers.yml + + ################# + # Azure RTOS + - job: Build_Azure_RTOS_targets + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_AZURERTOS'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_AZURERTOS__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + strategy: + matrix: + # ST_B_L475E_IOT01A: + # TargetBoard: ST_B_L475E_IOT01A + # TargetSeries: 'stm32l4xx' + # BuildOptions: + # NeedsDFU: true + # NeedsSRECORD: false + # CMakePreset: ST_B_L475E_IOT01A + + # ORGPAL_PALTHREE: + # TargetBoard: ORGPAL_PALTHREE + # TargetSeries: 'stm32f7xx' + # BuildOptions: + # NeedsDFU: true + # NeedsSRECORD: false + # CMakePreset: ORGPAL_PALTHREE + + SL_STK3701A: + TargetBoard: SL_STK3701A + TargetSeries: "gg11" + BuildOptions: + NeedsDFU: false + NeedsSRECORD: false + CMakePreset: SL_STK3701A + + variables: + # creates a counter and assigns it to the revision variable + REVISION: $[counter('AZURERTOS_2_0_0_versioncounter', 0)] + HelperPackageVersion: $[counter('HelperPackageVersioncounter', 0)] + TargetPlatform: "efm32" + + steps: + - template: azure-pipelines-templates/build-preparations.yml + - template: azure-pipelines-templates/nb-gitversioning.yml + - template: azure-pipelines-templates/download-install-cmake.yml + - template: azure-pipelines-templates/download-install-arm-gcc-toolchain.yml + - template: azure-pipelines-templates/download-install-ninja.yml + - template: azure-pipelines-templates/download-hexdfu.yml + - template: azure-pipelines-templates/download-srecord.yml + - template: azure-pipelines-templates/build-azurertos-targets.yml + - template: azure-pipelines-templates/pack-publish-artifacts.yml + - template: azure-pipelines-templates/publish-cloudsmith.yml + - template: azure-pipelines-templates/pack-publish-managed-helpers.yml + + ################# + # WIN32 executable + - job: Build_WIN32_nanoCLR + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne( dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true ), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_WIN32'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_WINDOWS_NANOCLR__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + + pool: + vmImage: "windows-latest" + + variables: + - group: sign-client-credentials + - name: DOTNET_NOLOGO + value: true + # creates a counter and assigns it to the revision variable + - name: REVISION + value: $[counter('WIN32_2_0_0_versioncounter', 0)] + - name: LITTLEFS_PATH + value: "D:/a/1/s/littlefs" + + steps: + - checkout: self + - checkout: littlefs + fetchDepth: 1 + + - template: azure-pipelines-templates/nb-gitversioning.yml + parameters: + repoDirectory: '$(Build.SourcesDirectory)/nf-interpreter' + + - task: PowerShell@2 + displayName: Store CLR DLL revision + name: SetRevision + inputs: + targetType: "inline" + script: | + Write-Host "$("##vso[task.setvariable variable=CLR_REVISION;isOutput=true]")$(REVISION)" + + - task: PowerShell@2 + displayName: Store package version + inputs: + targetType: "inline" + script: | + Write-Host "$("##vso[task.setvariable variable=WINCLR_PACKAGE_VERSION]")$(NBGV_VersionMajor).$(NBGV_VersionMinor).$(NBGV_BuildNumber).$(TARGET_BUILD_COUNTER)" + Write-Host "$("##vso[task.setvariable variable=WINCLR_AssemblyInformationalVersion]")$(NBGV_VersionMajor).$(NBGV_VersionMinor).$(NBGV_BuildNumber).$(TARGET_BUILD_COUNTER)$(NBGV_BuildMetadataFragment)" + + - template: azure-pipelines-templates/install-nuget.yml@templates + + - task: DotNetCoreCLI@2 + displayName: Restore NuGet packages + inputs: + command: restore + restoreArguments: "--locked-mode" + verbosityRestore: minimal + projects: nf-interpreter/targets/netcore/nanoCLR.sln + feedsToUse: select + includeNuGetOrg: true + + - task: VSBuild@1 + displayName: Build WIN32 EXE target + inputs: + solution: "nf-interpreter/targets/win32/nanoCLR.sln" + platform: "x86" + maximumCpuCount: true + msbuildArgs: "/p:PublicRelease=true" + configuration: "Release" + + - task: VSBuild@1 + displayName: Build WIN DLL target + inputs: + solution: "nf-interpreter/targets/netcore/nanoCLR.sln" + platform: "Any CPU" + maximumCpuCount: true + msbuildArgs: "/p:PublicRelease=true" + configuration: "Release" + + - task: DotNetCoreCLI@2 + displayName: Install Sign Client CLI + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + inputs: + command: custom + custom: tool + arguments: install --tool-path . sign --version 0.9.1-beta.23530.1 + + - pwsh: | + .\sign code azure-key-vault ` + "**/nanoFramework.nanoCLR.*" ` + --base-directory "$(Build.SourcesDirectory)/nf-interpreter/build/bin/Release" ` + --publisher-name ".NET nanoFramework" ` + --description "nanoFramework.nanoCLR" ` + --description-url "https://github.com/$env:Build_Repository_Name" ` + --azure-key-vault-tenant-id "$(SignTenantId)" ` + --azure-key-vault-client-id "$(SignClientId)" ` + --azure-key-vault-client-secret "$(SignClientSecret)" ` + --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` + --azure-key-vault-url "$(SignKeyVaultUrl)" ` + --timestamp-url http://timestamp.digicert.com + displayName: Sign nanoCLR assemblies + continueOnError: true + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + + - task: NuGetCommand@2 + condition: succeeded() + displayName: Pack nanoCLR WIN32 + inputs: + command: "custom" + arguments: "pack nf-interpreter/targets/win32/nanoFramework.nanoCLR.Win32.nuspec -Version $(NBGV_NuGetPackageVersion)" + + - task: CopyFiles@2 + condition: succeeded() + displayName: Collecting NuGet packages + inputs: + sourceFolder: $(Build.SourcesDirectory) + Contents: | + **\nanoFramework.nanoCLR.Win32*.nupkg + TargetFolder: "$(Build.ArtifactStagingDirectory)" + flattenFolders: true + ignoreMakeDirErrors: true + + - task: CopyFiles@2 + condition: succeeded() + displayName: Adding nanoCLR WIN32 to deployable artifacts + inputs: + sourceFolder: $(Build.SourcesDirectory) + Contents: | + **\nanoFramework.nanoCLR.exe + TargetFolder: '$(Build.ArtifactStagingDirectory)\WIN32_nanoCLR' + flattenFolders: true + ignoreMakeDirErrors: true + + - task: CopyFiles@2 + condition: succeeded() + displayName: Adding nanoCLR DLL to deployable artifacts + inputs: + sourceFolder: $(Build.SourcesDirectory) + Contents: | + **\nanoFramework.nanoCLR.dll + TargetFolder: '$(Build.ArtifactStagingDirectory)\WIN_DLL_nanoCLR' + flattenFolders: true + ignoreMakeDirErrors: true + + - pwsh: | + .\sign code azure-key-vault ` + "**/*.nupkg" ` + --base-directory "$(Build.ArtifactStagingDirectory)" ` + --publisher-name ".NET nanoFramework" ` + --description "nanoFramework.nanoCLR NuGets" ` + --description-url "https://github.com/$env:Build_Repository_Name" ` + --azure-key-vault-tenant-id "$(SignTenantId)" ` + --azure-key-vault-client-id "$(SignClientId)" ` + --azure-key-vault-client-secret "$(SignClientSecret)" ` + --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` + --azure-key-vault-url "$(SignKeyVaultUrl)" ` + --timestamp-url http://timestamp.digicert.com + displayName: Sign packages + continueOnError: true + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + + # publish artifacts + - task: PublishPipelineArtifact@1 + condition: succeeded() + displayName: Publish deployables artifacts + inputs: + targetPath: "$(Build.ArtifactStagingDirectory)" + artifactName: nanoclr_win32 + artifactType: pipeline + + # push NuGet packages to Azure Artifacts feed (always happens when building from main, except on PR builds) + - task: NuGetCommand@2 + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + or( + eq(variables['ForceUpload'], true), + eq(variables['Build.SourceBranchName'], 'main') + ) + ) + continueOnError: true + displayName: Push NuGet packages to Azure Artifacts + inputs: + command: push + nuGetFeedType: external + packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" + publishFeedCredentials: "AzureArtifacts-nf-interpreter" + allowPackageConflicts: true + + # push NuGet packages to NuGet (always happens when building from main, except on PR builds) + - task: NuGetCommand@2 + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + or( + eq(variables['ForceUpload'], true), + eq(variables['Build.SourceBranchName'], 'main') + ) + ) + continueOnError: true + displayName: Push NuGet packages to NuGet + inputs: + command: push + nuGetFeedType: external + allowPackageConflicts: true + packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" + publishFeedCredentials: "NuGet-nf-interpreter" + + - template: azure-pipelines-templates/publish-nanoclr.yml + + ################# + # nanoCLR CLI tool + - job: Build_nanoCLR_CLI + condition: >- + or( + and( + succeeded('Check_Code_Style'), + ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), + or( + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_NANOCLR_CLI'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_NANOCLR_CLI__'], 'true') + ) + ) + ) + + dependsOn: + - Check_Build_Options + - Check_Code_Style + - Build_WIN32_nanoCLR + + pool: + vmImage: "windows-latest" + + variables: + - group: sign-client-credentials + - name: DOTNET_NOLOGO + value: true + - name: LITTLEFS_PATH + value: "D:/a/1/s/littlefs" + - name: REVISION + value: $[dependencies.Build_WIN32_nanoCLR.outputs['SetRevision.CLR_REVISION']] + + steps: + - checkout: self + - checkout: littlefs + fetchDepth: 1 + + - template: azure-pipelines-templates/nb-gitversioning.yml + parameters: + repoDirectory: '$(Build.SourcesDirectory)/nf-interpreter' + + - template: azure-pipelines-templates/install-nuget.yml@templates + + - task: DotNetCoreCLI@2 + displayName: Restore NuGet packages + inputs: + command: restore + restoreArguments: "--locked-mode" + verbosityRestore: minimal + projects: "nf-interpreter/targets/netcore/nanoCLR.sln" + feedsToUse: select + includeNuGetOrg: true + + - task: VSBuild@1 + displayName: Build .NET tool + condition: succeeded() + inputs: + solution: "nf-interpreter/targets/netcore/nanoCLR.sln" + platform: "Any CPU" + maximumCpuCount: true + msbuildArgs: "/p:PublicRelease=true" + configuration: "Release" + + - task: DotNetCoreCLI@2 + displayName: Install Sign Client CLI + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + inputs: + command: custom + custom: tool + arguments: install --tool-path . sign --version 0.9.1-beta.23530.1 + + - pwsh: | + .\sign code azure-key-vault ` + "**/nanoFramework.nanoCLR.*" ` + --base-directory "$(Build.SourcesDirectory)/nf-interpreter/build/bin/Release" ` + --publisher-name ".NET nanoFramework" ` + --description "nanoFramework.nanoCLR.CLI" ` + --description-url "https://github.com/$env:Build_Repository_Name" ` + --azure-key-vault-tenant-id "$(SignTenantId)" ` + --azure-key-vault-client-id "$(SignClientId)" ` + --azure-key-vault-client-secret "$(SignClientSecret)" ` + --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` + --azure-key-vault-url "$(SignKeyVaultUrl)" ` + --timestamp-url http://timestamp.digicert.com + displayName: Sign nanoCLR assemblies + continueOnError: true + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + + - task: MSBuild@1 + condition: succeeded() + displayName: Pack nanoCLR CLI + inputs: + solution: "nf-interpreter/targets/netcore/nanoFramework.nanoCLR.CLI/nanoFramework.nanoCLR.CLI.csproj" + platform: "Any CPU" + msbuildArguments: "/p:PublicRelease=true /t:pack /p:PackageOutputPath=$(Build.ArtifactStagingDirectory) " + configuration: "Release" + maximumCpuCount: true + + - pwsh: | + .\sign code azure-key-vault ` + "**/*.nupkg" ` + --base-directory "$(Build.ArtifactStagingDirectory)" ` + --publisher-name ".NET nanoFramework" ` + --description "nanoFramework.nanoCLR.CLI NuGet" ` + --description-url "https://github.com/$env:Build_Repository_Name" ` + --azure-key-vault-tenant-id "$(SignTenantId)" ` + --azure-key-vault-client-id "$(SignClientId)" ` + --azure-key-vault-client-secret "$(SignClientSecret)" ` + --azure-key-vault-certificate "$(SignKeyVaultCertificate)" ` + --azure-key-vault-url "$(SignKeyVaultUrl)" ` + --timestamp-url http://timestamp.digicert.com + displayName: Sign packages + continueOnError: true + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], '') + ) + + - task: CopyFiles@2 + condition: succeeded() + displayName: Copy nanoclr + inputs: + SourceFolder: "nf-interpreter/build/bin/Release" + Contents: "nanoFramework.nanoCLR.dll" + TargetFolder: "$(Build.ArtifactStagingDirectory)/nanoclr" + + - task: PublishPipelineArtifact@1 + condition: succeeded() + displayName: Publish nanoclr + inputs: + targetPath: "$(Build.ArtifactStagingDirectory)/nanoclr" + artifactName: nanoclr_cli + artifactType: pipeline + + # push NuGet packages to Azure Artifacts feed (always happens when building from main, except on PR builds) + - task: NuGetCommand@2 + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + or( + eq(variables['ForceUpload'], true), + eq(variables['Build.SourceBranchName'], 'main') + ) + ) + continueOnError: true + displayName: Push NuGet packages to Azure Artifacts + inputs: + command: push + nuGetFeedType: external + packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" + publishFeedCredentials: "AzureArtifacts-nf-interpreter" + allowPackageConflicts: true + + # push NuGet packages to NuGet (always happens when building from main, except on PR builds) + - task: NuGetCommand@2 + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + or( + eq(variables['ForceUpload'], true), + eq(variables['Build.SourceBranchName'], 'main') + ) + ) + continueOnError: true + displayName: Push NuGet packages to NuGet + inputs: + command: push + nuGetFeedType: external + allowPackageConflicts: true + packagesToPush: "$(Build.ArtifactStagingDirectory)/*.nupkg" + publishFeedCredentials: "NuGet-nf-interpreter" + + ######################### + # Run mscorlib Unit Tests + + - job: Run_UnitTests_mscorlib + condition: >- + or( + and( + succeeded('Build_nanoCLR_CLI'), + ne(dependencies.Check_Build_Options.outputs['BuildOptions.SKIP_BUILD'], true), + ne(variables['System.PullRequest.PullRequestId'], ''), + or( + eq(dependencies.Check_Build_Options.outputs['BuildOptions.RUN_MSCORLIB_TESTS'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_ALL'], true), + eq(dependencies.Check_Build_Options.outputs['TargetsToBuild.BUILD_NANOCLR_CLI'], true) + ) + ), + and( + eq(variables['Build.Reason'], 'Manual'), + or( + eq(variables['BUILD_ALL__'], 'true'), + eq(variables['BUILD_NANOCLR_CLI__'], 'true') + ), + eq(variables['RUN_MSCORLIB_TESTS__'], 'true') + ) + ) + + dependsOn: + - Build_nanoCLR_CLI + - Check_Build_Options + + pool: + vmImage: "windows-latest" + + variables: + DOTNET_NOLOGO: true + solution: "nanoFramework.CoreLibrary.sln" + buildPlatform: "Any CPU" + buildConfiguration: "Release" + DownloadMDP: $[ dependencies.Check_Build_Options.outputs['BuildOptions.USE_SPECIFIC_MDP'] ] + + steps: + - checkout: self + fetchDepth: 1 + - checkout: mscorlib + fetchDepth: 100 + submodules: true + persistCredentials: true + + - template: azure-pipelines-templates/check-mscorlib-to-test.yml + + # Download nanoclr from build artifacts + - task: DownloadBuildArtifacts@1 + inputs: + buildType: "current" + artifactName: "nanoclr_cli" + downloadPath: "$(Agent.TempDirectory)/nanoclr_cli" + + # build mscorlib + + - task: InstallNanoMSBuildComponents@1 + condition: succeeded() + displayName: Install .NET nanoFramework MSBuild components + inputs: + GitHubToken: $(GitHubToken) + UsePreview: true + + - template: azure-pipelines-templates/check-mdp-for-build.yml + + - template: azure-pipelines-templates/install-nuget.yml@templates + + - task: Cache@2 + displayName: Cache NuGet packages + condition: succeeded() + continueOnError: true + inputs: + key: 'nuget | **/packages.lock.json' + path: $(UserProfile)/.nuget/packages + + - task: NuGetCommand@2 + condition: succeeded() + displayName: NuGet restore + retryCountOnTaskFailure: 5 + inputs: + restoreSolution: "**/nanoFramework.CoreLibrary.sln" + feedsToUse: select + + - task: VSBuild@1 + condition: succeeded() + inputs: + solution: "**/nanoFramework.CoreLibrary.sln" + platform: "Any CPU" + msbuildArgs: "/p:PublicRelease=true" + configuration: "Release" + msbuildArchitecture: "x64" + maximumCpuCount: true + + # run tests + - template: azure-pipelines-templates/run-unit-tests.yml@templates + parameters: + runUnitTests: true + unitTestRunsettings: '$(System.DefaultWorkingDirectory)\nf-interpreter\targets\netcore\pipeline_tests.runsettings' + packagesDirectory: "$(Build.SourcesDirectory)/CoreLibrary/packages" + + - task: CopyFiles@2 + condition: succeededOrFailed() + displayName: Copy vstest dump files + inputs: + SourceFolder: 'D:\a\_temp\' + Contents: "**/*.dmp" + TargetFolder: "$(Build.ArtifactStagingDirectory)/vstest_dumps" + flattenFolders: true + + - powershell: | + $dumpPath = "$(Build.ArtifactStagingDirectory)/vstest_dumps" + $hasFiles = $false + + if (Test-Path $dumpPath -PathType Container) { + $fileCount = (Get-ChildItem $dumpPath -File | Measure-Object).Count + $hasFiles = $fileCount -gt 0 + } + echo "##vso[task.setvariable variable=hasFiles;isOutput=true]$hasFiles" + displayName: "Check for dump files" + name: checkFiles + + - task: PublishPipelineArtifact@1 + condition: eq(variables['hasFiles'], 'true') + displayName: Publish vstest dump files + inputs: + targetPath: "$(Build.ArtifactStagingDirectory)/vstest_dumps" + artifactName: VsTestCrashDumps + artifactType: pipeline + + ###################### + # generate change log + - job: Generate_change_log + dependsOn: + - Build_STM32_targets + - Build_ESP32_targets + - Build_NXP_targets + - Build_TI_SimpleLink_targets + - Build_Azure_RTOS_targets + # skip build if this is a PR, submitted by nfbot and the commit message contains [version update] + condition: >- + and( + succeeded('Build_STM32_targets'), + succeeded('Build_ESP32_targets'), + succeeded('Build_NXP_targets'), + succeeded('Build_TI_SimpleLink_targets'), + succeeded('Build_Azure_RTOS_targets'), + not( eq(variables['Build.Reason'], 'PullRequest') + ), + or( + eq(variables['Build.SourceBranchName'], 'main'), + startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), + ne( variables['StartReleaseCandidate'], true ) + ) + + pool: + vmImage: "windows-latest" + + steps: + - task: DotNetCoreCLI@2 + condition: succeeded() + displayName: Install NBGV tool + inputs: + command: custom + custom: tool + arguments: install --tool-path . nbgv + + - script: nbgv cloud -a -c + condition: succeeded() + displayName: Set build number + + - task: UseRubyVersion@0 + condition: succeeded() + inputs: + versionSpec: "= 3.0" + addToPath: true + + # Cache change log cache files + - task: Cache@2 + displayName: Cache change log cache files + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + ) + inputs: + key: "changeLogCacheFiles" + restoreKeys: 1_0 + path: | + $(Agent.TempDirectory)/github-changelog-logger.log + $(Agent.TempDirectory)/github-changelog-http-cache + + # generate change log including future version + - powershell: | + gem install github_changelog_generator --quiet --no-document + # need to call it passing both cache options with full path otherwise it won't work + github_changelog_generator --token $(GitHubToken) --cache-log $env:AGENT_TEMPDIRECTORY\github-changelog-logger.log --cache-file $env:AGENT_TEMPDIRECTORY\github-changelog-http-cache --pr-wo-labels --future-release "v$env:NBGV_AssemblyVersion" + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + ) + displayName: Generate change log + + # push new changelog to GitHub repo + - powershell: | + git config --global gc.auto 0 + git config --global user.name nfbot + git config --global user.email nanoframework@outlook.com + git config --global core.autocrlf true + + git add CHANGELOG.md + git commit -m "Update CHANGELOG" -m"***NO_CI***" + + # compute authorization header in format "AUTHORIZATION: basic 'encoded token'" + # 'encoded token' is the Base64 of the string "nfbot:personal-token" + $auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)")))" + + git -c http.extraheader="AUTHORIZATION: $auth" push origin "HEAD:$(Build.SourceBranchName)" + condition: >- + and( + succeeded(), + eq(variables['System.PullRequest.PullRequestId'], ''), + not( + startsWith(variables['Build.SourceBranch'], 'refs/tags/v') + ), + eq( variables['StartReleaseCandidate'], false ) + ) + continueOnError: true + displayName: Push changelog to GitHub + + ################################# + # report build failure to Discord + - job: Report_Build_Failure + dependsOn: + - Build_STM32_targets + - Build_ESP32_targets + - Build_NXP_targets + - Build_TI_SimpleLink_targets + - Build_Azure_RTOS_targets + - Build_WIN32_nanoCLR + - Build_nanoCLR_CLI + - Generate_change_log + - Check_Code_Style + condition: >- + and( + ne( dependencies.Check_Code_Style.outputs['Check_Code_Style.CODE_STYLE_CHECK_FAILED'], true), + or( + failed('Build_STM32_targets'), + failed('Build_ESP32_targets'), + failed('Build_NXP_targets'), + failed('Build_TI_SimpleLink_targets'), + failed('Build_Azure_RTOS_targets'), + failed('Build_WIN32_nanoCLR'), + failed('Build_nanoCLR_CLI'), + failed('Generate_change_log') + ) + ) + + pool: + vmImage: "windows-latest" + + steps: + - checkout: self + fetchDepth: 1 + + # step from template @ nf-tools repo + - template: azure-pipelines-templates/discord-webhook.yml@templates + parameters: + status: "failure" + webhookUrl: "$(DiscordWebhook)" + message: "" From 5bcf25a2187438888f6e67a3f6c9adcbe42630f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 17 Apr 2025 19:02:44 +0100 Subject: [PATCH 167/168] Bump container versions --- .devcontainer/All/Dockerfile.All | 2 +- .devcontainer/AzureRTOS/Dockerfile.AzureRTOS | 2 +- .devcontainer/ChibiOS/Dockerfile.ChibiOS | 2 +- .devcontainer/ESP32/Dockerfile.ESP32 | 2 +- .devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP | 2 +- .devcontainer/TI/Dockerfile.TI | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.devcontainer/All/Dockerfile.All b/.devcontainer/All/Dockerfile.All index eb5a866b62..aa4c634c91 100644 --- a/.devcontainer/All/Dockerfile.All +++ b/.devcontainer/All/Dockerfile.All @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-all:v2.57 +FROM ghcr.io/nanoframework/dev-container-all:v3.0 diff --git a/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS b/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS index edd630ca98..a493cf45c2 100644 --- a/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS +++ b/.devcontainer/AzureRTOS/Dockerfile.AzureRTOS @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-azure-rtos:v1.34 +FROM ghcr.io/nanoframework/dev-container-azure-rtos:v3.0 diff --git a/.devcontainer/ChibiOS/Dockerfile.ChibiOS b/.devcontainer/ChibiOS/Dockerfile.ChibiOS index 078557cb13..0c528fff5c 100644 --- a/.devcontainer/ChibiOS/Dockerfile.ChibiOS +++ b/.devcontainer/ChibiOS/Dockerfile.ChibiOS @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-chibios:v1.35 +FROM ghcr.io/nanoframework/dev-container-chibios:v3.0 diff --git a/.devcontainer/ESP32/Dockerfile.ESP32 b/.devcontainer/ESP32/Dockerfile.ESP32 index c9bc9d668b..b1bf2af4b9 100644 --- a/.devcontainer/ESP32/Dockerfile.ESP32 +++ b/.devcontainer/ESP32/Dockerfile.ESP32 @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-esp32:v2.37 +FROM ghcr.io/nanoframework/dev-container-esp32:v3.0 diff --git a/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP b/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP index e6904263e6..0123dbcc52 100644 --- a/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP +++ b/.devcontainer/FreeRTOS-NXP/Dockerfile.FreeRTOS-NXP @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-freertos-nxp:v1.07 +FROM ghcr.io/nanoframework/dev-container-freertos-nxp:v3.0 diff --git a/.devcontainer/TI/Dockerfile.TI b/.devcontainer/TI/Dockerfile.TI index 0d2fe5e45e..599c1872d5 100644 --- a/.devcontainer/TI/Dockerfile.TI +++ b/.devcontainer/TI/Dockerfile.TI @@ -1 +1 @@ -FROM ghcr.io/nanoframework/dev-container-ti:v2.0 +FROM ghcr.io/nanoframework/dev-container-ti:v3.0 From 9d4a75e4256e2f7cb3fb3fe352306b06f2bac487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Thu, 17 Apr 2025 23:53:40 +0100 Subject: [PATCH 168/168] Revert change in jpeg library --- .../Graphics/Core/Support/Jpeg/jmemnanoclr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp index 4b73fa1569..85fca186f8 100644 --- a/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp +++ b/src/nanoFramework.Graphics/Graphics/Core/Support/Jpeg/jmemnanoclr.cpp @@ -19,7 +19,7 @@ extern "C" // elimnate error due to redefinition of these in the targetHAL.h #undef TRUE #undef FALSE -#undef nullptr +#undef NULL }