Args are the children nodes to the current node.
Flags store metadata/primitive data in an Iridium node. These nodes cannot store other Iridium S-Expressions.
Tag specifics the S-Expression Type.
This method is used to squish the Iridium Code into an array which can be easily stored on disk.
Nested Array of Iridium S-Expressions.
Optional
space: number
Remarks
Declares a function available in the entire scope, there are no temporal dead zones for functions declared in this fashion. The hoisting pass moves this declaration to the top of the scope to achieve this. In most cases this will be reduced down to an EnvWrite. A special node is only needed in case of top level sloppy declarations.
Resolutions
EnvWriteSEXP: A binding found in the immediate enclosing closure scope.
JSFuncDeclSEXP: It is possible that node does not change its form; this happens for top-level declarations in sloppy mode code.
Structure
ARG(lValTarget)
: The storage target locationARG(rVal)
: The value to store (possible nothing, in case of just a declaration).FLAG(JSLET | JSCONST | JSVAR)
: This is always gonna be JSVAR, just leaving it the same because of consistency sake.FLAG(SAFE)
: Indicates whether the writes being performed are safe.FLAG(THISINIT)
: Indicates whether the write is being performed tothis
, in this case it will never be true but is kept around for implementation consistency during lowering.FLAG(SLOPPY)
: Indicates whether the writes to target locations is sloppy.