Comments (2)
Basically it feels like the success criteria for this is to get rid of CompilationOptions
class in it's entirety and allow the driver to compose the LEGO bricks (classes) that constitute the compiler according to the command line arguments and run the Compile
method.
from corert.
Rough execution plan:
-
Make it possible for
CompilationModuleGroup
to be instantiated outside ofCompilation
Delete
ICompilationRootProvider
interface – change the pattern from "compilation group roots everything that should be a root" to "compilation group provides a list of roots for everyone who might be interested"In the
Compilation
'sCompile
method, iterate over all the roots in the compilation group and root themMove the
CompilationGroup
creation out to the Driver EXE, instantiate and pass the correct one toCompilation
based on command line args (multi or single module)Delete the
MultiFile
property onCompilationOptions
-
Remove
IsCppCodegen
parameter from theNodeFactory
constructorInstead of the Boolean flag, make
NodeFactory
accept a new interface with two methods:IMethodNode CreateMethodNode(MethodDesc method)
andvoid CompileMethods(List<DependencyNodeCore<NodeFactory>> obj)
Have
Compilation
implement the new interface.At this point we need to add two classes deriving from
Compilation
:RyuJitCompilation
andCppCompilation
. The split should be obvious.Instantiate the correct
Compilation
class in the driver EXE.Delete the
IsCppCodegen
CompilationOption
.This will also require a bit of work on
NameMangler
to make it stop depending onCompilation
(it is a weird dependency and unnecessary one). -
Simplify the NodeFactory construction
The
TypeInitialization
class instance passed to NodeFactory is awkward. I see two options: MergeTypeInitialization
withCompilerTypeSystemContext
(preferred), or hang aTypeInitialization
instance as a property onCompilerTypeSystemContext
Either way, TypeInitialization is no longer created in Compilation
Expose a public CompilerTypeSystemContext property on the NodeFactory so that the nodes have access to it all the time. Remove the
TypeInitialization
constructor argument onNodeFactory
and the property.Move NodeFactory and CompilerTypeSystemContext creation out of Compilation into the driver EXE. Pass the instantiated versions to
Compilation
Delete a few more
CompilationOptions
from corert.
Related Issues (20)
- Wasm: munmap possible problem HOT 18
- Thread priorities on Unix HOT 3
- FlushProcessWriteBuffers on ARM64 HOT 3
- Unhandled Exception: ILCompiler.CodeGenerationFailedException: Code generation failed for method HOT 2
- Missing implementation of System.OperatingSystem.IsWindows HOT 2
- Question: ImportConvert unsigned parameter is always false HOT 1
- Wasm: conv_r_un/4 should set to postive or negative infinity when too large
- CoreRT slower then regular .NET HOT 3
- "Segmentation fault" on CentOS 7.8 HOT 2
- "The input line is too long" during build HOT 4
- Generating native code with Grpc.Core HOT 3
- What's the difference between corert and runtimelab‘s NativeAOT ? HOT 2
- Error on tests/runtest.sh -coreclr All HOT 3
- Ubuntu 20.04 dotnet publish failed HOT 2
- Question about Marshalling of data structures across C++/C# HOT 2
- This repo is going to be archived on October 31, 2020 HOT 16
- GitHub actions - clang fails on Ubuntu HOT 2
- Great Project HOT 1
- Fails to dotnet publish. HOT 1
- how run it on openwrt arm v7?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from corert.