diff options
author | John Chen <jochen@microsoft.com> | 2015-12-16 01:14:19 +0300 |
---|---|---|
committer | John Chen <jochen@microsoft.com> | 2015-12-16 01:14:19 +0300 |
commit | 8b4cc0563c0e26500326a03c0f8f0d8f028dd68f (patch) | |
tree | b71fe8c471f2fbb91c249512d96c36bc93278649 /src/ILCompiler.Compiler | |
parent | ed8a19c4c4741659df0212efad2ee0b371692901 (diff) | |
parent | 3d67d94d0c1e4067340dd473015e3b72eaf57b03 (diff) |
Merge pull request #355 from JohnChen0/jitinterface
Add JIT-EE interface wrappers to handle exceptions
Diffstat (limited to 'src/ILCompiler.Compiler')
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/Compilation.cs | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/Compilation.cs b/src/ILCompiler.Compiler/src/Compiler/Compilation.cs index bc161052e..0147987dc 100644 --- a/src/ILCompiler.Compiler/src/Compiler/Compilation.cs +++ b/src/ILCompiler.Compiler/src/Compiler/Compilation.cs @@ -235,25 +235,6 @@ namespace ILCompiler } } - // List of methods that are known to throw an exception during compilation. - // On Windows it's fine to throw it because we have a catchall block. - // On Linux, throwing a managed exception to native code will bring down the process. - // https://github.com/dotnet/corert/issues/162 - private HashSet<TypeAndMethod> _skipJitList = new HashSet<TypeAndMethod> - { - new TypeAndMethod("System.SR", "GetResourceString"), - new TypeAndMethod("System.Text.StringBuilder", "AppendFormatHelper"), - new TypeAndMethod("System.Collections.Concurrent.ConcurrentUnifier`2", "GetOrAdd"), - new TypeAndMethod("System.Globalization.NumberFormatInfo", "GetInstance"), - new TypeAndMethod("System.Collections.Concurrent.ConcurrentUnifierW`2", "GetOrAdd"), - new TypeAndMethod("System.Collections.Generic.LowLevelDictionary`2", "Find"), - new TypeAndMethod("System.Collections.Generic.LowLevelDictionary`2", "GetBucket"), - new TypeAndMethod("System.Collections.Generic.ArraySortHelper`1", "InternalBinarySearch"), - new TypeAndMethod("System.RuntimeExceptionHelpers", "SerializeExceptionsForDump"), - new TypeAndMethod("System.InvokeUtils", "CheckArgument"), - new TypeAndMethod("System.Runtime.InteropServices.ExceptionHelpers", "GetMappingExceptionForHR"), - }; - private void ComputeDependencyNodeDependencies(List<DependencyNodeCore<NodeFactory>> obj) { foreach (MethodCodeNode methodCodeNodeNeedingCode in obj) @@ -268,17 +249,11 @@ namespace ILCompiler try { - MetadataType owningType = method.OwningType as MetadataType; - if (owningType != null && Path.DirectorySeparatorChar != '\\' && _skipJitList.Contains(new TypeAndMethod(owningType.GetFullName(), method.Name))) - { - throw new NotImplementedException("SkipJIT"); - } - _corInfo.CompileMethod(methodCodeNodeNeedingCode); } catch (Exception e) { - Log.WriteLine("*** " + e.Message + " (" + method + ")"); + Log.WriteLine("*** " + method + ": " + e.Message); // Call the __not_yet_implemented method DependencyAnalysis.X64.X64Emitter emit = new DependencyAnalysis.X64.X64Emitter(_nodeFactory); |