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.
Optionalspace: number
Remarks
BBContainer represents a logical piece of compilable code, it consists of two parts. The first arg contains a BindingsSEXP which is used to create and populate a stack frame. The second arg contains a ListSEXP of type BBSEXP which contains the instructions to execute.
Structure
ARG(bindings): Stores a BindingsSEXP.ARG(BB): Stores a ListSEXP of type BBSEXP.FLAG(ECMAArgs): Used to set thelengthproperty for functions, which indicates the number of expected arguments as per the ECMAScript spec.FLAG(StartBBIDX): IDX of the entry BB.FLAG(ScopeIDX): Scope/environment IDX of top level scope for this container.FLAG(ARGUMENTS): Is theargumentsobject allowed in this scope?FLAG(ASYNC): Is this an asynchronous function/module?FLAG(STRICT): Is the code in strict mode?FLAG(GENERATOR): Is this a generator function?FLAG(PROTO): Does the function have a prototype?FLAG(NEW): Is new.target lookup allowed in this function?FLAG(SCALL): Is super call allowed in this function?FLAG(SOBJ): Is super object allowed in this function?FLAG(HOME): Does this function need the home object?FLAG(DERIVED): Is this a derived constructor function?FLAG(TopLevel): Is top Level?FLAG(ContainerFlagID): A number.FLAG(NAME): string function name.Closure Type Map
Regular Closure = { }
Constructor = { PROTO, NEW }
Derived Constructor = { PROTO, NEW, SCALL, SOBJ, HOME, DERIVED }
Derived Method = { SOBJ, HOME }
Private Method = { HOME }
Prop Init + no_private = { }
Prop Init Derived + no_private = { SOBJ, HOME }
Prop Init + private = { HOME }
Prop Init Derived + private = { SOBJ, HOME }
Private Derived Method = { SOBJ, HOME }
Static Prop Init = { }
Static Prop Init Derived = { SOBJ, HOME }