We need a mechanism to handle more IR procedures than the main one.
Context:
Currently all code is constructed from the Representation class, that holds all of the information about all of the objects, memory regions and symbols within a Pyro program. This is a bit clumbsy, since the resulting operations and all of the symbols live in the same place.
We need to decouple the executable code part from the other stuff, so later we can add full function support to it
Solution:
There are two possiple approaches to storing information about the procedure:
- Storing input arguments and the output in separate fields of the
Procedure class
- Storing input and output as a separate
Signature class that is a member of a Procedure class
First approach is easier for code generation, since the path to the arguments inside the generator is shorter
Second approach will be easier later when functions will be the first-class-citisens
The final approach is on the implementer
We need a mechanism to handle more IR procedures than the main one.
Context:
Currently all code is constructed from the
Representationclass, that holds all of the information about all of the objects, memory regions and symbols within a Pyro program. This is a bit clumbsy, since the resulting operations and all of the symbols live in the same place.We need to decouple the executable code part from the other stuff, so later we can add full function support to it
Solution:
There are two possiple approaches to storing information about the procedure:
ProcedureclassSignatureclass that is a member of aProcedureclassFirst approach is easier for code generation, since the path to the arguments inside the generator is shorter
Second approach will be easier later when functions will be the first-class-citisens
The final approach is on the implementer