Age | Commit message (Collapse) | Author |
|
|
|
Cleanup C++ glue code related to JIT helpers
|
|
GC to OS interface refactoring
|
|
Port changes from CoreCLR
Update Runtime as needed
Remove functions that are not needed anymore for Unix
|
|
Merge nmirror to master
|
|
[tfs-changeset: 1563469]
|
|
CoreRT side of https://github.com/dotnet/corefx/issues/4818
|
|
Merge nmirror to master
|
|
The purpose of the reimplementation is to remove the dependency on the OS
so make it work on non-Windows platforms
|
|
[tfs-changeset: 1562851]
|
|
[tfs-changeset: 1562253]
|
|
Initial support for Interlocked on arm/arm64
|
|
Added initial implementation for RhpLockCmpXchg32 and RhpLockCmpXchg64
for arm64. The arm version is not implemented yet.
|
|
[tfs-changeset: 1561881]
|
|
The new CMake version 3.4 has split `<FLAGS>` into `<FLAGS>` `<INCLUDES>`, so the
assembler invocation was not passing include paths anymore.
This fix adds the `<INCLUDES>` to the CMAKE_ASM_COMPILE_OBJECT variable
in the root CMakeLists.txt.
|
|
- Add intrisic attributes to Object.GetType/Type.GetTypeFromHandle (Object.GetType is commented out under TODO)
- Implement temporary marshalling for bool since it is used by every other Win32 API
- Implement HandleException method on JIT-EE interface
|
|
Export additional functions from bootstrapper.
|
|
|
|
- Produce smaller and faster code, especially for access to static and thread-local variables
- Fix a return value corruption in Unix RhpCheckedLockCmpXchg and RhpCheckedXchg helpers.
|
|
- Add lookup of all RyuJIT intrinsics
- Update manage implementations of the intrinsics to fit with what RyuJIT is capable of
- Make intrinsic expansions by the codegen to be optional by providing fallback paths
- Fix USE_PORTABLE_HELPERS to be defined for portable runtime only
These changes are under CORERT ifdefs as necessary to be reconciled with .NET Native for UWP later.
|
|
Fix consumption of custom CLI path
Add support for consuming --cppcompilerflags
Consume correct Ubuntu CLI download post CentOS introduction
|
|
|
|
- Respect explicit layout and emit proper EEType flags in CppCodeGen - required for "Hello world" with TODOs removed
- Reduce dependencies of autogenerated files for CppCodeGen
|
|
|
|
- Move force-inline GC-safe memory helpers to .inl files to fix link errors for some build flavors.
- Fix a bug in RhUnbox - it was not using GC-safe zero memory.
|
|
[tfs-changeset: 1558883]
|
|
- For now - until we have the proper multifile compilation in place, link the Runtime.Base .cs files into System.Private.CoreLib. The proper factoring of Runtime.Base is still guaranteed by building Runtime.Base as separate .dll.
- Remove many stubbed out helpers since the proper implementation is comming from Runtime.Base now.
- Fix CppCodeGen to deal with same RuntimeImport being used with different signatures (e.g. RpNewArray is imported under two different signatures in System.Private.CoreLib)
|
|
Merge changes from TFS
|
|
|
|
[tfs-changeset: 1558329]
|
|
Since Generics context is not yet supported, we were not setting the contextHandle in getCallInfo JITEE interface implementation. Thus, when JIT would get the calling details, it would get a bogus value for contextHandle and later pass on that values to other calls to the JITEE interface. In this case, initClass was being passed the bogus value that it attempted to operate upon assuming its a valid generics context and resulted in OverflowException.
This fix is to compute the contextHandle as expected.
|
|
* When JIT calls into the JIT-EE interface, the call is wrapped.
All managed exceptions are caught by the wrapper, and re-throw as
native exceptions.
* The call from ILCompiler to JIT is also wrapped. The wrapper catches
all native exceptions, and re-throws them as managed exceptions.
* The message and call stack from the original managed exception is
captured and stored in the unmanaged exception object, and restored
in the managed exception thrown by the JIT wrapper.
* A new native module (jitinterface.dll or jitinterface.so) is added
to contain the native part of the wrappers. Long term, we should
consider whether to merge this into JIT.
|
|
https://github.com/dotnet/coreclr/tree/master/src/gc 81a569b456cb74c491bbfd18d882ddc00ab6ecd9
|
|
Merge changes from TFS
|
|
A recent investigation revealed a couple of bugs in our handling of fail fast.
1) If we hit our fallback path (EH.FailFast), we end up triggering an int 3, which is treated as a hardware exception in managed code, but we don't expect this exception code and we attempt to recursively FailFast. I've renamed this FallbackFailFast to make it more clear that we don't expect to hit this path in most cases. I've also made the implementation call into the C++ side and do an RhFailFast in there, which ultimately calls RaiseFailFastException, which shouldn't open up to infinite recursion.
2) The codepath that attempts to FailFast when an SEH exception is leaked out of a pinvoke was passing the OS dispatcher context's ControlPC as the bread crumb with which to find the class library that should perform the FailFast. Unfortunately, I'm so used to arm/amd64 SEH that I forgot that x86 SEH doesn't give you a good value for this. So on x86, we were getting null and failing to find the right class library FailFast to call, so we'd go down the fallback FailFast path when we shouldn't be. The fix here is to pull the PInvoke return address out of the PInvoke frame on the Thread. This is reliable and doesn't involve the OS, so it's goodness for all platforms.
[tfs-changeset: 1555875]
|
|
|
|
Remove redundant code in gcrhscan.cpp
|
|
- Add gc\gcscan.cpp to the build and remove code that was redundant with it from runtime\gcrhscan.cpp
- Move the entire stack root scanning to the EE side of GCToEEInterface
|
|
Per issue #455, split the definitions in AsmOffsets from the 32/64
bit specific parts and the platform specific parts.
|
|
[tfs-changeset: 1555333]
|
|
Switched all uses of STATIC_ASSERT to static_assert and removed
the static_check.h header, since it wasn't very useful.
Removed orphaned method from Module class.
|
|
Fill out the fixed portion of the EEType data structure as expected by the runtime along with most of the variable pieces that follow.
Correct the code-gen's calculation of where VTable entries start in the EEType.
Add type-system support for asking if a type has a finalizer.
Move EEType Flags and Kinds enums to the Common folder and consume them from the compiler and runtime.
Transpose the new Type System's Category to a CorElementType for primitives / enum underlying types.
Remove HasFinalizer assert in RhNewObject
The following pieces are incomplete:
Optional fields side data structure
Interface dispatch map pointers
Type variance
Sealed virtual slots blob
Generic Type Def EETypes
|
|
Enabled enough code to have a clean compilation on ARM64. Currently
nothing is really implemented and we either use the PORTABILITY_ASSERT
macro or a @TODO comment places that still need work.
|
|
Update cmake configuration files to support ARM64.
Added skeleton of AsmMacros.h and WriteBarriers.S for ARM64.
|
|
|
|
We are now using _TARGET_xxx_.
Removed duplicated definitions of macros.
Define the _WINXX preprocessor macros on Windows only.
Move definitions of _WIN32 and _WIN64 to a more specific place
that handles Windows specifics.
|
|
Remove unnecessary header
|
|
Enable command line args for RyuJit bootstrapper
|
|
|
|
Create managed objects for String[] args and each string command line
argument and pass them in through the call to __managed__Main.
Add System.String[] as a rooted type (until we generate start-up code in
managed and don't need the lib export).
|