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
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 thelength
property 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 thearguments
object 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.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 }